芊芊 发表于 2012-4-27 21:25:31

监测点11.1

sub al,al 结果是0 zf=1,pf=1   sf=0
                                                                         mov al,1   结果zf怎么还是1?

hxs554f 发表于 2012-4-27 21:25:32

书上有这些内容

hxs554f 发表于 2012-4-28 07:26:11

对标志寄存器会产生影响的大都为运算指令(逻辑或算数运算 如:and、sub、mul)
对其无影响的大都为传送指令(如:mov、push)

芊芊 发表于 2012-4-28 07:28:29

hxs554f 发表于 2012-4-28 07:26 static/image/common/back.gif
对标志寄存器会产生影响的大都为运算指令(逻辑或算数运算 如:and、sub、mul)
对其无影响的大都为传送指令 ...

mov al,1   al不是就变为1了 zf不是应该是0吗

hxs554f 发表于 2012-4-28 07:32:09

不是所有指令都会影响标志寄存器,对一些传送指令(如:mov、push)
不管其结果为多少,相应标志位都不会改变

低手莫怪 发表于 2017-3-5 18:08:16

刚看的时候我也懵逼了,就是那些mul,sub,and等会改变值的同时对标志位产生影响,而mov那些只是改变数值,对标志位不产生影响

sos2356 发表于 2021-2-5 01:14:58

芊芊 发表于 2012-4-28 07:28
mov al,1   al不是就变为1了 zf不是应该是0吗

这道题很多人可能糊涂的地方是把每一行当成单独一题,实际上是从上到下为一个连续的程序来看待
sub al, al ;al = 0
mov al, 1 ;al = 1
push ax   ;ax = 0000 0001 入栈
pop bx    ;bx = 0000 0001 出栈
add al,bl; al = 01 + 01 = 02 即0010
add al, 10 ;al = 12 即1100
mul al   ;al = 12 * 12 = 144 即 1001 0000

再来对比答案:
1 1 0
1 1 0   mov对标致位没影响,照抄下来
1 1 0   同上
1 1 0   同上
0 0 0
0 1 0
0 1 1
页: [1]
查看完整版本: 监测点11.1