我正在查看此站点上的一些代码示例:
看着它,我看到他们有一些指令,而不是直接使用内存位置,而是使用标签,例如,在alive.asm中:
lda ypos,x
ypos是
ypos:
dcb $00,$02,$20,$02,$40,$02,$60,$02
dcb $80,$02,$a0,$02,$c0,$02,$e0,$02
dcb $00,$03,$20,$03,$40,$03,$60,$03
dcb $80,$03,$a0,$03,$c0,$03,$e0,$03
dcb $00,$04,$20,$04,$40,$04,$60,$04
dcb $80,$04,$a0,$04,$c0,$04,$e0,$04
dcb $00,$05,$20,$05,$40,$05,$60,$05
dcb $80,$05,$a0,$05,$c0,$05,$e0,$05
我知道标签随汇编程序的不同而不同,但我假设它会遍历该列表,但是它的特异性如何工作
答案 0 :(得分:5)
以下是有关指令lda ypos,x
的详细信息:
如果ypos
位于零页之外(等于或大于0x0100):
ypos
表示的2字节地址中来计算地址,然后将位于计算地址处的字节加载到A寄存器(累加器)中ypos
的高字节与计算地址ypos + X
的高字节不同,则需要 4个CPU周期 + 1个周期。ypos
位于零页内(介于0x00和0xFF之间),则可能取决于您的汇编器(检查操作码):要么使用 索引的绝对值 寻址模式,其工作方式如前所述,或者:
ypos
表示的1字节地址中来计算地址,将其包装在0x00-0xFF范围内,然后加载A寄存器(累加器),其字节位于计算的地址。ypos
处定义的值超出零页,则可能不是预期的行为。汇编程序中可能存在特定的语法,以强制使用绝对X寻址模式。