hxlwjn的笔记 https://bbs.21ic.com/?576420 [收藏] [复制] [RSS]

日志

二进制除法

已有 1889 次阅读2010-4-21 07:20 |个人分类:ARM|系统分类:ARM

    许多单片机都没有除法指令,如果用C语言开发则不必考虑这个问题,编译器会帮你处理除法运算;如果用汇编,则需要一个除法子程序。下面是arm的除法宏。


$dividend:运算前存放被除数,运算后存放余数;


$divisor:除数;


$quotient:运算后存放商;


$temp:临时变量,存放中间结果;


这里假定$dividend,$divisor,$quotient,$temp都是寄存器。


$Lab DivCal  $dividend,$divisor,$quotient,$temp
$Lab
         MOV  $temp,$divisor
         CMP  $temp,$dividend, LSR #1   
0       MOVLS   $temp,$temp, LSL #1     ; double it until 2 * $temp > $dividend
         CMP  $temp,$dividend ,LSR #1 
         BLS  %B0
         MOV  $quotient,#0
1      CMP     $dividend,$temp
        SUBCS $dividend,$dividend,$temp
        ADC     $quotient,$quotient, $quotient 
        MOV  $temp,$temp, LSR #1
        CMP  $temp,$divisor
        BHS     %B1
        MEND


路过

鸡蛋

鲜花

握手

雷人

全部作者的其他最新日志

评论 (0 个评论)