我在6502程序集中打印到屏幕
在我写的监视器中
STA $01, y to store the value at the pointer
当我在此行按Enter键时,它说指令无效?
任何想法......?
答案 0 :(得分:5)
您最想要的寻址模式是 indirect indexed
STA ($01), Y
例如。
A = '@', Y = 81, Mem dump:
0001 00
0002 04
结果将是:
01234 <-- columns
+--------
0 |
1 |
2 | @
|
rows
答案 1 :(得分:1)
zp,y adressing只能与X寄存器一起使用:
STX $01,y
答案 2 :(得分:0)
LDX
和STX
。看起来你的显示器汇编器不够聪明。
因为您的评论是关于指针的,所以您应该将指针存储在第0页:
LDA #<screen
STA ptr
LDA #>screen
STA ptr+1
然后使用间接的索引后寻址,如:
STA (ptr),Y
答案 3 :(得分:0)
某些监视器使用您键入的位数来在零页索引和绝对索引寻址模式之间进行选择。请注意,两种模式的语义不相同。除了sta $0001,x
和sta $0001,y
是三个字节而sta $01,x
是2的事实之外,当索引寄存器为$ FF时,前两个指令将写入地址$ 0100,后者将始终存储到零页面地址(在这种情况下为$ 00)。这使得可以使用例如lda $FF,x
从地址(x-1)获取一个字节,但一般情况下,零页索引模式仅在x(而不是y)作为索引时可用。