关于监测点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 ; 这个可以去参考一下课后答案非常的详细~~~主要是哪些指令影响标志寄存器,哪些指令影响,什么时候影响什么时候不影响的问题。那里解答的非常详细。楼主也可以使用-a命令将代码输入去观察~~~~如果楼主没有课后题答案,在论坛置顶帖中是有的。 Crazy迷恋. 发表于 2013-7-28 10:24 static/image/common/back.gif
这个可以去参考一下课后答案非常的详细~~~主要是哪些指令影响标志寄存器,哪些指令影响,什么时候影响什么时 ...
写写呢 我有答案 可是都没详细的解析 很是郁闷 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 福禄娃娃 发表于 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传递数值的时候标记寄存器也跟着改变呢现在搞清楚了 谢谢啦 x87648510 发表于 2013-7-28 18:11 static/image/common/back.gif
谢谢呢 ,主要是我以为mov传递数值的时候标记寄存器也跟着改变呢现在搞清楚了 谢谢啦
不用客气,鱼C共进退 福禄娃娃 发表于 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个 ...
赞一个。。。。。。。。。。。。 4楼 很详细 谢谢 福禄娃娃 发表于 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位。 福禄娃娃 发表于 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]