6502相对地址模式换行

时间:2013-03-28 04:57:27

标签: assembly 6502

阅读6502上的文档,我无法在任何地方找到答案。使用相对寻址时可以换行。但是有可能包裹两端吗?我猜这是可能的,但不太可能。

当我指的是两端时,我的意思是我知道你可以从高PC到低PC。但是你也可以从低PC到高PC吗?

3 个答案:

答案 0 :(得分:7)

跨越页面边界与相对分支将产生一个额外的周期,但是,无论页面交叉分支是前向分支还是后向分支,它都没有任何区别。

您可以在Visual6502中尝试一下。在地址0000输入程序A9 00 F0 ECLDA #00 / BEQ $FFF0),单步执行代码并查看BEQ后的结果。如果您只信任真正的硬件,您可以轻松地在任天堂娱乐系统上验证这一点。

显然能够通过相对分支到达页面FF,你必须执行zeropage RAM,并且你可能不想在代码上浪费ZP RAM,因为它需要适合你的最常访问的数据。所以这会使这种特殊情况不太可能。

答案 1 :(得分:3)

是的,它也可以倒退。但是许多装配工并不支持这一点。当您尝试将分支运算符放在zeropage寻址> $ ff80区域的开头时,汇编程序通常会抛出“offset too large”之类的错误。但是当您尝试使用> 0002 f0 e0这样的字节值放置操作码时,您会得到结果beq $ffe4。我使用0002作为第一个可用的内存地址,因为我使用了Commodore 64来尝试它并且$ 0001不适用于该机器。对于其他基于6502的机器,$ 0000也应该没问题。

答案 2 :(得分:0)

通常,您可以使用模运算执行自己的地址计算,然后将结果用于绝对寻址。