LC-3组件减去两个数字

时间:2016-02-24 18:13:17

标签: assembly lc3

我对这个问题有疑问,因为我不熟悉LC-3编程。

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

1 个答案:

答案 0 :(得分:2)

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

解决方案是使用R0添加-R1。我们通过对-R1中的数字进行逐位求逆(NOT)并添加1来找到R1。这给出了R1的2的补码否定。

如果您不理解二进制补码算法,我建议您查看here。在执行减法后,我们将原始数字恢复为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