用软件实现DAA的方法.doc

用软件实现DAA的方法.doc

ID:28109944

大小:28.00 KB

页数:6页

时间:2018-12-08

用软件实现DAA的方法.doc_第1页
用软件实现DAA的方法.doc_第2页
用软件实现DAA的方法.doc_第3页
用软件实现DAA的方法.doc_第4页
用软件实现DAA的方法.doc_第5页
资源描述:

《用软件实现DAA的方法.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、用软件实现DAA的方法  本文重点介绍用软件实现DAA的方法。  计算机采用的十进制操作数一般都为压缩型8421BCD码,每个BCD码表示1位十进制数。每2位BCD码共存于同一字节单元中,故BCD运算涉及状态寄存器SREG的进位C(第0位)和半进位H(第5位)。它们分别为高、低位BCD的进(借)位。在进行BCD码加减运算时,计算机是按二进制数对待的,因此会产生与十进制运算规则不相符合的情况:一是当产生进(借)位(C=1或H=1)时,该进(借)位等于16(对所涉及的1位BCD码而言),而在十进制运算中应等于10;二是可能产生非法BCD码(值大于9)。软件DAA即为纠正以上错误而设的。  

2、  1软件DAA的实现方法  1.1实现加法DAA功能子程序ADAA和ADAA1的设计方法  经实践考查,BCD码加法运算,可产生以下3种情况:  ①不须调整,特点是既不产生进位,也不产生非法BCD码。如$22+$11=$33。  ②产生非法BCD码,必须加6调整。特点是BCD码相加后不产生进位,但加6调整后产生进位。如  $36+$37=$6D(产生非法BCD),加6调整后变为$73(产生半进位H)。$68+$87=$EF,加$66调整后变为$155(产生进位C和半进位H)等。  ③产生进位,必须加6调整。特点是BCD码相加只产生进位,不会同时产生非法BCD码;而加6调整后既不会再产

3、生进位/半进位(而是清除了原来的进位/半进位),也不会产生非法BCD码。例:  $99+$88=$121,进位C和半进H位都置位,故加$66来调整:$21+$66=$87,并要恢复进位C。  综合以上3种情况,得出下面加法DAA之实现方法:首先保存BCD码相加后的状态寄存器SREG(保存其中的进位C和半进位H,称为Co和Ho)。再将BCD码之和加上$66,产生出新的进位Cn及半进位Hn。若Co、Cn中有1个置位(只能有1个!),说明高位BCD满足调整条件并调整完毕,否则为不够调整条件,应减$60恢复;若Ho、Hn中有1个(只能有1个!)置位,说明低位BCD满足调整条件并调整完毕,否则为

4、不够调整条件,应减6恢复。程序中是将新、旧进位和半进位对应”或”起来,只对”或”结果进行判断。注意,软件DAA功能既要保证本字节压缩BCD码相加值的正确性,又要保证对高位BCD产生进位的正确性,故要将Co∨Cn的结果返还给SREG,以使下一步能正确实现高位BCD带进位加。  ADAA为BCD码相加调整子程序,使用寄存器R20作为工作单元(使用R22、R11、R10等3个寄存器作为辅助工作单元),所有调整工作都在此单元内进行。  ADAA1为数制转换程序中实现BCD码左移调整的子程序,为加法DAA之特例:它在R20工作单元内实施BCD码带进位位自加并完成对和的调整。  1.2实现减法DA

5、A功能子程序SDAA的设计方法  由实践可知,减法DAA要比加法来得简单:只须对产生借位的BCD码进行调整。BCD码减法运算,只有以下2种情况:  ①不产生借位,不须调整,如$22-$11=$11。  ②产生借位,此时不论有否非法BCD码产生,一律对产生借位的BCD码加$A调整。但AVR单片机没有加字节型立即数指令,改为减6调整,要注意加原和减补对进位的影响是相反的。为保证多字节压缩BCD码运算的正确性,若调整后清除了借位C,必须将其恢复。例如$22-$54=$CE,因C、H皆置位,用减去$66来调整$CE-$66=$68,调整后清除了借位C,故子程序中还要加SEC指令来恢复借位C。 

6、 注:MCS-51单片机减法DAA子程序很容易按此移植(半进位为AC)。  1.3实现右移DAA功能子程序RDAA的设计方法  见”3定点数制转换子程序”中对BCD码右移调整的说明。    2定点运算子程序  (1)多字节压缩BCD码加法子程序ADBCD  加法在寄存器内直接完成,以R20为DAA工作单元。BCD码相加后,将和送到R20,调用ADAA子程序,实现对和的调整(返回主程序后再回送调整结果)。  (2)多字节压缩BCD码减法子程序SUBCD  减法在寄存器内直接完成,以R20为DAA工作单元。BCD码相减后,将差送至R20,调用SDAA子程序,实现对差的调整(返回主程序后再回

7、送调整结果)。  (3)乘法子程序MUL16  操作:(R13,R12)&TImes;(R15,R14)→R17,R16,R15,R14  采用字乘字无符号数运算。采取逐次右移部分积和乘数,当乘数移出位等于1时将被乘数加入部分积的方法完成计算。可视为16位整数&TImes;16位整数→32位整数,也可视为16位整数&TImes;16位小数→16位整数,或视为16位小数&TImes;16位小数→32位小数。可加上舍入处理。  (4)除法子程序DI

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

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

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