汇编除法指令溢出错误,汇编高手帮帮忙

汇编除法原理
汇编除法原理
多字节二进制除法算法
二进制的除法本质是通过重复减法运算实现
即通过重复”从被除数的高位依次取出每一位,
被取出的数据加上上次的减法结果*2,
然后减去除数”的处理, 求出除法结果
假设:16位除以16位
被除数&&& R0R1
(占用2字节)
除数&&&&&&&
R2R3 (占用2字节)
商&&&&&&&&&&&&
(占用2字节)&&&&
******************* 这里需要说明, 此程序执行
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
结束以后, 商的结果保存在被除数中 ************
R4R5&& (占用2字节)
移位次数 R6
(占用1字节)&&&
******************* 这里需要说明, 其数值根据
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
被除数的位数定义,
这里为32&&&&&
*************
操作流程如下:
a) 余数清零
b) 判断除数是否为0, 如果为0, 是错误, 不再往下执行.
c) 设定移位次数
d) 被除数左移1位, 溢出的最高位保存在进位标志C中, 再把余数左移1位, 把C(被除数溢出的最高位)放入余数的最低位
e) 余数与除数比较大小(余数减去除数):
余数 ≧ 除数(减法结果为正)时, 被除数的最低位, 赋值 1
余数 & 除数(减法结果为负时, 恢复到减法前的余数) 被除数的最低位, 赋值 0
f) 定移位次数递减
g) 直到移位次数为0, 否则重复d) ~ f)
假设32位除以16位
被除数R3R2R1R0
商也在R3R2R1R0中
计算开始的时候R7R6R3R2R1R0整体左移一位
然后余数R7R6与除数比较 如果大于除数 则r0最低位置一
依次循环32次
其他的多位除法类似
但是余数位数和除数位数要一致
; (r3r2r1r0) / (r5r4),
余数(r7r6)
div_4b: mov r7,#0
mov cnt,#32
div_32_loop: mov
jc div_4b_1
div_32: cpl c
djnz count,div_32_loop
汇编语言的16位除法子程序
应邀写个汇编语言的除法子程序。
编写除法子程序,有两种算法,移位相减的方法和循环相减的方法。
移位相减的方法是仿照人们做除法的竖式编写,执行速度较快,但是计算的原理,一般人不好理解,难以让大家推广到更多的字节。故此下面采用循环相减的思路来编写程序。
设计思路:所谓除法,就是要求出在被除数中,含有多少个除数。那么就用被除数连续的减去除数,直到不够减为止,够减的次数,就是商,不够减的数值,就是余数。
比如:8/3,就是
第1次:8-3=5
第2次:5-3=2
2不够减3了,故8/3=2余2
下列程序,对数值范围的要求很宽松,被除数、除数和商,都可以是16位数,这比网上常见的16位除8位的除法程序,适用面要广得多。
注意,除数为0的问题,应该在主程序中进行检测。
;-------------------------------------
;16位/16位的子程序
;被除数:R2R3、除数:R4R5;商:DPTR、余数:R2R3。
;占用:A、B。
;-------------------------------------
R23DIVR45:
MOV&& DPTR, #0
MOV&& A, R3
&&& SUBB A,
MOV&& B, A
MOV&& A, R2
&&& SUBB A,
R4&&&&&&&&&&&&
;R2R3-R4R5
JC&& DIV_E
&&&&&&&&&;有借位转移
INC&& DPTR
MOV&& R3, B
MOV&& R2, A
RET&&&&&&&&&&&&&&&&&&&&&&;不够减就结束
;-------------------------------------
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
汇编除法原理
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口&&&&8086汇编判断闰年,解决除法溢出
&8086汇编判断闰年,解决除法溢出
8086汇编两个例子,判断闰年和解决除法溢出程序,初学者必看
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
8086汇编判断闰年,解决除法溢出
所需积分:1
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
8086汇编判断闰年,解决除法溢出
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员如何用汇编编一个多位十进制数相除? - 维库电子市场网
如何用汇编编一个多位十进制数相除?
作者:aily0817 栏目:
如何用汇编编一个多位十进制数相除?如何用汇编编一个多位十进制数相除,(带小数位)&&如 T=U/V,其中U=0.0018274,V=0.12 如何用汇编求得T? 请各为单片机编程高手帮帮忙!!!!!!!谢谢!
作者: 宇宙飞船 于
15:50:00 发布:
可用定点或浮点!不过您得首先选择以下的其中一个答案。请问您努力学习单片机的最终愿望是做什么?有四个答案可选:A.为了养家糊口 B.想混日子 C.这行很有前途 D.毕生愿望
作者: 李冬发 于
18:04:00 发布:
十进制,没有必要吧,来个8节2进制的满大街都有&
作者: 宇宙飞船 于
13:34:00 发布:
少答了一个答案,猜得出来是我想要的是哪个答案吗?&&您末答中我想要的答案,我也只能给出一个定点算法的思路提示:&&(定点就是把小数点固定:把U 扩大10^7后做多字节除法)。&&用浮点实现起来就很容易,不过所需的内部资源的比较大的,在网上有很多现成的资料。在GOOGLE 找就得了。
作者: Herowa 于
14:10:00 发布:
我帮不上忙我觉得楼主既然选了D,应该用C来写程序。
作者: hangqun 于
15:16:00 发布:
数据模型+数据结构宇宙飞船已经告诉你了
作者: aily0817 于
17:23:00 发布:
to 宇宙飞船to 宇宙飞船我才尼的答案是C吧!谢谢你提供的思路!
作者: aily0817 于
16:21:00 发布:
各位高手帮忙还有其他高手能给用51汇编编多位十进制相除的程序。谢谢了
作者: nongcunren 于
16:51:00 发布:
会十进制竖式出发吧,把除用减法作就可以了!&
作者: aily0817 于
17:52:00 发布:
to&&nongcunren拔除用作减法可以,但是减法操作不可以化十进制亚&&怎么办?请赐教,谢谢!
作者: Knight8 于
17:56:00 发布:
我也来选一票吧!我选:A.为了养家糊口遗憾的是我至今未能实现这个愿望!
作者: gbchang 于
18:01:00 发布:
我的想法:十进制TO二进制然后多位二进制除法,小数点另算。&
讨论内容:
Copyright &
浙ICP证030469号

我要回帖

更多关于 汇编除法指令 的文章

 

随机推荐