我已经根据MOTOROLA M68000 FAMILY Programmer\xe2\x80\x99s Reference Manual编写了自己的Sega Mega Drive ROM 反汇编程序。拆卸了相当大的 ROM 块后,我尝试使用VASM重新组装这个拆卸的输出,因为它可以使用其语法模块接受摩托罗拉汇编语法。mot
现在,对于绝大多数重组来说,这种方法效果很好,但是,对于具有由“带索引(8 位位移)模式的程序计数器间接”定义的有效地址的操作,存在一个问题。鉴于我现在才学习 Motorola 68000 组装,我想确认我的理解并问:这些操作的正确语法是什么?
\n例如,如果我有两个词:
\n4ebb 0004\nRun Code Online (Sandbox Code Playgroud)\n我将其解释为JSR目标目的地是以下各项的总和:
pc0x04d0(鉴于我将自己限制在 68000,我在扩展字中省略了对sizeand的任何考虑scale)。\n根据参考手册中如何描述此寻址模式,我将其发出为:
jsr ($04,pc,d0)\nRun Code Online (Sandbox Code Playgroud)\n但是,当我将其反馈回 VASM 时,它会发出以下错误:
\nerror 2030 in line X of "XXXX.asm": displacement out of range\n> jsr ($04,pc,d0)\nRun Code Online (Sandbox Code Playgroud)\n这似乎是一个非常奇怪的错误,因为由于寄存器的使用,位移直到运行时才能知道 …