编写汇编程序,打印两个数字中最大的一个



这是我的代码。我们必须找到两个数字中最大的一个。我觉得我把某个地方搞砸了,或者代码不完整。

A: .word 12
B: .word 24
load r1, [A]
load r1, [r1]
load r2, [B]
load r2, [r2]
blt r1, r2, end
mov r1, r2
load r1
end:
bra +0

将鼓励任何帮助

将值加载到寄存器分两步完成,首先制作一个指向变量的指针,然后从其地址加载数据。类似这样的东西:

ldr R0, =A //R0 is pointing to A
ldr R1, [R0] //load a word from the address pointed to by R0 into R1

注意:你可以做ldr R0,[R0]

不能在同一指令中进行比较和分支。blt,r1,r2,end是无效指令。您可以进行比较,然后根据比较结果进行分支。

有几种方法可以进行比较,但最简单的可能是使用比较两个值的CMP指令。比较保存A和B值的两个寄存器(例如寄存器R1和R2(中的值。

CMP R1, R2

最后,您可以使用带有目标标签的条件(如BLT或BEQ(的分支指令

BLT end

伪代码看起来像这样:

set up pointers
load values 
compare values
branch to the end if A<B

最新更新