监测点11.1
sub al,al 结果是0 zf=1,pf=1 sf=0mov al,1 结果zf怎么还是1?
书上有这些内容 对标志寄存器会产生影响的大都为运算指令(逻辑或算数运算 如:and、sub、mul)
对其无影响的大都为传送指令(如:mov、push) hxs554f 发表于 2012-4-28 07:26 static/image/common/back.gif
对标志寄存器会产生影响的大都为运算指令(逻辑或算数运算 如:and、sub、mul)
对其无影响的大都为传送指令 ...
mov al,1 al不是就变为1了 zf不是应该是0吗 不是所有指令都会影响标志寄存器,对一些传送指令(如:mov、push)
不管其结果为多少,相应标志位都不会改变 刚看的时候我也懵逼了,就是那些mul,sub,and等会改变值的同时对标志位产生影响,而mov那些只是改变数值,对标志位不产生影响 芊芊 发表于 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]