2

我在 Uni 学了一些 68k/Coldfire,并且很难理解更复杂的寻址模式(数字在取消引用的括号附近)。

我认为这里的例子是最好的:

A) lea:
A1) lea $5(a1,a2.l), a0
A2) lea -1(a1,a2), a0

B) move:
B1) move.b 1(a1),d0
B2) move.b -2(a1),d0

谁能用简单的话向我解释每条指令中发生了什么?

如果需要,请详细说明(前/后增量等)。

谢谢!!;)

4

1 回答 1

7

广告说明:

  • A1) A0 将被设置为 A1+A2+5
  • A2) A0 将投注设置为 A1+A2-1

正如 lea 指令的名称所暗示的那样,它用于将地址加载到地址寄存器中。它不会从间接寻址中移动数据。我还没有检查这些说明是否有效,而且我的 68k 技能现在已经很生疏了,所以我认为它们是有效的。未在 A2 中指定索引寄存器宽度会引入歧义。在我的脑海中,我不记得 .W 或 .L 是否是此处的默认寄存器宽度,因此指定这可能是一个好主意。

广告移动说明:

  • B1) D0 将被设置为紧跟在 A1 中存储的地址之后的字节。例如,如果 A1 设置为 $1000,则将读取的字节是地址 $1001 处的字节。
  • B2) 与 B1 相同,但内容将从 A1 地址前面的 2 个字节读取。再次假设 A1 将预加载 $1000,将读取的字节是位置 $FFE 处的字节。

为了完整起见,寻址模式为:

  • A1) 用索引和位移间接注册
  • A2) 同上
  • B1) 用位移间接注册
  • B2) 同上
于 2019-03-25T12:45:44.000 回答