assembly 如何确定LC-3机器的PC偏移

ryevplcw  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(74)

在家庭作业中我们要追踪一个信用卡的密码-3机器第一行代码是0x 3000 1110 001 00001111,这是R1目的地的莱亚。我被PC偏移量弄糊涂了。如果我读对了,它是十进制的31或十六进制的1F。但是我们得到的信息范围是0x 3020到0x 3025。我做错什么了吗?
我试着阅读我们的书和复习课堂笔记,但老师只是给了我们一个答案,而没有解释他是如何得到这个答案的。

xoshrz7s

xoshrz7s1#

你已经有了PC偏移-它是31。
您要查找的是 * 有效地址 *(也称为内存位置),它由位于0x 3000的指令的PC偏移量31引用。
对于LEA(以及其他使用PCoffset9的),这被定义为:
effectiveAddress = PC 1 + SEXTPCoffset9
对于莱亚,则DR = effectiveAddress
其中莱亚指令具有以下格式:

1110:4 DR:3 PCoffset:9

字符串

  • 1110:4是LEA的4位操作码
  • DR:3是目标寄存器的3位数
  • PCoffset:9作为9位立即数

1增量PC。
从位置0x 3000开始,递增的PC为0x 3001,而SEXT(31)为31,因此0x 3001 + 31是计算到R1中的值。

相关问题