我得到了几行代码,并被告知编写相应的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?我真搞不懂怎么才能算出偏移量。
发布于 2015-09-03 10:17:35
你说得对,这条指令的细节是正确的。剩下的偏移量000100000实际上是小数点32或十六进制的x0020。
此偏移必须从当前指令的结尾处提取。由于当前的指令在x3100,所以它的结尾是在x3101。现在,将32加到这个数字中,然后得到这个LEA所指的内存地址。x3101 + 32 == x3121
很可能在一个正常的程序中,在这个地址x3121上定义了一个标签。因此,编码1110001000100000的指令可以起源于如下的源行:
LEA R1, MYLABELhttps://stackoverflow.com/questions/32366170
复制相似问题