|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原题:检测点11.1
写出下面每条指令执行后,ZF、PF、SF、等标志位的值。
sub al,al
mov al,1
push ax
pop bx
add al,bl
add al,10
mul al
首先,我不知道pop bx出来了个啥值(这个感觉是本题的BUG,因为这个值谁都不知道,而且会影响后面的结果。。。我们就按小甲鱼给的答案1来算)
下面是小甲鱼的答案:
sub al,al al=0h ZF=1 PF=1 SF=0
mov al,1 al=1h ZF=1 PF=1 SF=0
push ax ax=1h ZF=1 PF=1 SF=0
pop bx bx=1h ZF=1 PF=1 SF=0
add al,bl al=2h ZF=0 PF=0 SF=0
add al,10 al=12h ZF=0 PF=1 SF=0
mul al ax=144h ZF=0 PF=1 SF=0
前面都没问题,对于最后一行,我提出一点不同意见。add al,10,是给al+10,不是10h!也就是说,倒数第二句执行完,al应该等于0ch,也就是12.而mul al执行后,应该为144,也就是90h。所以,最后一句的sf=1.
小甲鱼在这里直接将指令在debug中输入,大家都知道debug默认是16位的,从而造成了这个问题。
|
|