• 学 Win32 汇编[23] 位测试与位扫描指令: BT、BTC、BTR、BTS、BSF、BSR



    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/m16/m32, r16/r32/m16/m32
    BT r16/r32/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

    BSF、BSR: 位扫描指令
    
    ;BSF(Bit Scan Forward): 位扫描, 低 -> 高
    ;BSR(Bit Scan Reverse): 位扫描, 高 -> 低
    
    ;它们的结果影响 ZF
    
    ;扫描的是参数二, 找到是 1 的位后, 把位置数给参数一并置 ZF=0
    ;找不到(也就是参数二是 0)时, 置 ZF=1
    
    ;它们的指令格式相同:
    BSF r16/r32, r16/r32/m16/m32
    
    ; Test23_2.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 ;扫描到时 mov dx, 0000111100001100b bsf cx, dx PrintDec cx ;2 - 也就是左数第 3 位 bsr cx, dx PrintDec cx ;11 - 也就是左数第 12 位 ;扫描不到时 mov cx, 0FFFFh mov dx, 0 bsf cx, dx lahf PrintHex ah ;C6 - 11000110 (ZF=1) PrintHex cx ;FFFF - 找不到时不会影响到目的值 ret main endp end main

  • 相关阅读:
    Centos R安装
    python 排序函数L.sort()和sorted()
    系统评测指标:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F-Score
    linux exec使用小结
    linux 日志文件
    数据结构中的八大排序算法
    Boyer-Moore(BM)算法,文本查找,字符串匹配问题
    内存为程序分配空间的四种分配方式
    内部碎片、外部碎片
    函数调用过程栈帧变化详解
  • 原文地址:https://www.cnblogs.com/del/p/1712467.html
Copyright © 2020-2023  润新知