X86汇编 BT

位操作指令
位操作指令包括位测试和位扫描指令,可以直接对一个二进制位进行测试,设置和扫描。
  1位测试和设置指令
  格式:BT DEST,SRC
     BTC DEST,SRC
     BTR DEST,SRC
     BTS DEST,SRC
  功能:按照源操作指定的位号,测试目的操作数,当指令执行时,被测试位的状态被复制到进位标志CF。
  BT将SRC指定的DEST中一位的数值复制到CF。BTC将SRC指定的DEST中一位的数值复制到CF,且将DEST中该位取反。BTR将SRC 指定的DEST中一位的数值复制到CF,且将DEST中该位复位。BTS将SRC指定的DEST中一位的数值复制到CF,且将DEST中该位置位。
  目的操作数为16位或32位通用寄存器或存储器,源操作数为16位或32位通用寄存器,以及8位立即数,当源操作数为通用寄存器时,必须同目的操作数类型一致。源操作数SRC以两种方式给出目的操作数的位号,即
  · SRC为8位立即数,以二进制形式直接给出要操作的位号;
  · SRC为通用寄存器,如果DEST为通用寄存器,则SRC中二进制值直接给出要操作的位号。如果DEST为存储器操作数,通用寄存器SRC为带符号整数, SRC的值除以DEST的长度所得到的商作为DEST的相对偏移量,余数直接作为要操作的位号。DEST的有效地址为DEST给出的偏移地址和DEST相 对偏移量之和。
  BT,BTC,BTR,BTS指令影响CF标志位,其它标志位无定义。
  例 3.53
  MOV AX,1234H
  MOV ECX,5
  BT AX,CX       ;CF=1AX=1234H
  BTC AX,5       ;CF=1;AX=1214H
  BTS AX,CX;      ;CF=0AX=1234H
  BTR EAX,ECX      ;CF=1EAX=00001214H

       AT&T  格式 

       movl  $0x1234 ,&ecx   // 0001 0010 0011 0100B 

       bt  $0x03,%ecx   //  第一位是0  , 0x03 是第四位 

        jnc  somewhere   //CF 位是0 则转移 


  例 

      ·MODEL SMALL
      ·586
      ·DATA
   DATA1 DW 1234H,5678H
      ·CODE
      ·START UP
       BTC DATA1,3;CF=0(DATA1)=123CH
       MOV CX,20
       BTR DATA1,CX;CF=1[DATA+2]=5668H
      ·EXIT
       END

 

   

转载于:https://www.cnblogs.com/ioio/p/7418261.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值