汇编语言题目 求解

DA1 DB 56H,78H,67H,78H
DA2 DB 2 DUP(?)
MOV AL,DA1
ADD AL,DA1+2
DAA
MOV DA2, AL
MOV AL,DA1十1
ADC AL,DA1+3
DAA
MOV DA2+1,AL

(DA2)=?
(DA2+1)=?
CF=?

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无定义)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-03
(DA2)=BDH
(DA2+1)=F0H
CF=0
应该是这个吧.