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

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM