鱼C论坛

 找回密码
 立即注册
查看: 2143|回复: 4

王爽汇编语言程序设计第十一章检测点问题

[复制链接]
发表于 2013-1-3 17:41:24 | 显示全部楼层 |阅读模式
8鱼币
本帖最后由 大西洋1912 于 2013-1-3 17:45 编辑

1、写出下面每条指令执行后ZF、PF、SF标志位的值
   Sub  al,al
   Mov  al,1
   Push  ax
   Pop  bx
   Add  al,bl
   Add  al,10
      Mul   al         ZF=0  PF=0    SF=0
其中SF=0是因为最后的结果是保存在ax中吗
注:ax=0090h=00000000 1001 0000B?
2、写出下面每条指令执行后,ZF、PF、SF、CF、OF标志位的值。
①Sub   al,al       CF=0  OF=0  SF=0  ZF=1  PF=1
②Mov  al,10h    CF=0  OF=0  SF=0  ZF=1  PF=1
③Add   al,90h    CF=0  OF=0  SF=1  ZF=0  PF=1
④Mov   al,80h   CF=1  OF=1  SF=0  ZF=1  PF=1
⑤Add   al,80h
⑥Mov  al,0fch   CF=1  OF=0  SF=0  ZF=0  PF=0
⑦Add   al,05h
⑧Mov  al,7dh    CF=0  OF=1  SF=1  ZF=0  PF=1
⑨Add  al,0bh
上面两个题红色部分是怎么计算出来的呢?mov指令对PF不影响吗?为什么第二句前面几个标志和前一句一样,而④⑥⑧句就不相同了?

最佳答案

查看完整内容

监测点11.1兄弟,答案是对的,不过标志位标错了 ZF 零标志/Zero Flag 结果为0,ZF=1。 PF 奇偶标志/Parity Flag 结果为偶数 PF=1 最后我们的结果是两个1,偶数 SF 符号标志/Sign Flag 结果为负数 SF=1 我们的结果是 AL=1001 0000B 负数 以上结果经由debug和vs2010调试过 关键在最后一个mul上面,sf的值我也迷茫过,究竟是看ax还是看al,调试结果证明还是看al的,估计因为我们的mul 的操作是针对al的。 现学现卖,见 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-3 17:41:25 | 显示全部楼层
监测点11.1
Sub  al,al        ZF=1 PF=1 SF=0  (AL=0)
Mov  al,1        无影响
Push  ax          无影响
Pop  bx           无影响    (BL=AL=1)
Add  al,bl    ZF=0 PF=0 SF=0(AL=010B)
Add  al,10 ZF=0 PF=1 SF=0(AL=1100B)
Mul   al   ZF=0 PF=1 SF=1 
注:ax=0090h=00000000 1001 0000B
兄弟,答案是对的,不过标志位标错了
ZF 零标志/Zero Flag  结果为0,ZF=1。
PF 奇偶标志/Parity Flag  结果为偶数  PF=1  最后我们的结果是两个1,偶数
SF 符号标志/Sign Flag 结果为负数 SF=1   我们的结果是 AL=1001 0000B 负数

以上结果经由debug和vs2010调试过
关键在最后一个mul上面,sf的值我也迷茫过,究竟是看ax还是看al,调试结果证明还是看al的,估计因为我们的mul 的操作是针对al的。
现学现卖,见笑了。
后面的题,回头有空继续
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-1-4 11:27:03 | 显示全部楼层
哦,对了,调试看结果的时候记得在代码前加上一句mov ah,0将ah清零,不然标志位结果可能会不一样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-1-4 15:17:37 | 显示全部楼层
汗颜,监测点11.2自己算的基本都算错了,唉
以下是vs2008调试的结果:(同样,需要将ah清0,否则结果会不一致)
sub al,al
CF=0 OF=0 SF=0 ZF=1 PF=1
add al,90H
al=10H+90H=A0H=1010 0000B   CF=0 OF=0 SF=1 ZF=0 PF=1
add al,80H
80H对于有符号数是-128,那al=-128-128=-256 所以溢出了,此时:OF=1
对于无符号数:al=80H+80H=100H  CF=1 SF=0 ZF=1 PF=1
add al,05H
0FCH的有符号数是-4,那al=-4+5=1 ,没有溢出,OF=0
对于无符号数的运算:al=0FCH+05H=101H=0001 0000 0001B CF=1 SF=0 ZF=0 PF=0
add al,0BH
al=7DH+0BH=88H=1000 1000H
CF=0 OF=1 SF=1 ZF=0 PF=1
虽然是正数,但是超出了有符号数的表达范围(-80H ~ 7FH),所以溢出了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-1-4 15:21:07 | 显示全部楼层
果然比较难,这次算是比较深入的学习了一下标志寄存器了。
参考资料:
http://baike.baidu.com/view/1845107.htm
http://blog.csdn.net/masefee/article/details/4094183
补码的知识也需要,因为对于有符号数的转换
http://blog.fishc.com/442.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 04:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表