【问题标题】:6502 Relative Address mode wrapping6502 相对地址模式换行
【发布时间】:2013-03-28 04:57:26
【问题描述】:

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

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

【问题讨论】:

    标签: assembly 6502


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我相信问题是关于 6502 行为。 Op 可能正在研究一些仿真的东西等。我认为这个答案对他没有帮助。
        猜你喜欢
        • 2018-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多