×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-05-27 发布时间:
|

采用移位减法的算法。源码如下:


 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


关键字:无符号  三字节  单字节  51单片机

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2