博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学 Win32 汇编[23] - 位测试与位扫描指令: BT、BTC、BTR、BTS、BSF、BSR
阅读量:5967 次
发布时间:2019-06-19

本文共 1800 字,大约阅读时间需要 6 分钟。

  hot3.png

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/m32BT r16/r32/m16/m32, i8         ; Test23_1.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain 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    retmain endpend 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, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain 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 - 找不到时不会影响到目的值    retmain endpend main

转载于:https://my.oschina.net/hermer/blog/320136

你可能感兴趣的文章
SSH Secure Shell Client
查看>>
JFinal源码分析------初始化那些事儿
查看>>
使用Jquery 加载页面时调用JS
查看>>
css+div+jquery弹出层
查看>>
求职相关(链接,不定期更新)
查看>>
pdo 连接数据库 报错 could not find driver 解决方法
查看>>
设计模式之策略模式
查看>>
maya pyside 多个窗口实例 报错 解决
查看>>
Nginx错误日志(error_log)配置及信息详解
查看>>
我的友情链接
查看>>
通知中心
查看>>
我的友情链接
查看>>
MVC中的三个模块
查看>>
Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
查看>>
oracle 常用命令大汇总
查看>>
2012年春运火车票电话和网上订票技巧、攻略
查看>>
根据request获取请求路径
查看>>
mysql 并行复制
查看>>
傲不可长,欲不可纵,乐不可极,志不可满——提高个人修养
查看>>
linux系统增加swap容量的方法
查看>>