汇编的DAA问题!!! 急!明天考试了

DAA是十进制数加调整指令DAA(Decimal Adjust After Addition),该指令用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。

这句话完全看不懂

MOV CL,4
MOV AL,14H
ROL AL,CL
ADD AL,68H
DAA

求AL 答案是0AH

每一步详细过程要!

谁第一个解释了 我能给多少分给多少

ADD对AL中的数进行如下操作:
如果AL的低4位大于9或AF=1,则AL的内容加6,并将AF置1;如果AL的高4位大于9或CF=1,则AL的内容加60H,且将CF置1。
如果你自己愿意找几个数用DEBUG试一试的话,肯定就会明白这句话是什么意思了:
比如:
mov al,19H
add al,13H
daa
执行完前两条之后:AL=2CH,CF=0,AF=0
执行完DAA之后:AL=32H(其实在一个4位的二进制数中+6和-10的结果是一样的
那个定义百科里的解释好像不全,如果AL低4为大于9的话,高4为其实会加一)
看到了吧?其实就是十进制的19+13的结果
在来一个例子:
mov al,19H
add al,19H
daa
执行完前两条之后:AL=32H,CF=0,AF=1
执行完DAA之后:AL=38H(这里就体现到+6的作用了)
结果是十进制的19+19=38
----------------------------------------------
其他的例子:
mov al,92H
add al,32H
daa
执行完前两条之后:AL=C4H,CF=0,AF=0
执行完DAA之后:AL=24,CF=1
92+32=124

mov al,92H
add al,82H
daa
执行完前两条之后:AL=14H,CF=1,AF=0
执行完DAA之后:AL=74H,CF=1
92+82=174
=============================================
所以你那道题的结果是错的,正确结果是AH=09H,CF=1

----WDSYMH

参考资料:http://baike.baidu.com/view/405717.htm

温馨提示:答案为网友推荐,仅供参考
相似回答