x87648510 发表于 2013-7-28 10:17:23

关于监测点11.1的问题

本帖最后由 x87648510 于 2013-7-28 10:19 编辑

sub al,al
mov al,1;
在mov 中 al的值不是从0变为1了吗?ZF应该变为1了 为什么说不受mov的影响呢????
push ax
pop bx
add al,bl
add al,10
mul a   ;

Crazy迷恋. 发表于 2013-7-28 10:24:17

这个可以去参考一下课后答案非常的详细~~~主要是哪些指令影响标志寄存器,哪些指令影响,什么时候影响什么时候不影响的问题。那里解答的非常详细。楼主也可以使用-a命令将代码输入去观察~~~~如果楼主没有课后题答案,在论坛置顶帖中是有的。

x87648510 发表于 2013-7-28 10:26:31

Crazy迷恋. 发表于 2013-7-28 10:24 static/image/common/back.gif
这个可以去参考一下课后答案非常的详细~~~主要是哪些指令影响标志寄存器,哪些指令影响,什么时候影响什么时 ...

写写呢 我有答案 可是都没详细的解析 很是郁闷

福禄娃娃 发表于 2013-7-28 17:19:15

sub al,al      al=0h      ZF=1      PF=1      SF=0      al为0h,结果为0所以ZF为1代表真,有0个偶数所以PF为1,结果为非负,所以SF为0。当我们把数据当做无符号数来计算,SF位的值没有意义。

mov al,1      al=1h      ZF=1      PF=1      SF=0      mov是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

push ax       ax=1h      ZF=1      PF=1      SF=0       push是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

pop bx      bx=1h      ZF=1      PF=1      SF=0       pop是传送指令对标志寄存器没有影响,标志寄存器不发生改变。

add al,bl   al=2h      ZF=0      PF=0      SF=0       2h的二进制为0010 ,结果不为0则ZF为0,奇数个1则PF为0,SF为0

add al,10   al=12h       ZF=0      PF=1      SF=0      12h的二进制为10010,这是8位寄存器所以值为0010,结果不为0则ZF为0,偶数个1则PF为1,SF为0

mul al      ax=144h      ZF=0      PF=1      SF=0   144h的二进制为101000100,这是16位寄存器所以值为01000100,结果部位0则ZF为0,偶数个1则PF为1,SF为0

x87648510 发表于 2013-7-28 18:11:32

福禄娃娃 发表于 2013-7-28 17:19 static/image/common/back.gif
sub al,al      al=0h      ZF=1      PF=1      SF=0      al为0h,结果为0所以ZF为1代表真,有0个 ...

谢谢呢 ,主要是我以为mov传递数值的时候标记寄存器也跟着改变呢现在搞清楚了 谢谢啦

福禄娃娃 发表于 2013-7-28 18:12:15

x87648510 发表于 2013-7-28 18:11 static/image/common/back.gif
谢谢呢 ,主要是我以为mov传递数值的时候标记寄存器也跟着改变呢现在搞清楚了 谢谢啦

不用客气,鱼C共进退

传说。 发表于 2014-5-20 19:49:01

福禄娃娃 发表于 2013-7-28 17:19 static/image/common/back.gif
sub al,al      al=0h      ZF=1      PF=1      SF=0      al为0h,结果为0所以ZF为1代表真,有0个 ...

赞一个。。。。。。。。。。。。

拳皇之八神 发表于 2014-12-9 20:44:57

4楼 很详细 谢谢

fjxpljd 发表于 2014-12-10 10:59:38

福禄娃娃 发表于 2013-7-28 17:19
sub al,al      al=0h      ZF=1      PF=1      SF=0      al为0h,结果为0所以ZF为1代表真,有0 ...

为什么8位寄存器的值只取4位,16位寄存器的值只取8位。

Jeckou 发表于 2015-6-20 22:12:44

福禄娃娃 发表于 2013-7-28 17:19
sub al,al      al=0h      ZF=1      PF=1      SF=0      al为0h,结果为0所以ZF为1代表真,有0 ...

add al,10   al=12h       ZF=0      PF=1      SF=0      12h的二进制为10010,这是8位寄存器所以值为0010,结果不为0则ZF为0,偶数个1则PF为1,SF为0   
------ al是8位寄存器,为啥值是0010啊,假如说是0010的话,哪来的偶数个1,PF=1啊?

mul al      ax=144h      ZF=0      PF=1      SF=0   144h的二进制为101000100,这是16位寄存器所以值为01000100,结果部位0则ZF为0,偶数个1则PF为1,SF为0
------ 乘后的结果保存在ax是16位寄存器,同上不理解为啥值就是01000100了?

------帮忙在解释下吧高人,多谢啦!!
页: [1]
查看完整版本: 关于监测点11.1的问题