关于汇编指令aaa的问题
指令格式:AAA
指令功能:对2个未组合的BCD码相加后的结果(必须在AL中)进行调整,产生一个正确的BCD码。如果AL低4位>09H或者AF=1,则进行(AL)+06H→(AL),同时(AH)+1→(AH),AL的高4位清0,然后使AF=1,CF=1
标志位影响:只影响AF与CF
注意:此指令通常跟在加法指令之后
而大致实践情况和上面一致,需要说明的是AL低4位>09H和AF=1这两个条件只要有一个(或两个都)满足,AH则+1.
同时实践出另一个奇异之处,就是在AAA的+6时AL可能向AH进位.真是很奇异!
提供以下代码供实践:
mov ax,0fh ;ax=000fh
add al,0eh ;ax=001dh (af=1,低4位>9)
aaa ;ax=0103h 符合低4+6,高4清0,AH+1
mov ax,0efh ;ax=00efh
add al,0eh ;ax=00fdh (af=1,低4位>9)
aaa ; 实际实验结果ax=0203h,理论上:本来AX应和上面一致=0103h(低4+6,高4清0,AH+1),竟然AL+6后还进位1进AH了这是为什么啊??