【问题标题】:Determining the offset in LC3确定 LC3 中的偏移量
【发布时间】:2015-11-28 17:31:15
【问题描述】:

给了我几行代码,并告诉我编写相应的 LC3 指令。我无法确定偏移值。

例如:

x3100    1110001000100000

所以 1110 是 LEA 的操作码。 001 表示 R1。其余的让我感到困惑。我剩下000100000。查看LC-3指令列表,LEA的语法如下

LEA-->  |1110|DR|PCoffset9|

如何从我的代码中找出 PCoffset9 是什么? 000100000 是数字 32,是这样的:

LEA R1, #32    ;is this right?

这似乎不对。我想我记得看到这些数字表示为内存位置?所以 000100000 会是 x020 吗?我很困惑如何计算偏移量。

【问题讨论】:

    标签: assembly binary offset systems-programming lc3


    【解决方案1】:

    您对本说明的细分是正确的。 剩余的偏移量 000100000 实际上是十进制的 32 或十六进制的 x0020。

    这个偏移量必须取自当前指令的结尾。由于当前指令位于 x3100,因此它的结尾位于 x3101。现在你在这个数字上加上 32,你就得到了这个 LEA 所指的内存地址。 x3101 + 32 == x3121

    很可能在正常程序中会在此地址 x3121 处定义一个标签。因此,指令编码 1110001000100000 可能源自如下源代码行:

    LEA R1, MYLABEL
    

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 2013-07-12
      • 2013-08-24
      • 2012-12-08
      相关资源
      最近更新 更多