【问题标题】:How can I set an lc-3 register to "1000000000000000" efficiently?如何有效地将 lc-3 寄存器设置为“1000000000000000”?
【发布时间】:2015-06-26 13:15:15
【问题描述】:

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

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

"x8000" 是我试图放入寄存器的数字的十六进制。我认为上面的代码不起作用,因为只有 5 位二进制数可以作为添加指令的立即值传递。它们后来被零扩展为 16 位。因此,尝试传递 16 位数字是行不通的。这是我正在研究的程序的一小部分。

【问题讨论】:

  • 我认为最有效的方法是从内存中加载常量。

标签: assembly binary lc3


【解决方案1】:

您是对的,当您使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多