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

How to add numbers with LC-3 program and have them display correctly in the registers?

使用 LC-3 程序集,我尝试将 R0 到 R5 的值设置为 0。然后,我尝试将 1 分配给 R1,2 分配给 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是错误的,我不知道如何解决这个问题。

根据评论,您使用的是书中的官方 LC-3 模拟器。

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

您的代码是正确的。只需在 TRAP x25 指令处放置一个断点并检查该点的寄存器。