Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何使用LC-3程序添加数字,并使其在寄存器中正确显示?_Assembly_Lc3 - Fatal编程技术网

Assembly 如何使用LC-3程序添加数字,并使其在寄存器中正确显示?

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

使用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
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是否正确?