新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51单片机多字节的除法

51单片机多字节的除法

作者:时间:2012-08-24来源:网络收藏


;双字节除双字节的程序如下:

;双字节的
;只是8位的,但有时候需要实现双字节,里面的指令只支持8位。
;想来想去,只好用减法来实现了。下面这个子程序是双字节除以双字节,商、余数结果都是双字节保存,可能有点消耗资源,但这样可以整合在一块。
;****************************************
;函数名称:Div2Byte
;功能描述:无符号数双字节
;传入参数:R0R1被除数 R2R3除数
;返回数据:R4R5商 R6R7余数
;其他说明:比如双字节数R0R1,R0高字节 R1低字节
;****************************************
Div2Byte:
mov r0,#0ffh
mov r1,#0ffh
mov r2,#0
mov r3,#254

mov R4,#0
mov R5,#0 ;商赋初值零
mov A,R0
mov R6,A
mov A,R1
mov R7,A ;余数赋初值,保证商为零时余数正常
Div2Byte_1:
mov A,R1
clr c
subb A,R3 ;低字节相减
mov R1,A
mov A,R0
subb A,R2 ;高位相减
mov R0,A
jc Div2Byte_3 ;如果高字节都需要借位则退出循环
clr c
mov A,R5
add A,#1 ;之后JNC判断,故不用INC
mov R5,A
jnc Div2Byte_2
inc R4 ;商加1
Div2Byte_2:
mov A,R1
mov R7,A
mov A,R0
mov R6,A ;更新余数
LJMP Div2Byte_1
Div2Byte_3:
nop

END


;两个程序均验证无误!我也是在网上抄来,然后调试的。在这里特别感谢提供这个程序并发到网上的同行们!

;我觉得我们搞单片机这一块的人都非常非常的友好,不象有的行当,学会了一点点就开始保密保守,那样事

;业怎么可能发展?我的口号是: 不保密,不保守,共同提高。要想比别人更强更高,那就付出更多

三极管相关文章:三极管放大电路


51单片机相关文章:51单片机教程



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