4

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

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

4

3 回答 3

7

用相对分支跨越页面边界会产生一个额外的循环,但是页面跨越分支是向前分支还是向后分支都没有任何区别。

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

显然,为了能够使用相对分支到达页面 FF,您必须在零页 RAM 之外执行,并且您可能不想在代码上浪费 ZP RAM,因为它需要适合您最常访问的数据。因此,这将使这种特殊情况不太可能发生。

于 2013-03-28T09:12:57.710 回答
3

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

于 2013-03-28T13:41:58.157 回答
0

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

于 2013-03-28T05:01:43.280 回答