小编msb*_*bit的帖子

Motorola 68000 带有索引的程序计数器间接汇编语法

我已经根据MOTOROLA M68000 FAMILY Programmer\xe2\x80\x99s Reference Manual编写了自己的Sega Mega Drive ROM 反汇编程序。拆卸了相当大的 ROM 块后,我尝试使用VASM重新组装这个拆卸的输出,因为它可以使用其语法模块接受摩托罗拉汇编语法。mot

\n

现在,对于绝大多数重组来说,这种方法效果很好,但是,对于具有由“带索引(8 位位移)模式的程序计数器间接”定义的有效地址的操作,存在一个问题。鉴于我现在才学习 Motorola 68000 组装,我想确认我的理解并问:这些操作的正确语法是什么?

\n

解释

\n

例如,如果我有两个词:

\n
4ebb 0004\n
Run Code Online (Sandbox Code Playgroud)\n

我将其解释为JSR目标目的地是以下各项的总和:

\n
    \n
  • 的内容pc
  • \n
  • 0x04
  • \n
  • 的内容d0
  • \n
\n

(鉴于我将自己限制在 68000,我在扩展字中省略了对sizeand的任何考虑scale)。\n根据参考手册中如何描述此寻址模式,我将其发出为:

\n
jsr ($04,pc,d0)\n
Run Code Online (Sandbox Code Playgroud)\n

使用 VASM 进行组装

\n

但是,当我将其反馈回 VASM 时,它会发出以下错误:

\n
error 2030 in line X of "XXXX.asm": displacement out of range\n>  jsr ($04,pc,d0)\n
Run Code Online (Sandbox Code Playgroud)\n

这似乎是一个非常奇怪的错误,因为由于寄存器的使用,位移直到运行时才能知道 …

assembly 68000 gnu-assembler disassembly addressing-mode

7
推荐指数
1
解决办法
655
查看次数