cfer 发表于 2011-11-26 23:41:40

我发现mul指令不影响SF,PF标志位!

mov al, 0
add al, 0ch    执行后PF=1,SF=0
mul al         执行后PF=1, SF=0
先说SF: 执行mul后结果在ax中存放,ax=0090h。可能有朋友会想因为ax的最高位是0,所以使得SF为0的。那么就看下面的代码
mov        bl,        2
                add        bl,        80h
                mov        al,        1
                mul bl
如果按照上面的想法,那么这些代码执行后ax=0082h,,sf应该是0,可实际确是1.这个1是在执行add时产生的,mul指令没有改变它。
再说PF:
mov al,        0feh
                mov bl, 0feh
                mov cl, 0
                add cl, 0
                mul        bl
mul指令执行后ax=0FC04h,如果mul指令对PF位有影响的话,那么不管是看al,还是看ax,1的个数都是奇数,理应使PF由1变为0,而实际PF任然是1,这个1是执行add时产生的,mul指令没有改变它。
标志寄存器的改变用emu8086看比较方便,点开flag再单步执行就可以观察了。这是我实践总结出来的,也不一定正确,只是实际的表现是这样,欢迎大家共同讨论,发现问题。

kane080824 发表于 2011-11-27 00:03:18

乘法指令只影响标志位CF和OF,其他标志位位无定义

cfer 发表于 2011-11-27 00:06:03

RE: 我发现mul指令不影响SF,PF标志位!

kane080824 发表于 2011-11-27 00:03 static/image/common/back.gif
乘法指令只影响标志位CF和OF,其他标志位位无定义

是的,刚刚也搜到了
页: [1]
查看完整版本: 我发现mul指令不影响SF,PF标志位!