寻址方式
65816的原本模式支持所有的6502和65C02的寻址方式和操作码。在原本模式和模拟模式下都支持九个其他的新的寻址方式。然而,在65816原本模式和6502模拟模式在寻址上有一些值得注意的不同。
在模拟模式下,使用零页面变址寻址时,对超过了$FF的(基地址+变址)进行寻址,将不会有页面的折回循环出现。而在65816原本模式下变址可以是16位,因此如果(基地址+变址)超过了本页面,也会生成正确的有效地址。
在使用16位变址寄存器时,直接页面寻址方式在遇到超出$FFFF的地址时,有效地址会返回到当前的存储段而不是下一个存储段。比如:
lda $20, x
x是$FFFF,将会得到一个有效的地址$1F。
当使用绝对变址寻址时,基地址为$FF01到$FFFF,如果变址会使有效地址超过$FFFF,则会进入下一个存储段。然而在6502上,这种情况会使得寻址在零页面之内折回循环。
请记住,当变址寄存器是16位时,绝对变址X或绝对变址Y能访问到完整的64k!比如:
lda $6000, y
y是$2000,将会得到一个有效地址$8000。
85618还修正了6502的间接JMP的BUG。现在JMP($12FF)将会得到正确的地址$12FF-$1300。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。