《汇编语言(第三版)》cmp指令

cmp指令


本质

cmp是比较指令,cmp的功能相当于减法。

格式

cmp 操作对象1,操作对象2

功能

计算操作对象1-操作对象2,但并不保存结果,可以根据flag标志寄存器来判断结果。

正向判断

如果(ax) = (bx) 则(ax)-(bx) = 0,所以:zf=1。
如果(ax) != (bx) 则(ax)-(bx) != 0,所以:zf=0。
如果(ax) < (bx) 则(ax)-(bx)将产生借位,所以:cf=1。
如果(ax) >=(bx) 则(ax)-(bx)不产生借位,所以:cf=0。
如果(ax) > (bx) 则(ax)-(bx) != 0,也不产生借位,所以:zf=cf=0。
如果(ax) <=(bx) 则(ax)-(bx)可能为0,也可能产生借位,所以:zf=1或zf=1。(1、3起码满足一个)

反向判断

指令cmp ax,bx 的逻辑含义是比较ax和bx的值,如果执行后:
1.  zf=1 ===> (ax)=(bx)
2.  zf=0 ===> (ax)!=(bx)
3.  cf=1 ===> (ax)<(bx)
4.  cf=0 ===> (ax)>=(bx)
5.  cf=zf=0 ===> (ax)>(bx)
6.  cf=1或zf=1 ===> (ax)<=(bx)

如何记忆?

1.  zf是0标志寄存器,zf=1时,ax=bx;zf=0时,ax != bx。
2.  cf是进位借位标志寄存器,cf=1时,ax<bx;cf=0时,ax>=bx。
3.  根据1、2组合可以推出另外两个。

CMP指令如何起作用?

cmp指令的比较结果需要通过条件转移指令来检测。

指令解释含义检测的相关标志位
jee:equal等于则转移zf=1
jnene:not equal不等于则转移zf=0
jbb:below低于则转移cf=1
jnbnb:not below不低于则转移cf=0
jaa:above高于则转移cf=0且zf=0
jnana:not above不高于则转移cf=1或zf=1
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ninding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值