作者:手机用户2702937405 | 来源:互联网 | 2022-12-03 16:24
我最近开始编程6502程序集,我遇到了一个问题.我希望能够存储从地址$ 0300开始的16位存储器地址,然后我想在该地址存储一个值.
例如,存储地址$ 2016将是$ 0300:#$ 20,$ 0301:#$ 16.然后我想读取这两个字节并存储价值为2016美元.我似乎无法找到允许这样的寻址模式,是否有类似的东西,或者我必须使用零分页.
1> JeremyP..:
您需要找到两个零页面位置并通过它们索引.间接寻址仅在零页面可用.而且,事实上,没有零页间接模式也不使用索引.
假设$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
我在将字节复制到零页时交换字节的原因是你$300
以大端顺序存储地址(在你的问题中),即低地址的高字节.6502是小端,这意味着它需要低地址的低字节.你应该遵循6502约定并存储你的字节,以便$300
包含$16
和$301
包含$20
.