程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 學 Win32 匯編 [23] - 位測試指令: BT、BTC、BTR、BTS

學 Win32 匯編 [23] - 位測試指令: BT、BTC、BTR、BTS

編輯:Delphi

 BT、BTS、BTR、BTC

;BT(Bit Test):            位測試 
;BTS(Bit Test and Set):      位測試並置位 
;BTR(Bit Test and Reset):    位測試並復位 
;BTC(Bit Test and Complement): 位測試並取反 
 
;它們的結果影響 CF 
;它們的指令格式相同: 
BT r16/r32, r16/r32 
BT r16/r32, m16/m32 
BT r16/r32, i8 
BT m16/m32, r16/r32 
BT m16/m32, i8 
 
 
; Test23_1.asm 
.386 
.model flat, stdcall 
 
include  Windows.inc 
include  kernel32.inc 
include  masm32.inc 
include  debug.inc 
includelib kernel32.lib 
includelib masm32.lib 
includelib debug.lib 
 
.code 
main proc 
  ;BT 把 10000001b 的第七位復制到 CF, 得知是 1 
   mov dx, 10000001b 
   bt dx, 7 
   lahf 
   PrintHex ah ;47 - 01000111b (CF=1) 
  ;BT 把 10000001b 的第六位復制到 CF, 得知是 0 
   bt dx, 6 
   lahf 
   PrintHex ah ;86 - 10000110b (CF=0) 
   
  ;BTS 在執行 BT 命令的同時, 把操作數的指定位置為 1 
   mov dx, 10000001b 
   bts dx, 6 
   PrintHex dl ;C1 - 11000001b 
   
  ;BTR 在執行 BT 命令的同時, 把操作數的指定位置為 0 
   mov dx, 10000001b 
   btr dx, 7 
   PrintHex dl ;01 - 00000001b 
   
  ;BTC 在執行 BT 命令的同時, 把操作數的指定位取反 
   mov dx, 10000001b 
   btc dx, 0 
   PrintHex dl ;80 - 10000000b 
   btc dx, 0 
   PrintHex dl ;81 - 10000001b 
   ret 
main endp 
end main 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved