MOV AL,DA1 ;56H→AL,AF=0,CF=0
ADD AL,DA1+2 ;56H+67H=BDH→AL,AF=0,CF=0
DAA ;BDH→23H→AL,AF=1,CF=1
MOV DA2,AL ;AL→DA2,AF=1,CF=1
MOV AL,DA1+1 ;78H→AL,AF=1,CF=1
ADC AL,DA1+3 ;78H+78H+CF=F1H→AL,AF=1,CF=0
DAA ;F1H→57H→AL,AF=1,CF=1
MOV DA2+1,AL ;AL→DA2+1,AF=1,CF=1
(DA2)=23H
(DA2+1)=57H
CF=1
十进制数加调整指令DAA(Decimal Adjust After Addition),该指令用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。
调整规则如下:
如果AL的低四位大于9,或标志位AF=1,那么,AL=AL+6,并置AF=1;
如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1;
如果以上两点都不成立,则,清除标志位AF和CF。
经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相加,并进行调整后,得到的结果还是压缩型BCD码。
指令格式:DAA
受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)
温馨提示:答案为网友推荐,仅供参考