Assembly LC-3总成减去两个数字

Assembly LC-3总成减去两个数字,assembly,lc3,Assembly,Lc3,我有这个问题的问题,因为我是新的LC-3编程 编写LC-3代码,将R0中的值减去R1中的值,并将结果放入R5。也就是说,为R5:=R0-R1编写汇编代码。假设R1=10,R0为12。根据您的问题,我们可以假设12和10已经在R0和R1中,因此正确的算法从NOT指令开始,在HALT结束;但是,还包括其他说明,以允许您运行此代码 解决方案是使用-R1添加R0。我们通过对R1中的数字进行位反转(NOT)并添加1来查找-R1。这给了我们R1的2的补码否定 如果你不懂二的补码运算,我建议你看看。执行减法后

我有这个问题的问题,因为我是新的LC-3编程


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

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

解决方案是使用
-R1
添加
R0
。我们通过对
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

嘿,泰勒,我运行了这个程序,但它没有显示任何输出。我的LC-3控制台窗口仅显示“停止处理器”。。你能告诉我为什么它会显示这个语句吗?据我所知,这个程序不应该显示任何输出(至少在控制台上)。说明是“将结果放入R5”哦好的。。。Tyler感谢您的帮助,,,:)您没有销毁R1并重新加载,而是无法进入R5生成
R5:=~R1
,依此类推。