assembly LC-3组件减两个数

2sbarzqh  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(121)

我有这个问题,因为我是新的LC-3编程的问题。
编写LC-3代码,从R 0中的值减去R1中的值,并将结果放入R5中。即,编写R5的汇编代码:= R 0- R1。假设R1=10,R 0为12。

hvvq6cgz

hvvq6cgz1#

根据你的问题,我们可以假设12和10已经在R0R1中,所以正确的算法从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

相关问题