一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 2542|回复: 9

[其他综合] 哪位有经过验证的 双字节的除法汇编程序?

[复制链接]
发表于 2012-10-21 18:57 | 显示全部楼层 |阅读模式
本帖最后由 老弹弓 于 2012-10-21 18:58 编辑

网上找了一个 ,在特定的数字时会出错。
;****************************************************
;* 四字节/两字节无符号数除法程序 *
;****************************************************
;  R7R6R5R4 / R3R2 = R7R6R5R4(商)  ...R1R0  (余数)
;
DIV4BY2:      
               MOV       46H, #20H
               MOV       R0 , #00H
               MOV       R1 , #00H
DIVLOOP1:  
               MOV       A  , R4
               RLC    A
               MOV   R4 , A
               MOV   A  , R5
               RLC    A
               MOV   R5 , A
               MOV   A  , R6
               RLC    A
               MOV   R6 , A
               MOV   A  , R7
               RLC    A
               MOV   R7 , A
               MOV   A  , R0
               RLC    A
               MOV   R0 , A
               MOV   A  , R1
               RLC    A
               MOV   R1 , A
               CLR   C  
               MOV   A  , R0
               SUBB  A  , R2
               MOV   B  , A
               MOV   A  , R1
               SUBB  A  , R3
               JC      DIVLOOP2                       
               MOV   R0 , B
               MOV   R1 , A
DIVLOOP2:      
               CPL   C
               DJNZ 46H, DIVLOOP1
               MOV   A  , R4
               RLC   A
               MOV   R4 , A
               MOV   A  , R5
               RLC   A
               MOV   R5 , A
               MOV   A  , R6
               RLC   A
               MOV   R6 , A
               MOV   A  , R7
               RLC   A
               MOV   R7 , A

               ret
发表于 2012-10-21 19:44 | 显示全部楼层
原理大概是分子分母同时除以2即右移一位,然后比较移位后分子分目的关系
回复

使用道具 举报

 楼主| 发表于 2012-10-21 19:53 | 显示全部楼层
原理看的差不多了, 不过程序差一点就不行了,不想再费事从头写了,干脆找个经过验证的读懂就可以了。
回复

使用道具 举报

发表于 2012-10-21 21:34 | 显示全部楼层
k可以用的:

;**************************************************** "
;* 四字节/两字节无符号数除法程序 *
;****************************************************  
;  R4R5R6R7 / R2R3 = R4R5R6R7(商)  ...R2R3  (余数)

;=================================================
DIV4B:
                   CLR   A
                   MOV   R1,A
                   MOV   R0,A
                   CJNE  R0,#00H,DIV4B_1
                   CJNE  R1,#00H,DIV4B_2
                   CJNE  R2,#00H,DIV4B_3
                   MOV   A,R4
                   MOV   B,R3
                   DIV   AB
                   XCH   A,R7
                   XCH   A,R6
                   XCH   A,R5
                   MOV   R4,A
                   MOV   A,B
                   XCH   A,R3
                   MOV   R1,A
                   MOV   R0,#18H
DIV4B_A:           MOV   A,R7
                   ADD   A,R7
                   MOV   R7,A
                   MOV   A,R6
                   RLC   A
                   MOV   R6,A
                   MOV   A,R5
                   RLC   A
                   MOV   R5,A
                   MOV   A,R4
                   RLC   A
                   MOV   R4,A
                   MOV   A,R3
                   RLC   A
                   MOV   R3,A
                   JBC   CY,DIV4B_B
                   SUBB  A,R1
                   JC    DIV4B_C
DIV4B_B:           MOV   A,R3
                   SUBB  A,R1
                   MOV   R3,A
                   INC   R7
DIV4B_C:           DJNZ  R0,DIV4B_A
                   CLR   A
                   MOV   R1,A
                   MOV   R2,A
                   RET
;=================================================
DIV4B_1:           MOV   B,#08H
                   MOV   DPL,#00H
DIV4B_11:          MOV   A,R7
                   ADD   A,R7
                   MOV   R7,A
                   MOV   A,R6
                   RLC   A
                   MOV   R6,A
                   XCH   A,R5
                   RLC   A
                   XCH   A,R5
                   XCH   A,R4
                   RLC   A
                   XCH   A,R4
                   XCH   A,DPL
                   RLC   A
                   XCH   A,DPL
                   SUBB  A,R3
                   MOV   A,R5
                   SUBB  A,R2
                   MOV   A,R4
                   SUBB  A,R1
                   MOV   A,DPL
                   SUBB  A,R0
                   JC    DIV4B_12
                   MOV   DPL,A
                   MOV   A,R6
                   SUBB  A,R3
                   MOV   R6,A
                   MOV   A,R5
                   SUBB  A,R2
                   MOV   R5,A
                   MOV   A,R4
                   SUBB  A,R1
                   MOV   R4,A
                   INC   R7
