我从ARM组装开始,我一直在尝试编写一个简单的整数除法子程序。到目前为止,我有以下内容:
.text
start:
mov r0, #25
mov r1, #5
bl divide
b stop
divide:
cmp r0, r1
it lo
mov pc, lr
sub r0, r0, r1
add r2, r2, #1
b divide
stop:
b stop
我根据算法提出的伪代码编写了它:
Is the Divisor (bottom) larger than the Dividend (top)?
Yes:
-Return the remainder and the counter(quotient)
No:
-Subtract the Divisor from the Dividend
-Increment the counter by 1
-Repeat the method
r0包含分子,r1包含分母。 算法完成后,r0应包含余数,r2应包含商。但是,运行时,r0包含19,r2包含0.
我的逻辑中是否有任何我只是缺失的谬误?
答案 0 :(得分:1)
我删除了it lo
并将mov
更改为movlo
,但效果很好。