登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

哪位大哥有四字节除以单字节二进制无符号除法子程序,兄弟急用

作者:lh9865 栏目:单片机
哪位大哥有四字节除以单字节二进制无符号除法子程序,兄弟急用
用单片机汇编语言编写运算程序可真的麻烦亚,没办法,还就得运算,
请问哪位大哥有四字节除以单字节二进制无符号除法子程序,兄弟急用,是汇编语言编写的,对了我用的是AT89C52

2楼: >>参与讨论
javie
我有PIC的
不过这个你最好用C来写啊

3楼: >>参与讨论
sfofyyy
我有EMC的
 
4楼: >>参与讨论
lg3459
我有3字节除1字节的
 
5楼: >>参与讨论
javie
看,大家都多热心啊
 
6楼: >>参与讨论
lh9865
那你能给我看看吗? lg3459兄弟,
 
7楼: >>参与讨论
lg3459
k三字节二进制无符号数除以单字节二进制数
入口条件:被除数在R3、R4、R5中,除数在R7中。
出口信息:OV=0 时,双字节商在R4、R5中,OV=1 时溢出。
影响资源:PSW、A、B、R2~R7    堆栈需求:  2字节

DV31:    CLR     C
    MOV    A,R3
    SUBB    A,R7
    JC         DV30
    SETB    OV    ;商溢出
    RET
DV30:    MOV    R2,#10H    ;求R3R4R5/R7-→R4R5
DM23:    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
    MOV    F0,C
    CLR     C
    SUBB    A,R7
    ANL         C,/F0
    JC       DM24
    MOV    R3,A
    INC       R5
DM24:    DJNZ    R2,DM23
    MOV    A,R3    ;四舍五入
    ADD     A,R3
    JC         DM25
    SUBB    A,R7
    JC         DM26
DM25:    INC       R5
    MOV    A,R5
    JNZ      DM26
         INC    R4
DM26:    CLR     OV
    RET             ;商在R4R5中


8楼: >>参与讨论
javie
给你个多字节无符号除法的流程
 
功能:实现多字节无符号数除法


                  开始
                    |
             循环次数=字节数*8
                    |
                 余数清0
                    |
          被除数不带进位左移1位
                    |
            余数带进位左移1位
                    |------------------
    ____N____<余数大于除数吗?>       |
    |               |                 |
进位标志清0         |Y                |
    |          余数=余数-除数         |
    |               |                 |
    |          置位进位标志           |
    |               |                 |
    |——————— |                 |
            被除数带进位左移1位       |
                    |                 |
             余数带进位左移1位        |
                    |                 |
             〈循环结束?〉---N--------
                    |Y
             整理出口并返回
   


9楼: >>参与讨论
javie
累死我了
早知道打这个这么麻烦,我就贴图了

10楼: >>参与讨论
zhf0964
送你一个现成的
divdll    data    20h        ;定义被除数单元
divdlh    data    21h
divdhl    data    22h
dlvdhh    data    23h
divl        data    24h        ;定义除数单元
divh        data    25h
templ    data    26h        ;定义余数单元
temph    data    27h

divd:    PUSH        acc
        PUSH        b
    mov    a,divdh    ;判除数是否为零
    orl    a,divl
    jnz    divd0
    setb    ov        ;除数为零,置溢出标志
    pop    b
    pop    acc
    ret
divd0:    mov    templ,#00h    ;除数不为零,进行运算
    mov    temph,#00h
    mov    b,#20h        ;置循环次数
divd1:clr    c            ;进位位、余数单元和
    mov    a,divdll        ;被除数单元全体逐个
    rlc    a            ;向左循环移位
    mov    divdll,a
    mov    a,divdlh
    rlc    a
    mov    divdlh,a
    mov    a,divdhl
    rlc    a
    mov    divdhl,a
    mov    a,divdhh
    rlc    a
mov    divdhh,a
mov    a,templ
rlc    a
mov    templ,a
xch    a,temph
rlc    a
xch    a,temph
mov    f0,c            ;保存进位位
clr    c
subb    a,divl        ;用余数减去除数
mov    r7,a
mov    a,temph
subb    a,divh
anl    c,/f0            ;判断是否够减
jc    divd2        ;不够减,移下一位
mov    templ,r7        ;够减,刷新余数单元
mov    temph,a
inc    divdll        ;商上1
divd2:    djnz    b,divd1
    clr    ov
    pop    b
    pop    acc
    ret


11楼: >>参与讨论
lh9865
多谢各位的大力相助亚,兄弟谢过了
 
12楼: >>参与讨论
lh9865
我看过这些程序了,不过我觉得我还是很需要四字节的
程序我看过了,有些明白,有些不是明白,我以前没有用过算术子程序,有点手忙脚乱了,我还是很希望能够有一个四字节除以单字节的汇编程序,真的有些很是着急啊

13楼: >>参与讨论
javie
这年头还是好人多啊
呵呵

14楼: >>参与讨论
zhf0964
我给你是4字节除以2字节的
只要把除数高字节设为0就满足你的要求了。

15楼: >>参与讨论
lh9865
我看到了,只是得到的商是两个字节的,我的除数是固定的
 
16楼: >>参与讨论
lh9865
除数是50,我担心商如果是两个字节的话,会溢出的
我看到你给我的程序了,只是好像得到的商事俩个字节的,而我的除数是50,我担心商如果是两个字节的话,会溢出的,事实上,我所用的被除数是个四字节的数,除以50后,我想得到的应该是四字节的商,所以我觉得上面的那个程序不是太好用,请大虾给我指点迷津亚

17楼: >>参与讨论
zhf0964
你再看看清楚
我给你的商是4个字节的,余数是2个字节的。
商是放在被除数单元里的,为了方便做连除运算。

18楼: >>参与讨论
lh9865
不好意思,我是菜鸟,初学者
不好意思,我是个菜鸟,以后真的多多努力,还希望这位大虾能够多多帮助亚,能不能交个朋友呀,以后我有什么问题就可以直接向你请教了
我的qq号:7362408 信箱:lh9865@sohu.com

19楼: >>参与讨论
???
xch    a,temph
rlc    a
xch    a,temph
有点不明天啊,为什么到这里就用XCH了(指第一行的XCH),我不是特别懂,请指教
参与讨论
昵称:
讨论内容:
 
 
相关帖子
请问:怎样把单片机内的程序读取出来?
51单片机能检测的最小电压?
zilog1974 请进
PDIUSBD12这样是不是很浪费?
关于中文字符ASCI码提取问题:)
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号