DIV4B_12:          DJNZ  B,DIV4B_11
                   CLR   A
                   XCH   A,R6
                   MOV   R3,A
                   CLR   A
                   XCH   A,R5
                   MOV   R2,A
                   CLR   A
                   XCH   A,R4
                   MOV   R1,A
                   MOV   R0,DPL
                   RET
;================================================
DIV4B_2:           MOV   B,#10H
DIV4B_21:          MOV   A,R7
                   ADD   A,R7
                   MOV   R7,A
                   MOV   A,R6
                   RLC   A
                   MOV   R6,A
                   MOV   A,R5
                   RLC   A
                   MOV   R5,A
                   XCH   A,R4
                   RLC   A
                   XCH   A,R4
                   XCH   A,R0
                   RLC   A
                   XCH   A,R0
                   JBC   CY,DIV4B_22
                   SUBB  A,R3
                   MOV   A,R4
                   SUBB  A,R2
                   MOV   A,R0
                   SUBB  A,R1
                   JC    DIV4B_23
DIV4B_22:          MOV   A,R5
                   SUBB  A,R3
                   MOV   R5,A
                   MOV   A,R4
                   SUBB  A,R2
                   MOV   R4,A
                   MOV   A,R0
                   SUBB  A,R1
                   MOV   R0,A
                   INC   R7
DIV4B_23:          DJNZ  B,DIV4B_21
                   CLR   A
                   XCH   A,R5
                   MOV   R3,A
                   CLR   A
                   XCH   A,R4
                   MOV   R2,A
                   CLR   A
                   XCH   A,R0
                   MOV   R1,A
                   RET
;================================================
DIV4B_3:           MOV   R0,#18H
DIV4B_31:          MOV   A,R7
                   ADD   A,R7
                   MOV   R7,A
                   MOV   A,R6
                   RLC   A
                   MOV   R6,A
                   MOV   A,R5
                   RLC   A
                   MOV   R5,A
                   MOV   A,R4
                   RLC   A
                   MOV   R4,A
                   XCH   A,R1
                   RLC   A
                   XCH   A,R1
                   JBC   CY,DIV4B_32
                   SUBB  A,R3
                   MOV   A,R1
                   SUBB  A,R2
                   JC    DIV4B_33
DIV4B_32:          MOV   A,R4
                   SUBB  A,R3
                   MOV   R4,A
                   MOV   A,R1
                   SUBB  A,R2
                   MOV   R1,A
                   INC   R7
DIV4B_33:          DJNZ  R0,DIV4B_31
                   CLR   A
                   XCH   A,R1
                   MOV   R2,A
                   CLR   A
                   XCH   A,R4
                   MOV   R3,A
                   RET
回复

使用道具 举报

发表于 2012-10-21 21:35 | 显示全部楼层
DIV4B
是作为子程序,来调用的
回复

使用道具 举报

发表于 2012-10-21 21:37 | 显示全部楼层
注意我的赋值,高低字节跟你是刚好相反
回复

使用道具 举报

发表于 2012-10-21 22:06 | 显示全部楼层
还真没这样用过
回复

使用道具 举报

 楼主| 发表于 2012-10-21 23:41 | 显示全部楼层
谢谢 明白 网友  !  慢慢拜读 ,虽然是抄别人的程序 也要弄懂了才觉得踏实。
回复

使用道具 举报

发表于 2012-10-29 04:22 | 显示全部楼层
自己在有显示界面的开发板上试验下就知道行不行了
回复

使用道具 举报

 楼主| 发表于 2012-10-29 12:51 | 显示全部楼层
自己在有显示界面的开发板上试验下就知道行不行了
收音机 发表于 2012-10-29 04:22 https://www.yleee.com.cn/images/common/back.gif



    有的不行,不是所有的数不行,只是特定的数不行,比如我贴的那个,在除数高字节大于被除数第四字节时就出错, 所以有板子也不是那么容易验证。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-4 00:54 , Processed in 0.035258 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表