汇编语言课件十进制调整指令讲解

上传人:最**** 文档编号:116560118 上传时间:2019-11-16 格式:PPT 页数:24 大小:276.50KB
返回 下载 相关 举报
汇编语言课件十进制调整指令讲解_第1页
第1页 / 共24页
汇编语言课件十进制调整指令讲解_第2页
第2页 / 共24页
汇编语言课件十进制调整指令讲解_第3页
第3页 / 共24页
汇编语言课件十进制调整指令讲解_第4页
第4页 / 共24页
汇编语言课件十进制调整指令讲解_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《汇编语言课件十进制调整指令讲解》由会员分享,可在线阅读,更多相关《汇编语言课件十进制调整指令讲解(24页珍藏版)》请在金锄头文库上搜索。

1、4.2.3 十进制调整类指令 这组指令是在二进制数计算的基础上, 给予十进制数调整 , 得到十进制数的结果。计算机中常用8421码表示十进制数。 十进制数码所对应的8421码如表4 - 1所示。 表 4-1 8421码 在PC机里,表示十进制数的8421码可以用压缩的8421码和 非压缩的8421码两种格式来表示。压缩的8421码用4位二进制数 表示一个十进制数位。 非压缩的8421码用8位表示一个十进制数位, 8位中的低4位 表示8421码,而高4位则没有意义。 显然,数字的ASCII码是一种非压缩8421码。 因为数字的 ASCII码的高4位值为0011B,而低4位是以8421码表示的十进

2、制 数位, 这符合非压缩8421码高4位无意义的规定。 相应地PC机的十进制调整指令分为两组,下面分别加以说 明: 压缩的8421码调整指令: DAA(Decimal Adjust for Addition) 加法的十进制调整指令 DAS(Decimal Adjust for Subtraction)减法的十进制调整指令 ADD、 ADC以及SUB、 SSB指令只用于二进制数加、减法 , 是逢二进一,借一当二, 对连续的4位二进制数是逢十六进 一, 借一当十六。但压缩的8421码却是逢十进一,借一当十。 因此使用加、减法指令对8421码运算后,必须经调整才能得到 正确的结果。 非压缩的8421

3、码调整指令: AAA(ASCII Adjust for Addition)加法的ASCII调整指令 AAS(ASCII Adjust for Subtraction)减法的ASCII调整指令 AAM(ASCII Adjust for Multiplication)乘法的ASCII调整指令 AAD(ASCII Adjust for Division)除法的ASCII调整指令 这一组指令适用于数字ASCII的调整, 也适用于一般的非 压缩8421码的十进制调整。 十进制调整指令不能单独使用,必须与加、减、乘、除二 进制指令配合使用才能进行十进制调整。十进制调整指令形式 上均为零地址指令, 其操作对

4、象由AX寄存器隐含。 十进制调整指令十进制调整指令 80868086专门为完成十进制数运算而提供了一组十进制调专门为完成十进制数运算而提供了一组十进制调 整指令。进行十进制运算时,首先将十进制数据编码成为整指令。进行十进制运算时,首先将十进制数据编码成为 BCDBCD码。码。 压缩的压缩的BCDBCD码调整指令码调整指令 (1) DAA(1) DAA DAADAA是加法的十进制调整指令,它必须跟在是加法的十进制调整指令,它必须跟在ADDADD或或ADCADC指指 令之后使用令之后使用。 功能功能: :将存于将存于ALAL寄存器中的寄存器中的2 2位位BCDBCD码加法运算的结果调整码加法运算的

5、结果调整 为为2 2位压缩型十进制数,仍保留在位压缩型十进制数,仍保留在ALAL中。中。 ALAL寄存器中的运算结果在出现非法码寄存器中的运算结果在出现非法码(1010B(1010B1111B)1111B)或本或本 位向高位位向高位( (指指BCDBCD码码) )有进位有进位( (由由AF=1AF=1或或CF=1CF=1表示低位向高位表示低位向高位 或高位向更高位有进位或高位向更高位有进位) )时,由时,由DAADAA自动进行加自动进行加6 6调整。调整。 调整的方法如下: 若AF1或者(AL)的低4位是在AF之间,则(AL)加06H,且 自动置AF=1; 若CF=1或者(AL)的高4位是在A

6、F之间,则(AL)加60H,且自 动置CF=1 说明: 本条指令对PSW中的OF标志位无影响,但影响所有其他 条件标志。 例: ADD AL,BL DAA 如执行指令前,(AL)=28,(BL)=68 执行DAA指令时,因AF=1而做 (AL) (AL)+06 1001 0000 + 0000 0110 1001 0110 得(AL)=96,CF=0,AF=1结果正确。 0010 1000 0110 1000 AF=1 1001 0000 执行ADD指令后,(AL)=90,CF=0,AF=1 例: ADD AL,BL DAA 执行指令前,(AL)=55,(BL)=36 执行ADD指令后 010

7、1 0101 0011 0110 1000 1011 AF=0,但低4位出现非法码1011,加06 0000 0110 执行DAA指令时 1001 0001 高4位CF=0,且高4位无非法码,不调整 最后得(AL)=91,CF=0,AF=0结果正确 由于由于DAADAA指令只能对指令只能对ALAL中的结果进行调整,因此,中的结果进行调整,因此, 对于多字节的十进制加法,只能从低字节开始,逐个字节对于多字节的十进制加法,只能从低字节开始,逐个字节 地进行运算和调整。地进行运算和调整。 例如:设当前例如:设当前AX=6698AX=6698,BX=2877BX=2877,如要将这两个十如要将这两个十

8、 进制数相加,结果保留在进制数相加,结果保留在AXAX中,则需要用下列几条指令完中,则需要用下列几条指令完 成。成。 ADD ALADD AL,BL BL ;低字节相加低字节相加 DAA DAA ;低字节调整低字节调整 MOV CL MOV CL,ALAL MOV AL MOV AL,AHAH ADC AL ADC AL,BH BH ;高字节相加高字节相加 DAA DAA ;高字节调整高字节调整 MOV AH MOV AH,ALAL MOV AL MOV AL,CL CL (2) DAS(2) DAS DAS DAS是减法的十进制调整指令,它必须跟在是减法的十进制调整指令,它必须跟在SUBSU

9、B或或 SBBSBB指令之后,将指令之后,将ALAL寄存器中的减法运算结果调整为寄存器中的减法运算结果调整为2 2 位压缩型十进制数,仍保留在位压缩型十进制数,仍保留在ALAL中。中。 调整方法如下:调整方法如下: 若若AF=1AF=1或者或者( (AL)AL)的低的低4 4位是十六进制的位是十六进制的AF,AF,则使则使ALAL寄寄 存器的内容减去存器的内容减去0606HH,并将并将AFAF位置位置1 1。 若若CF=1CF=1或者或者( (AL)AL)的高的高4 4位是十六进制的位是十六进制的AF,AF,则使则使ALAL的的 内容减去内容减去6060HH,并将并将CFCF位置位置1 1。

10、DASDAS指令对指令对OFOF标志无定义,但影响所有其它条件标志标志无定义,但影响所有其它条件标志 。 例如:编写程序段,完成例如:编写程序段,完成1234-30991234-3099的操作。的操作。 分析:分析: 0011 0100 1001 1011 0011 0100 1001 1011 - 1001 1001 - 1001 1001 调整调整 - 0000 0110 - 0000 0110 AF=1AF=1调调 整整 1001 1011 1001 0101 1001 1011 1001 0101 CF=1CF=1,AF=1AF=1 1001 01011001 0101 - 0110

11、0000 CF=1 - 0110 0000 CF=1调调 整整 0011 0101 0011 0101 (十进制十进制 3535) CF=1 CF=1,AF=1AF=1 0001 0010 1110 0001 0001 0010 1110 0001 - -0011 0000 0011 0000 调整调整 -0110 0000 -0110 0000 - - 1 1000 0001 1 1000 0001(十进制(十进制8181) 1110 0001 1110 0001 CF=1CF=1,AF=0 CF=1AF=0 CF=1,AF=0 AF=0 所得结果为所得结果为 1234-3099=8135

12、1234-3099=8135,CF=1CF=1。 8135 8135为为-1865-1865的十进制补码,的十进制补码,CF=1CF=1表示有借位。表示有借位。 程序如下:程序如下: MOV DXMOV DX, 3099H 3099H MOV BX MOV BX, 1234H 1234H MOV AL MOV AL,BLBL SUB AL SUB AL,DLDL DAS DAS MOV CL MOV CL,ALAL MOV AL MOV AL,BHBH SBB AL SBB AL,DHDH DAS DAS MOV CH MOV CH,ALAL 非压缩的非压缩的BCDBCD码调整指令码调整指令

13、(3) AAA(3) AAA AAA AAA是加法的是加法的ASCIIASCII码调整指令码调整指令, ,也是只能跟在也是只能跟在ADDADD指令之指令之 后使用。其功能是将存于后使用。其功能是将存于ALAL寄存器中的寄存器中的1 1位位ASCIIASCII码数加法运码数加法运 算的结果调整为算的结果调整为1 1位非压缩型十进制数位非压缩型十进制数, , 仍保留在仍保留在ALAL中;如果中;如果 向高位有进位向高位有进位(AF=1)(AF=1),则进到,则进到AHAH中。因为数字中。因为数字0909的的ASCIIASCII 码是一种准非压缩码是一种准非压缩BCDBCD码(即低码(即低4 4位为

14、位为BCDBCD值,高值,高4 4位有数值位有数值 ,处理掉高,处理掉高4 4位的数值即为非压缩位的数值即为非压缩BCDBCD码)码) 调整过程与调整过程与DAADAA相似,其具体算法如下:相似,其具体算法如下: 若若ALAL的低的低4 4位是在位是在0 09 9之间,且之间,且AF=0AF=0,则跳过第,则跳过第步,执步,执 行第行第步。步。 若若ALAL的低的低4 4位是在位是在0AH0AH0FH0FH之间,或之间,或AF=1AF=1,则,则ALAL寄存器寄存器 需进行加需进行加6 6调整,调整,AHAH寄存器加寄存器加1 1,且使,且使AF=1AF=1。 清除清除ALAL的高的高4 4位。位。AFAF位的值送位的值送CFCF位。位。 (4) AAS(4) AAS AASAAS是减法的是减法的ASCIIASCII码调整指令码调整指令, ,它必须跟在它必须跟在SUBSUB或或 SBBSBB指令之后,用来将指令之后,用来将ALAL寄存器中的减法运算结果调整寄存器中的减法运算结果调整 为为1 1位非压缩型十进

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号