如何有效地将lc-3寄存器设置为“1000000000000000”?

时间:2015-04-19 23:51:58

标签: assembly binary lc3

我可以使用5个空寄存器。它们设置为零。我想有效地设置一个寄存器到上面的数字。

AND R1, R1, #0 ; 
ADD R1, R1, x8000

“x8000”是我尝试放入寄存器的数字的十六进制数。我认为上面的代码不起作用,因为只有5位二进制数可以传递给立即值添加指令。它们后来被零扩展到16位。因此,尝试传递16位数字不起作用。这是我正在开展的一个项目的一小部分。

1 个答案:

答案 0 :(得分:0)

你是对的,当你使用ADDi(立即数)时,你只能在添加到寄存器时使用介于-16和15之间的数字。

您可以反复使用ADDi命令,直到在寄存器中找到所需的数字(不推荐),或者可以从内存中加载常量。

.orig x3000

MAIN
AND R1, R1, #0      ; Clear R1
LD R2, VAR_1        ; Load x8000 into R2
ADD R1, R1, R2      ; R1 = R1 + R2

HALT
; Variables
VAR_1   .FILL x8000

.END