bcd码运算的十进制调整指令

bcd码运算的十进制调整指令

ID:36284765

大小:422.81 KB

页数:12页

时间:2019-05-08

bcd码运算的十进制调整指令_第1页
bcd码运算的十进制调整指令_第2页
bcd码运算的十进制调整指令_第3页
bcd码运算的十进制调整指令_第4页
bcd码运算的十进制调整指令_第5页
资源描述:

《bcd码运算的十进制调整指令》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、BCD码运算的十进制调整指令专用于对BCD码运算的结果进行调整包括:AAA、DAA、AAS、DAS、AAM、AAD均为隐含寻址,隐含的操作数为AL和AH为何要对BCD码的运算结果进行调整?BCD码本质上是十进制数,即应遵循逢十进一的规则。而计算机是按二进制(十六进制)进行运算,并未按十进制规则进行运算。18088的调整指令主要用于十进制数的调整。这些指令包括:AAA:对AL中非压缩BCD码求和的结果进行调整。AAS:对AL中非压缩BCD码求差的结果进行调整。AAD:在实现十进制除法时,在除法指令前对AX用中非压缩BCD码表示的十进制数进行调整。AAM:在实现十进制乘法时,对AX中两个

2、非压缩BCD码相乘的结果进行调整。DAA:对AL中的两个压缩BCD码相加之和进行调整,得到用压缩BCD码表示的十进制和。DAS:对AL中的两个压缩BCD码相减之差进行调整,得到用压缩BCD码表示的十进制差。2加法的十进制调整指令非压缩BCD码加法调整AAA本指令对在AL中的由两个未组合的BCD码相加后的结果进行调正,得到一个正确的未组合的BCD码。AAA指令只影响AF和CF,其余标志无定义。AAA指令应紧跟在ADD或ADC指令之后。3AAA指令的操作如下:4如果AL的低4位>9∨AF=1,则:①AL←(AL)+6,(AH)←(AH)+1,AF←1②AL←((AL)∧0FH)③CF←A

3、F否则AL←(AL)∧0FH调整原理:先看一个例子计算8+900001000见右式+0000100100010001=11结果应为17,而计算机相加为11,原因在于运算过程中,如遇到低4位往高4位产生进位时(此时AF=1)是按逢十六进一的规则,但BCD码要求逢十进一,因此只要产生进位,个位就会少6,这就要进行加6调正。5这个1代表了16,而实际上仅应为10,即多进了6。实际上当低4位的结果>9(即A~F之间)时,也应进行加6调正(原因是逢十没有进位,故用加6的方法强行产生进位)。如对上例的结果进行加6:0001000111+0000011060000011117^00001111--

4、--------------------1000011116压缩BCD码加法调整DAA两个压缩BCD码相加结果在AL中,通过DAA调整得到一个正确的压缩BCD码.指令操作(调整方法):若AL的低4位>9∨AF=1则(AL)←(AL)+6,AF←1若AL的高4位>9∨CF=1则(AL)←(AL)+60H,CF←1除OF外,DAA指令影响所有其它标志。DAA指令应紧跟在ADD或ADC指令之后。7例:0100100048HMOVAL,48H+0111010074HMOVBL,74H10111100BCHADDAL,BL+0110011066HDAA100100010122H(进位)(进位)

5、执行ADD后,(AL)=BCH,高4位低4位均大于9,故DAA指令执行加66H调整,最后结果为:(AL)=22H,CF=1,AF=1893)乘法的十进制调正指令AAM对AX中由两个非压缩BCD码相乘的结果进行调整。调整操作为:(AL)/0AH,(AH)←商,(AL)←余数隐含的操作寄存器为AL和AH;AAM跟在MUL指令之后使用;影响标志位PF、SF、ZF,其它无定义;用AAM可实现≤99的二-十进制转换。10例1:按十进制乘法计算7×8=?程序段如下:MOVAL,07H;(AL)=07HMOVCL,08H;(CL)=08HMULCL;(AX)=0038HAAM;(AH)=05H,(

6、AL)=06H所得结果为非压缩的BCD码。例2:把3AH转换成等值的十进制数。MOVAL,3AH;58AAM;(AH)=05H,(AL)=08H114)除法的十进制调正指令AAD对非压缩BCD除法运算进行调整。调整操作为:(AL)←(AH)×0AH+(AL)AH←0隐含的操作寄存器为AH,AL;AAD要在DIV指令之前使用;影响标志位PF、SF、ZF,其它无定义;用AAD可实现≤99的十-二进制转换。12例1:按十进制除法计算55÷7=?程序段如下:MOVAX,0505H;(AX)=55BCDMOVCL,07H;(CL)=7AAD;(AX)=0037HDIVCL;(AH)=6,(AL

7、)=7所得结果为非压缩的BCD码(商7余6)。例2:把73转换成等值的二进制数。MOVAX,0703H;(AX)=73BCDAAD;(AX)=0049H

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

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

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