| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 590 人关注过本帖
标题:有关王爽书中cmp指令的疑问
只看楼主 加入收藏
tigerdown
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-21
结帖率:100%
  已结贴   问题点数:20  回复次数:8   
有关王爽书中cmp指令的疑问
在P225, (3)如果sf=0,而of=1, 则(ah)<(bh)。
谁能举一下实例,多谢
附件: 您没有浏览附件的权限,请 登录注册
2018-05-23 08:10
tigerdown
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-21
  得分:0 
在<<Assembly Language for x86 Processors>> KIP R. IRVINE 书中是这样判断的:


        CMP Results              ZF       CF        Flags
             a<b                           0         1       SF=/OF
             a>b                           0         0       SF=OF
             a=b                           1         0        ZF=1




[此贴子已经被作者于2018-5-23 14:56编辑过]

附件: 您没有浏览附件的权限,请 登录注册
2018-05-23 09:07
tigerdown
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-21
  得分:0 
回复 楼主 tigerdown
如果溢出of=1那么就会超出-127到128范围, 所以最高位应是1, 怎么可能Sf=0呢?!
2018-05-23 13:15
wmf2014
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:141
帖 子:1680
专家分:9380
注 册:2014-12-6
  得分:20 
cmp(compare)指令进行比较两个操作数的大小
例:cmp oprd1,oprd2
为第一个操作减去第二个操作数,
但不影响第两个操作数的值
它影响flag的CF,ZF,OF,AF,PF
我们怎么判断大小呢?
若执行指令后
ZF=1 这个简单,则说明两个数相等,因为zero为1说明结果为0
当无符号时:
若CF=1 则说明了有进位或借位,cmp是进行的减操作,故可以看出为借位,所以,此时oprd1<oprd2
CF=0 则说明了无借位,但此时要注意ZF是否为0,若为0,则说明结果不为0,故此时oprd1>oprd2
当有符号时:
若SF=0,OF=0 则说明了此时的值为正数,没有溢出,可以直观的看出,oprd1>oprd2
若SF=1,OF=0 则说明了此时的值为负数,没有溢出,则为oprd1<oprd2
若SF=0,OF=1 则说明了此时的值为正数,有溢出,可以看出oprd1<oprd2
若SF=1,OF=1则说明了此时的值为负数,有溢出,可以看出oprd1>oprd2
最后两个可以作出这种判断的原因是,溢出的本质问题:
两数同为正,相加,值为负,则说明溢出
两数同为负,相加,值为正,则说明溢出
故有,正正得负则溢出,负负得正则溢出

能编个毛线衣吗?
2018-05-24 09:39
tigerdown
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-21
  得分:0 
回复 4楼 wmf2014
谢谢, 版主回贴
实例证明,这二本书对cmp指令的描述是不符事实。
例子: ah=0, bh=128, cmp ah, bh. 运行后sf=1, of=1, 而ah<bh, 我附上运行结果和二夲书中的陈述。

附件: 您没有浏览附件的权限,请 登录注册
2018-05-24 10:15
tigerdown
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-21
  得分:0 
回复 4楼 wmf2014
谢谢, 版主回贴
实例证明,这二本书对cmp指令的描述是不符事实。
例子: ah=0, bh=128, cmp ah, bh. 运行后sf=1, of=1, 而ah<bh, 我附上运行结果和二夲书中的陈述。

附件: 您没有浏览附件的权限,请 登录注册
2018-05-24 10:15
wmf2014
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:141
帖 子:1680
专家分:9380
注 册:2014-12-6
  得分:0 
我一般进行无符号位比较,看ZF和CF标志位就行了,未关注过OF、SF。
cmp a,b
NZ NC则a>b
NZ CY则a<b

能编个毛线衣吗?
2018-05-24 10:51
tigerdown
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-8-21
  得分:0 
回复 7楼 wmf2014
非常同意你的看法, 但不知他们为什么把这事搞得太复杂
2018-05-24 11:53
qcy1021
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-6-11
  得分:0 
2018-06-11 19:17







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043653 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved