给定以下CA65代码:
foo = $82
.scope
LDA #$ff
STA foo*$40
.endscope我收到这个错误消息:
foo.s(5): Error: Range error (8320 not in [0..255])有趣的是,以下版本如预期的那样工作:
foo = $82
LDA #$ff
STA foo*$40那么如何在.scope中实现这一点呢?
发布于 2013-09-05 21:19:52
如果要从.scope或.proc内部引用全局符号,有时必须显式声明该符号位于全局作用域而不是内部作用域。您可以通过在符号::spam之前添加"paamayim nekudotayim“(一对冒号)操作符来完成此操作。我主要是在.if这样的东西上注意到这一点。
以下代码在ca65中编译:
foo = $82
.scope
LDA #$ff
STA ::foo*$40
.endscope发布于 2013-05-18 02:36:09
我不确定为什么scope会导致问题,但看起来您需要告诉汇编器STA是绝对的,而不是它正在推断的Zero Page引用:
foo = $82
.scope
LDA #$ff
STA a:foo*$40
.endscopehttps://stackoverflow.com/questions/16615553
复制相似问题