基于单片机汇编语言的通用多字节无符号数除法的改进

基于单片机汇编语言的通用多字节无符号数除法的改进

ID:41695713

大小:104.55 KB

页数:14页

时间:2019-08-30

基于单片机汇编语言的通用多字节无符号数除法的改进_第1页
基于单片机汇编语言的通用多字节无符号数除法的改进_第2页
基于单片机汇编语言的通用多字节无符号数除法的改进_第3页
基于单片机汇编语言的通用多字节无符号数除法的改进_第4页
基于单片机汇编语言的通用多字节无符号数除法的改进_第5页
资源描述:

《基于单片机汇编语言的通用多字节无符号数除法的改进》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、还比衣林哥枚大学科研训练论文题目:基于单片机汇编语言的通用多字节无符号数除法的改进名:专业:机械电子工程班级:机电学号:院(系):机电学院指导教师:完成日期:成绩:摘要目录(1)1目前常用的单片机多字节除法运算方法及其局限性(1)2除数为小于被除数的任意长度除法的单片机算法原理(5)3程序流程图、汇编语言的实现及测试结果(6)3o1程序流程图及汇编语言的实现(7)3o2测试结果(12)(12)4结论摘要:论述一种在8051系列单片机上实现的高可靠多字节除法运算的改进型算法,该算法通过改进传统的“

2、移位-相减”算法,克服了常用的多字节无符号除法的局限性,可以针对任意长度的除数且不会发生商溢岀。经实验得到计算结果准确无误,该算法具有算法简单、适应性强、高度可靠等优点,具有很强的实用性。单片微型计算机的应用越来越广泛,它不仅应用在各种控制上,有时也用来做数据处理运算。现在应用广泛的51系列单片机具有强大的运算能力,可以直接选用算术运算指令完成单字节(8位)数据运算。同时,它的进位(借位)标志为无符号整数算术运算提供了方便。目前有关数据处理运算的资料比较多,然而笔者在参考关于多字节无符号数据整数

3、除法的资料时发现,目前资料所介绍的有关程序应用范围非常小,应用时受除数长度限制比较大。而在实际应用中,除法运算非常重要,甚至有时候要求必须快速地进行除法运算,这就要求写的除法程序力求高效、快速。本文巧妙地利用“移位-相减”法,以51系列单片机为例,设计了除数不受字节长度限制的单片机除法运算算法。该算法还可以根据实际需要扩充为位数更高的多字节除数算法,也可以移植到其它的单片机平台上。1目前常用的单片机多字节除法运算方法及其局限性目前,单片机多字节除法运算要求被除数为除数的双倍字长,否则除法运算就不

4、能执行。当被除数是除数的双倍字长时,首先比较被除数的高位字与除数的大小,如果出现被除数的高位字大于、等于除数,则认为是商溢出,置位溢出标志不执行除法操作。如果这些条件都成立,再采用一系列相减和移位操作来执行除法运算,每“移位-相减”一次求得一位商,当余数够减时得商I,不够减时得商0,循环此步骤直到被除数的所有位都处理完为止。根据上述算法,设被除数为(R2R3R4R5),除数为(R6R7),商存于R4R5中,余数存于R2R3中。相应的程序流程图如图1所示。(除法)移位次数I—寄<7器BOY(R2R

5、3R4R5C)左移一位C—FO(ARl)fR2R3上商l,(R5)-1fR5OfFO图1传统多字节除法流程图被除数(R2R3R4R5)的长度是4个字节时,如果除数的长度是2位的,而且被除数高位(R2R3)与除数(R6R7)比较,如果前者小于后者,这个程序可以得到正确的答案。如果除数是3位或者被除数的高位(R2R3)大于除数(R6R7)这个程序没有办法得到运算所得的商。因此,如果被除数是4位字节长,而除数是3位或者4位时,就无法应用这个程序来进行除法操作。2除数为小于被除数的任意长度除法的单片机算

6、法原理在实际运用中,参与运算的数是任意的,有时需要求出余数,有时商数要求有4个字节,从上面的叙述可以发现,以前的算法在实际应用中受到了很大的限制。因此,笔者针对以上情况,在传统的算法基础上设计了一套新的算法,克服了上述算法中的缺点,可以适合广泛的实际需要。下面以MCS251汇编语言进行4字节长的除法为例进行说明:1)准备一个字节(8位)的空单元,这个空单元是最后用来存储余数最高8位的对应单元。2)计算被除数字长和除数字长之差,得到的值加1然后把得到的和乘以&保存得到的积作为移位次数。例如,如果被

7、除数是4个字节,除数是2个字节的,((4-2)+1)X8二18H,需要移位24次。3)判断除数最高字节是否为0,如果为0,则除数作为整体左移1个字节(8位),直到除数最高位不为0,把除数变成与被除数一样长度。如果除数为0,置位溢出位,不执行除法运算。4)把被除数从高位到低位一位一位地移入之前准备的空单元,以这个空单元为最高位与被除数组成一个被减数,然后采用“移位-相减”法,完成除法运算。5)所得结果存储在连续的5个存储单元里面,高位是余数的低位,低位是商的低位,余数的长度与除数的长度是一样的,如

8、果除数的长度是4个字节,则这5个存储单元中的高4位是S余数,最低位是商,如果除数的长度是3个字节,那么这5个存储单元中的高3位是余数,低2位是商,如此类推。3程序流程图、汇编语言的实现及测试结果3O1程序流程图及汇编语言的实现在研制单片机应用系统时大多采用汇编语言作为软件工具,本文所用的例子均为汇编语言编写。被除数是4字节长的除法算法流程图如图2,程序如下:MOVB,#08HCJNERO,#00H,DVDLMOVB,#10HCLRAXCHA,R3XCHA,R2XCHA,R1XCHA,ROCJNE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。