68k ASM寻址模式

时间:2019-03-25 01:34:20

标签: assembly 68000 addressing-mode coldfire

我在大学学习了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

有人可以用简单的语言向我解释每条指令中发生了什么吗?

请根据需要详细说明(递增/递减等)。

谢谢!! ;)

1 个答案:

答案 0 :(得分:5)

广告说明:

  • 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)dito
  • B1)通过位移间接注册
  • B2)dito