Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我可以使用 5 个空寄存器。它们被设置为零。我想有效地为上面的数字设置一个寄存器。
AND R1, R1, #0 ; ADD R1, R1, x8000
“x8000”是我试图放入寄存器的数字的十六进制。我认为上面的代码不起作用,因为只有 5 位二进制数可以作为添加指令的立即值传递。它们后来被零扩展为 16 位。因此,尝试传递 16 位数字是行不通的。这是我正在研究的程序的一小部分。
没错,当您使用 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