我发现mul指令不影响SF,PF标志位!
mov al, 0add 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再单步执行就可以观察了。这是我实践总结出来的,也不一定正确,只是实际的表现是这样,欢迎大家共同讨论,发现问题。 乘法指令只影响标志位CF和OF,其他标志位位无定义
RE: 我发现mul指令不影响SF,PF标志位!
kane080824 发表于 2011-11-27 00:03 static/image/common/back.gif乘法指令只影响标志位CF和OF,其他标志位位无定义
是的,刚刚也搜到了
页:
[1]