在6502寻址

0 assembly 6502 addressing-mode

我最近开始编程6502程序集,我遇到了一个问题.我希望能够存储从地址$ 0300开始的16位存储器地址,然后我想在该地址存储一个值.

例如,存储地址$ 2016将是$ 0300:#$ 20,$ 0301:#$ 16.然后我想读取这两个字节并存储价值为2016美元.我似乎无法找到允许这样的寻址模式,是否有类似的东西,或者我必须使用零分页.

Jer*_*myP 5

您需要找到两个零页面位置并通过它们索引.间接寻址仅在零页面可用.而且,事实上,没有零页间接模式也不使用索引.

假设$02并且$03可用.将字节复制到那里.

; Store the address you want to access in zp memory
lda $300
sta $03     ; Note I'm swapping the bytes (see below)
lda $301
sta $02
; access the address indirectly through zero page
ldx #0
lda $data
sta ($02,x) ; x is zero so address used is $02
Run Code Online (Sandbox Code Playgroud)

我在将字节复制到零页时交换字节的原因是你$300以大端顺序存储地址(在你的问题中),即低地址的高字节.6502是小端,这意味着它需要低地址的低字节.你应该遵循6502约定并存储你的字节,以便$300包含$16$301包含$20.