这是我的LC-3编码互操作给出的图像
.ORIG x3000 LEA R1, R7, #29 ADD R2, R1, #14 ST R2, R7, #27 AND R2, R2, #0 ADD R2, R2, #5 STR R2, R1, #14 LDI R3, R7, #23 .END
请告诉我我哪里出了问题,因为当我组装这个代码不工作。
bvn4nwqk1#
首先,请注意表中给出的第一个地址-x30F6。如果你想重现这一点,你必须使用不同的方法来定位代码,其中一种方法是使用.ORIG x30F6(另一种方法是在.ORIG x3000后面插入空格,例如.BLKW xF6,这样下一条指令就落在x30F6上)。接下来,您已将第一条指令正确解码为操作码LEA,并具有正确得寄存器目的(R1),但LEA指令得格式只有两个操作数,而您得格式有3个操作数,因此这是不正确得.接下来,ADD看起来不错。接下来,您在正确解码ST操作码和源寄存器R2时出现了与第一个LEA相同的错误,但将其余部分解码为另外两个操作数,其中ST仅多了一个操作数。请仔细注意蓝色下划线,它显示了描述每个指令操作数的字段的分组和计数。
x30F6
.ORIG x30F6
.ORIG x3000
.BLKW xF6
LEA
R1
ADD
ST
R2
1条答案
按热度按时间bvn4nwqk1#
首先,请注意表中给出的第一个地址-
x30F6
。如果你想重现这一点,你必须使用不同的方法来定位代码,其中一种方法是使用
.ORIG x30F6
(另一种方法是在.ORIG x3000
后面插入空格,例如.BLKW xF6
,这样下一条指令就落在x30F6
上)。接下来,您已将第一条指令正确解码为操作码
LEA
,并具有正确得寄存器目的(R1
),但LEA
指令得格式只有两个操作数,而您得格式有3个操作数,因此这是不正确得.接下来,
ADD
看起来不错。接下来,您在正确解码
ST
操作码和源寄存器R2
时出现了与第一个LEA
相同的错误,但将其余部分解码为另外两个操作数,其中ST
仅多了一个操作数。请仔细注意蓝色下划线,它显示了描述每个指令操作数的字段的分组和计数。