Dan*_*ega 3 assembly label 6502 addressing-mode
我正在查看此站点的一些代码示例:
看着它我看到他们有一些指令,而不是直接使用内存位置,他们使用标签,例如,在alive.asm中:
lda ypos,x
Run Code Online (Sandbox Code Playgroud)
而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
Run Code Online (Sandbox Code Playgroud)
我知道标签的不同取决于汇编程序,但我假设它正在通过该列表,但它的特殊性如何工作
以下是有关说明的详细信息lda ypos,x
:
如果ypos
位于零页面之外(等于或大于0x0100):
ypos
来计算地址,然后加载A寄存器(累加器),其中字节位于计算的地址ypos
高字节与计算地址的高字节不同ypos + X
.ypos
位于零页面内(在0x00和0xFF之间),则它可能取决于您的汇编程序(检查操作码):它使用索引绝对寻址模式并且它如前所述工作,或者:
ypos
,包含在0x00-0xFF范围内,然后它将A寄存器(累加器)加载到位于计算地址的字节.ypos
超出零页面定义的值,它可能不是预期的行为.汇编器中可能有一种特定的语法来强制使用绝对的X寻址模式.