找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18|回复: 0
收起左侧

双字节二进制无符号数除法的疑问

[复制链接]
ID:72088 发表于 2026-2-26 18:13 | 显示全部楼层 |阅读模式
入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节

DIVD: CLR C ;比较被除数和除数
        MOV A,R3
        SUBB A,R7
        MOV A,R2
        SUBB A,R6
        JC DVD1
        SETB OV ;溢出
        RET
DVD1: MOV B,#10H ;计算双字节商
DVD2: CLR C ;部分商和余数同时左移一位
        MOV A,R5
        RLC A
        MOV R5,A
        MOV A,R4
        RLC A
        MOV R4,A
        MOV A,R3
        RLC A
        MOV R3,A
        XCH A,R2
        RLC A
        XCH A,R2
        MOV F0,C ;保存溢出位
        CLR C
        SUBB A,R7 ;计算(R2R3-R6R7)
        MOV R1,A
        MOV A,R2
        SUBB A,R6
        ANL C,/F0 ;结果判断
        JC DVD3
        MOV R2,A ;够减,存放新的余数
        MOV A,R1
        MOV R3,A
        INC R5 ;商的低位置一
DVD3: DJNZ B,DVD2 ;计算完十六位商(R4R5)
        MOV A,R4 ;将商移到R2R3中
        MOV R2,A
        MOV A,R5
        MOV R3,A
        CLR OV ;设立成功标志
        RET
被除数这里是4位,为啥只比较R2/R3的值,和除数
4位被除数哪个是低位,如果只有两位被除数咋办,R4R5是低位吗?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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