6502装配说明无效

时间:2014-03-13 05:06:56

标签: assembly 6502

我在6502程序集中打印到屏幕

在我写的监视器中

            STA $01, y    to store the value at the pointer

当我在此行按Enter键时,它说指令无效?

任何想法......?

4 个答案:

答案 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)

在这种情况下,6502汇编程序通常会生成绝对y索引指令,因为zeropage y-indexed仅适用于LDXSTX。看起来你的显示器汇编器不够聪明。

因为您的评论是关于指针的,所以您应该将指针存储在第0页:

LDA #<screen
STA ptr
LDA #>screen
STA ptr+1

然后使用间接的索引后寻址,如:

STA (ptr),Y

答案 3 :(得分:0)

某些监视器使用您键入的位数来在零页索引和绝对索引寻址模式之间进行选择。请注意,两种模式的语义相同。除了sta $0001,xsta $0001,y是三个字节而sta $01,x是2的事实之外,当索引寄存器为$ FF时,前两个指令将写入地址$ 0100,后者将始终存储到零页面地址(在这种情况下为$ 00)。这使得可以使用例如lda $FF,x从地址(x-1)获取一个字节,但一般情况下,零页索引模式仅在x(而不是y)作为索引时可用。