【问题标题】:Addressing Mode: Distinguishing between Absolute Short and Absolute Long?寻址模式:区分绝对短和绝对长?
【发布时间】:2015-10-26 10:23:46
【问题描述】:

好的,我有以下说明:

MOVE.W 1234 美元,8000 美元

现在我很困惑 1234 美元和 8000 美元的寻址模式是绝对短还是绝对长。

如果有人能解释如何区分绝对短和绝对长,我也将不胜感激。谢谢。

【问题讨论】:

  • 请注意,如果您对$8000 使用绝对短地址,您最终会得到地址$FFFF8000,因为地址是符号扩展的。这可能是你想要的,也可能不是。
  • @Michael 所以如果我希望地址是 $00008000 我会使用绝对长?还有 1234 美元呢?

标签: 68000 addressing-mode easy68k


【解决方案1】:

使用后缀.L.W 表示长或短。在我使用的汇编程序中,绝对长是默认值。如果地址适合 16 位,其他汇编器可能会使用绝对短。

例如

# Move word from memory location 00001234 to 00008000.
MOVE.W $1234.W, $8000.L

# From 00001234 to FFFF8000.
MOVE.W $1234.L, $8000.W

【讨论】:

    【解决方案2】:

    绝对短/长是指地址寄存器地址。当 68k 读取指令时,绝对短地址总是从 16 位符号扩展到 32 位值(例如 0xEDCB.w -> 0xFFFFEDCB)。与绝对长寻址相比,使用绝对短寻址需要更少的时间和更少的空间,但是在任何其他情况下,只有 -0x8000-0x7FFF (0xFFFF8000-0x00007FFFF) 可以是绝对短寻址必须使用绝对长。但是,如果您对空间和速度不感兴趣,您可能会完全忽略这一点,让您的汇编程序来决定。如果它足够聪明(通常情况并非如此),它会为你决定是否没有标记。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-15
      • 2010-10-28
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多