鉴于以下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
内完成这项工作?
答案 0 :(得分:4)
如果您在.scope
或.proc
内引用全局符号,有时您必须明确声明该符号位于全局范围内而不是内部范围。您可以通过在符号::spam
之前添加“paamayim nekudotayim”(冒号对)运算符来执行此操作。我注意到这一点主要是.if
。
以下编译在ca65中:
foo = $82
.scope
LDA #$ff
STA ::foo*$40
.endscope
答案 1 :(得分:3)
我不确定scope
导致问题的原因,但看起来您需要告诉汇编程序STA是绝对的,而不是它推断的Zero Page引用:
foo = $82
.scope
LDA #$ff
STA a:foo*$40
.endscope