ARM整数除法算法

时间:2015-02-06 23:59:34

标签: algorithm assembly integer arm division

我从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.

我的逻辑中是否有任何我只是缺失的谬误?

1 个答案:

答案 0 :(得分:1)

我删除了it lo并将mov更改为movlo,但效果很好。