|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
哪位大哥有四字节除以单字节二进制无符号除法子程序,兄弟急用 |
作者:lh9865 栏目:单片机 |
用单片机汇编语言编写运算程序可真的麻烦亚,没办法,还就得运算, 请问哪位大哥有四字节除以单字节二进制无符号除法子程序,兄弟急用,是汇编语言编写的,对了我用的是AT89C52 |
2楼: | >>参与讨论 |
作者: javie 于 2005/11/15 11:24:00 发布:
我有PIC的 不过这个你最好用C来写啊 |
3楼: | >>参与讨论 |
作者: sfofyyy 于 2005/11/15 11:30:00 发布:
我有EMC的 |
4楼: | >>参与讨论 |
作者: lg3459 于 2005/11/15 12:23:00 发布:
我有3字节除1字节的 |
5楼: | >>参与讨论 |
作者: javie 于 2005/11/15 12:40:00 发布:
看,大家都多热心啊 |
6楼: | >>参与讨论 |
作者: lh9865 于 2005/11/15 13:43:00 发布:
那你能给我看看吗? lg3459兄弟, |
7楼: | >>参与讨论 |
作者: lg3459 于 2005/11/15 14:11:00 发布:
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 于 2005/11/15 14:32:00 发布:
给你个多字节无符号除法的流程 功能:实现多字节无符号数除法 开始 | 循环次数=字节数*8 | 余数清0 | 被除数不带进位左移1位 | 余数带进位左移1位 |------------------ ____N____<余数大于除数吗?> | | | | 进位标志清0 |Y | | 余数=余数-除数 | | | | | 置位进位标志 | | | | |——————— | | 被除数带进位左移1位 | | | 余数带进位左移1位 | | | 〈循环结束?〉---N-------- |Y 整理出口并返回 |
9楼: | >>参与讨论 |
作者: javie 于 2005/11/15 14:34:00 发布:
累死我了 早知道打这个这么麻烦,我就贴图了 |
10楼: | >>参与讨论 |
作者: zhf0964 于 2005/11/15 14:50:00 发布:
送你一个现成的 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 于 2005/11/15 14:55:00 发布:
多谢各位的大力相助亚,兄弟谢过了 |
12楼: | >>参与讨论 |
作者: lh9865 于 2005/11/15 15:09:00 发布:
我看过这些程序了,不过我觉得我还是很需要四字节的 程序我看过了,有些明白,有些不是明白,我以前没有用过算术子程序,有点手忙脚乱了,我还是很希望能够有一个四字节除以单字节的汇编程序,真的有些很是着急啊 |
13楼: | >>参与讨论 |
作者: javie 于 2005/11/15 15:10:00 发布:
这年头还是好人多啊 呵呵 |
14楼: | >>参与讨论 |
作者: zhf0964 于 2005/11/15 15:13:00 发布:
我给你是4字节除以2字节的 只要把除数高字节设为0就满足你的要求了。 |
15楼: | >>参与讨论 |
作者: lh9865 于 2005/11/15 15:17:00 发布:
我看到了,只是得到的商是两个字节的,我的除数是固定的 |
16楼: | >>参与讨论 |
作者: lh9865 于 2005/11/15 15:22:00 发布:
除数是50,我担心商如果是两个字节的话,会溢出的 我看到你给我的程序了,只是好像得到的商事俩个字节的,而我的除数是50,我担心商如果是两个字节的话,会溢出的,事实上,我所用的被除数是个四字节的数,除以50后,我想得到的应该是四字节的商,所以我觉得上面的那个程序不是太好用,请大虾给我指点迷津亚 |
17楼: | >>参与讨论 |
作者: zhf0964 于 2005/11/15 15:31:00 发布:
你再看看清楚 我给你的商是4个字节的,余数是2个字节的。 商是放在被除数单元里的,为了方便做连除运算。 |
18楼: | >>参与讨论 |
作者: lh9865 于 2005/11/15 16:03:00 发布:
不好意思,我是菜鸟,初学者 不好意思,我是个菜鸟,以后真的多多努力,还希望这位大虾能够多多帮助亚,能不能交个朋友呀,以后我有什么问题就可以直接向你请教了 我的qq号:7362408 信箱:lh9865@sohu.com |
19楼: | >>参与讨论 |
作者: ??? 于 2009/7/9 11:47:05 发布:
xch a,temph rlc a xch a,temph 有点不明天啊,为什么到这里就用XCH了(指第一行的XCH),我不是特别懂,请指教 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |