Assembly 如何使用LC-3程序添加数字,并使其在寄存器中正确显示?
使用LC-3汇编,我试图将R0到R5的值设置为0。然后,我试图通过将5设置为R5,将1分配给R1,2分配给R2,以此类推。最后,我尝试计算总和并将结果存储在R0中 到目前为止,我的代码如下:Assembly 如何使用LC-3程序添加数字,并使其在寄存器中正确显示?,assembly,lc3,Assembly,Lc3,使用LC-3汇编,我试图将R0到R5的值设置为0。然后,我试图通过将5设置为R5,将1分配给R1,2分配给R2,以此类推。最后,我尝试计算总和并将结果存储在R0中 到目前为止,我的代码如下: .ORIG x3000 AND R0,R0,#0 AND R1,R1,#0 AND R2,R2,#0 AND R3,R3,#0 AND R4,R4,#0 AND R5,R5,#0 ADD R1,R1,#1 ADD R2,R2,#2 ADD R3,R3,#3 ADD R4,R4,#4 ADD R5,R5,#5
.ORIG x3000
AND R0,R0,#0
AND R1,R1,#0
AND R2,R2,#0
AND R3,R3,#0
AND R4,R4,#0
AND R5,R5,#0
ADD R1,R1,#1
ADD R2,R2,#2
ADD R3,R3,#3
ADD R4,R4,#4
ADD R5,R5,#5
ADD R0,R0,R1
ADD R0,R0,R2
ADD R0,R0,R3
ADD R0,R0,R4
ADD R0,R0,R5
TRAP x25
.END
问题是,当我运行该程序时,寄存器最终具有以下值:
R0是32767,R1是-1,R2是2,R3是3,R4是4,R5是5。寄存器2到5是正确的,但是R0和R1是错误的,我不知道如何解决这个问题。给出了注释,并且您正在使用书中的官方LC-3模拟器 该模拟器将进入陷阱服务例程。您所看到的是R0/R1被处理trap x25指令的代码搞砸了
你的代码是正确的。只需在TRAP x25指令处设置一个断点,并在该点检查寄存器。此代码正确,您使用的模拟器可能有问题。是否有任何方法可以正确配置模拟器以使其正常运行?答案在很大程度上取决于您使用的lc3模拟器。在我继续之前。你确定你在正确的目录中并且模拟器确实在运行代码吗?如果是这样的话,你在用什么样的lc3模拟器?这是我从中获得LC-3模拟器的网站。如果是单步执行,则在
陷阱之前R0和R1是否正确?