1

我正在处理以下代码以左移 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
4

1 回答 1

1

如果您查看 RTI 的操作码:1000 0000 0000 0000

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

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

于 2013-11-11T15:16:15.520 回答