指令详解

1、test指令

测试指令
  格式:TEST DEST,SRC
  功能:目的操作数和源操作数按位进行逻辑与操作,结果不回送目的操作数。源操作数可以为通用寄存器、存储器或立即数。目的操作数可以为通用寄存器或存储器操作数。
  例1:
  TEST DWORD PTR [BX],80000000H
  TEST AL,CL
  TEST指令常用于测试操作数中某位是否为1,而且不会影响目的操作数。如果测试某位的状态,对某位进行逻辑与1的运算,其它位逻辑与0,然后判断标志位。运算结果为0,ZF=1,表示被测试位为0;否则ZF=0,表示被测试位为1。
  例2:      TEST AL,80H;测试AL中最高位
        JNZ NEXT;如果最高位为1,转到标志NEXT处。
  TEST指令影响标志位为SF,ZF,PF,并且使OF=CF=0。

 

2、cmp指令

比较指令
   格式:CMP DEST,SRC
  功能:目的操作数减源操作数,结果不回送。源操作数为通用寄存器、存储器和立即数。目的操作数为通用寄存器、存储器操作数。
  CMP指令影响标志位为OF,SF,ZF,AF,PF,CF。
  例 3.29
  CMP CX,3
  CMP WORD PTR [SI],3
  CMP AX,BLOCK
  执行比较指令后,对状态标志位影响见表3.2。对于两个数的比较(AX-BX)有以下3种情况。

表CMP指令对标志位的影响

  · 两个正数比较,使用SF标志位判断。
    SF=0,则AX≥BX,若ZF=1,则AX=BX
    SF=1,则AX<BX
  · 两个无符号数比较,使用CF标志位判断。
    CF=0,则AX≥BX,若ZF=1,则AX=BX
    CF=1,则AX<BX
  · 两个负数比较,使用SF标志位判断。
    SF=0,则AX≥BX,若ZF=1,则AX=BX
    SF=1,则AX<BX
  · 两个异符号数比较。
    如果OF=0,仍可用SF标志判断大小。
    如果OF=1,说明结果的符号位发生错误,所以
         SF=0,则AX<BX
         SF=1,则AX>BX
  综上所述:两个异号数比较
  当OF=0,SF=0,则AX>BX
      SF=1,则AX<BX
  当OF=1,SF=0,则AX<BX
      SF=1,则AX>BX
  用逻辑表达式表示为:
  若OF∨-SF=0,则AX>BX
  若OF∨-SF=1,则AX<BX

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值