2013-03-28 36 views
4

阅读关于6502的文档,我无法在任何地方找到答案。使用相对寻址时可以进行换行。但是是否有可能围绕两端?我猜这是可能的,但不太可能。6502 Relative Address mode wrapping

而当我的意思是两端,我的意思是我知道你可以从高PC到低PC。但是,您是否也可以从一台低端个人电脑换到一台高端电脑?

回答

7

将页面边界与相对分支交叉会产生额外的循环,但不管页面交叉分支是向前分支还是向后分支,都没有任何区别。

您可以在Visual6502试试。在地址0000处输入程序A9 00 F0 ECLDA #00/BEQ $FFF0),单步执行代码并查看BEQ后的结束位置。如果你只相信真正的硬件,你可以很容易地验证任天堂娱乐系统。

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

0

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

+2

我相信这个问题是关于6502行为。欧普可能正在研究一些仿真的东西等等。我不认为这个答案对他有帮助。 – 2013-03-28 13:48:55

3

是的,它也可以倒退。但是许多汇编程序不支持这一点。当你尝试在zeropage寻址> $ ff80区域的开始处放置一个分支操作符时,汇编器通常会抛出错误,如“偏移过大”。但是,当您尝试放置操作码像> 0002 f0 e0这样的字节值时,您会得到结果beq $ffe4。我使用0002作为第一个可用的内存地址,因为我使用Commodore 64来试用它,而$ 0001不适用于该机器。对于其他基于6502的机器,$ 0000也应该可以。