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

时间:2018-04-15 04:42:54

标签: assembly lc3

使用LC-3组装,我试图将R0到R5的值设置为0.然后,我尝试将R1分配给1,将R2分配给R2,依此类推,将5设置为R5。最后,我正在尝试计算总和并将结果存储在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是错误的,我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

鉴于评论并且您正在使用本书中的官方LC-3模拟器。

该模拟器将进入陷阱服务程序。您所看到的是R0 / R1被处理陷阱x25指令的代码所破坏。

您的代码是正确的。只需在TRAP x25指令处设置一个断点,然后检查寄存器。