给出以下 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
中工作?
最佳答案
如果您从 .scope
或 .proc
内部引用全局符号,有时您必须明确声明该符号位于全局范围内,并且不是内部范围。您可以通过在符号 ::spam
之前添加“paamayim nekudotayim”(冒号对)运算符来实现此目的。我注意到这一点主要是在 .if
之类的事情上。
以下内容在 ca65 中编译:
foo = $82
.scope
LDA #$ff
STA ::foo*$40
.endscope
关于assembly - CA65:来自 16 位计算地址的 'Range error',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16615553/