zoukankan      html  css  js  c++  java
  • 001:无符号双字节除以单字节(51单片机,汇编源码)

    采用移位减法的算法。源码如下:
     1 ;//////////////////////////////////////////////////////////////////////////////
    2 ;函数: div_u16_u8
    3 ;描述: 无符号双字节除以单字节
    4 ;入口: (R6,R7)/(R0)
    5 ;出口: (R6,R7).(R5)
    6 ;注意: 余数在R5;OV=1时表示溢出
    7 ;影响: A,B,R0,R5,R6,R7
    8 div_u16_u8: mov r5,#0
    9 mov b,#16
    10 #ifdef __SPEED_P__
    11 mov a,r6 ;高字节小于除数的时候,只要移位8次
    12 jz _du168_line_03
    13 clr c
    14 subb a,r0
    15 jnc _du168_loop_00
    16
    17 mov b,#8
    18 clr a
    19 xch a,r7
    20 xch a,r6
    21 xch a,r5
    22 sjmp _du168_loop_00
    23
    24 _du168_line_03: mov a,r7
    25 mov b,r0
    26 div ab
    27 mov r7,a
    28 mov r5,b
    29 sjmp _du168_line_04
    30 #endif
    31 _du168_loop_00: clr c
    32
    33 mov a,r7 ;向左移位
    34 rlc a
    35 mov r7,a
    36
    37 mov a,r6
    38 rlc a
    39 mov r6,a
    40
    41 mov a,r5
    42 rlc a
    43 mov r5,a
    44
    45 mov F0,c ;移出位=1,或者高字节够减的时候,商+1
    46 clr c
    47 subb a,r0
    48 anl c,/F0
    49 jc _du168_line_01
    50 mov r5,a
    51 inc r7
    52 _du168_line_01: djnz b,_du168_loop_00
    53
    54 _du168_line_04: mov a,r5 ;四舍五入
    55 add a,r5
    56 jc _du168_line_02
    57 subb a,r0
    58 jc return_du168
    59 _du168_line_02: clr c
    60 mov a,#1
    61 add a,r7
    62 mov r7,a
    63 clr a
    64 addc a,r6
    65 mov r6,a
    66
    67 return_du168: mov OV,C
    68 ret
    点这里下载asm文件:下载
  • 相关阅读:
    心得sql空值的应用
    C#开发GIS应用简明教程(二)
    网页右下角弹出窗口
    弹出输入框方法汇总
    C#开发GIS应用简明教程(三)
    防刷新的另一种方法
    相册
    网站下载速度限制方法
    .NET下多线程初探
    用DECODE做交叉报表
  • 原文地址:https://www.cnblogs.com/afeibfp/p/2185294.html
Copyright © 2011-2022 走看看