• 002:无符号三字节除以单字节(51单片机,汇编源码)


    采用移位减法的算法。源码如下:
     1 ;//////////////////////////////////////////////////////////////////////////////
    2 ;函数: div_u24_u8
    3 ;描述: 无符号双字节除以单字节
    4 ;入口: (R5,R6,R7)/(R0)
    5 ;出口: (R5,R6,R7).(R4)
    6 ;注意: 余数在r5;OV=1时表示溢出
    7 ;影响: A,B,R0,R4,R5,R6,R7
    8 div_u24_u8: mov r4,#0
    9 mov b,#24
    10 #ifdef __SPEED_P__
    11 mov a,r5 ;高字节小于除数的时候,只要移位16次
    12 jz _du248_line_03
    13 clr c
    14 subb a,r0
    15 jnc _du248_loop_00
    16 mov b,#16
    17 clr a
    18 xch a,r7
    19 xch a,r6
    20 xch a,r5
    21 xch a,r4
    22 sjmp _du248_loop_00
    23
    24 _du248_line_03: mov a,r6
    25 jz _du248_line_04
    26 clr c
    27 subb a,r0
    28 jnc _du248_loop_00
    29 mov b,#8 ;高字节=0,中字节小于除数的时候,只要移位8次
    30 clr a
    31 xch a,r7
    32 xch a,r5
    33 xch a,r6
    34 xch a,r4
    35 sjmp _du248_loop_00
    36
    37 _du248_line_04: mov a,r7 ;高字节=0,中字节=0
    38 mov b,r0
    39 div ab
    40 mov r4,b
    41 mov r7,a
    42 sjmp _du248_line_05
    43 #endif
    44 _du248_loop_00: clr c
    45
    46 mov a,r7 ;向左移位
    47 rlc a
    48 mov r7,a
    49
    50 mov a,r6
    51 rlc a
    52 mov r6,a
    53
    54 mov a,r5
    55 rlc a
    56 mov r5,a
    57
    58 mov a,r4
    59 rlc a
    60 mov r4,a
    61
    62 mov F0,c ;移出位=1,或者高字节够减的时候,商+1
    63 clr c
    64 subb a,r0
    65 anl c,/F0
    66 jc _du248_line_01
    67 mov r4,a
    68 inc r7
    69 _du248_line_01: djnz b,_du248_loop_00
    70
    71 _du248_line_05: mov a,r4 ;四舍五入
    72 add a,r4
    73 jc _du248_line_02
    74 subb a,r0
    75 jc return_du248
    76 _du248_line_02: clr c
    77 mov a,#1
    78 add a,r7
    79 mov r7,a
    80 clr a
    81 addc a,r6
    82 mov r6,a
    83 clr a
    84 addc a,r5
    85 mov r5,a
    86
    87 return_du248: mov OV,C
    88 ret
    点这里下载asm文件:下载
  • 相关阅读:
    Day2----Python常用模块
    Day1--Python基础知识
    AES加密
    MOS管基本MOS管基本认识(快速入门)认识(快速入门)
    printf定义宏方便调试
    ESP8266上电透传与手动透传AT指令设置笔记
    三态门与高阻态
    步进电机原理
    关于stm32 MCU申请动态内存malloc的认识
    高低位数据分离的两种方法
  • 原文地址:https://www.cnblogs.com/afeibfp/p/2186051.html
Copyright © 2020-2023  润新知