繁体   English   中英

LC-3大会减去两个数字

[英]LC-3 Assembly Subtract Two Numbers

由于我是LC-3编程的新手,所以我对此问题有疑问。

编写LC-3代码以从R0中的值减去R1中的值,然后将结果放入R5中。 也就是说,编写R5的汇编代码:= R0-R1。 假设R1 = 10并且R0为12。

根据您的问题,我们可以假设R0R1中已经有12和10,因此正确的算法从NOT指令开始,到HALT结束; 但是,还包含其他说明以允许您运行此代码。

解决方案是将R0-R1相加。 通过对R1的数字进行按位求反( NOT )并加1,可以找到-R1 。这使我们得到R1的2的补码取反。

如果您不理解二进制补码算法,建议在这里查看 执行完减法后,我们将原始数恢复为R1

.orig x3000

LD R0, A        ; A(12) => R0 (this is assumed)
LD R1, B        ; B(10) => R1 (this is assumed)
                ; find negative of the two's complement number in R1
NOT R1, R1
ADD R1, R1, 1
ADD R5, R0, R1  ; R0 - R1 => R5
LD R1, B        ; Restore R1
HALT

A .fill 12
B .fill 10

.end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM