鱼C论坛

 找回密码
 立即注册
查看: 2450|回复: 5

[争议讨论] 关于检测点11.1和小甲鱼的不同意见

[复制链接]
发表于 2012-9-4 09:34:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原题:检测点11.1

写出下面每条指令执行后,ZF、PF、SF、等标志位的值。

sub al,al     
mov al,1     
push ax     
pop bx      
add al,bl   
add al,10     
mul al     
首先,我不知道pop bx出来了个啥值(这个感觉是本题的BUG,因为这个值谁都不知道,而且会影响后面的结果。。。我们就按小甲鱼给的答案1来算)
下面是小甲鱼的答案:
sub al,al     al=0h        ZF=1        PF=1        SF=0  
mov al,1      al=1h        ZF=1        PF=1        SF=0  
push ax       ax=1h        ZF=1        PF=1        SF=0  
pop bx        bx=1h        ZF=1        PF=1        SF=0  
add al,bl     al=2h        ZF=0        PF=0        SF=0  
add al,10     al=12h       ZF=0        PF=1        SF=0  
mul al        ax=144h      ZF=0        PF=1        SF=0
前面都没问题,对于最后一行,我提出一点不同意见。add al,10,是给al+10,不是10h!也就是说,倒数第二句执行完,al应该等于0ch,也就是12.而mul al执行后,应该为144,也就是90h。所以,最后一句的sf=1.
小甲鱼在这里直接将指令在debug中输入,大家都知道debug默认是16位的,从而造成了这个问题。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-4 18:20:51 | 显示全部楼层
建议楼主查指令集手册,弄错了方向白忙活了哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-5 20:21:04 | 显示全部楼层
你看下pop 寄存器的意思 是出栈 用一个寄存器接受出栈数据 前面push ax 是把ax入栈 再pop给bx 此时 bx和ax相等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-5 21:22:04 | 显示全部楼层
......
AX=000C  BX=0001  CX=0011  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B3F  ES=0B3F  SS=0B4F  CS=0B4F  IP=000A   NV UP EI PL NZ NA PE NC
0B4F:000A F6E0          MUL     AL
-t
AX=0090  BX=0001  CX=0011  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B3F  ES=0B3F  SS=0B4F  CS=0B4F  IP=000C   NV UP EI PL NZ NA PE NC
0B4F:000C B8004C        MOV     AX,4C00
......
ax=0090h=10010000b, SF位为PL,是0,为什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2014-6-10 01:54:46 | 显示全部楼层
支持楼主,最后一行sf=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-10 08:19:54 | 显示全部楼层
MUL为无符号数乘法指令 不影响SF位 所以SF=0
IMUL是有符号乘法指令 影响SF位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 06:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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