LC-3左移并存储左移位

时间:2013-11-10 02:12:07

标签: lc3

我正在使用以下代码左移R0中的值 - 我相信它会起作用。此外,当R0被左移时,被移除的位的值应该存储在R2中。我不确定我所做的事情是否正确。

另外,MASK .FILL x8000似乎不起作用。我的LC-3模拟器返回错误。它声明“无效指令。RTI用用户模式权限执行。”

.ORIG x3000

LD R0 X
AND R2 R2 0
LD R3 MASK 
LD R1 N
BRZ done
loop
AND R2 R0 R3 ;store leftmost digit of R0 into R2
ADD R0 R0 R0 ;left shift R0
ADD R1 R1 -1 
BRP loop
done .FILL x0000

MASK .FILL x8000
X .FILL xFFFF
N .FILL 5 ;amount of times of leftshifts
.END

1 个答案:

答案 0 :(得分:1)

如果你看一下RTI的Opcode: 1000 0000 0000 0000

它与“MASK .FILL X8000”存储的值相同: 1000 0000 0000 0000

你没有在MASK之前的任何地方放置HALT指令,因此程序将继续运行MASK,X和N.当它通过MASK运行时,它认为你正在尝试使用RTI指令,因为它们具有相同的值。