我正在使用以下代码左移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
答案 0 :(得分:1)
如果你看一下RTI的Opcode: 1000 0000 0000 0000
它与“MASK .FILL X8000”存储的值相同: 1000 0000 0000 0000
你没有在MASK之前的任何地方放置HALT指令,因此程序将继续运行MASK,X和N.当它通过MASK运行时,它认为你正在尝试使用RTI指令,因为它们具有相同的值。