确定LC3中的偏移量

时间:2015-09-03 02:46:23

标签: assembly binary offset systems-programming lc3

我获得了几行代码并被告知要写相应的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吗?我对如何弄清偏移感到困惑。

1 个答案:

答案 0 :(得分:1)

你对这条指令的细分是正确的。 保留的偏移 000100000 确实是十进制的32或十六进制的x0020。

此偏移量必须取自当前指令的末尾。由于当前指令位于x3100,因此它的结尾位于x3101。现在,您将32添加到此数字,并获得此LEA所指的内存地址。 x3101 + 32 == x3121

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

LEA R1, MYLABEL