免费域名建站,数字展厅制作公司,企业墙面设计,建设本地网站 配置iis----------------------------------------------------------------------------------------------------------------------- 一.BT 指令
格式: BT OPD,OPS
功能: 目的操作数OPD中由源操作数OPS指定的位送CF标志
说明: 1. 在指令中,目的操作数OPD只能是16/32位通用寄存器…
----------------------------------------------------------------------------------------------------------------------- 一.BT 指令
格式: BT OPD,OPS
功能: 目的操作数OPD中由源操作数OPS指定的位送CF标志
说明: 1. 在指令中,目的操作数OPD只能是16/32位通用寄存器或存储单元,用于指定要测试的数据;源操作数OPS必须是8位立即数或者是与目的操作数等长的16/32位通用寄存器,用于指定要测试的位. 如果目的操作数是寄存器,则源操作数除以16/32的余数就是要测试的位,它在0-15/31之间. 2. 举例: MOV EAX 12345678H ;EAX12345678H BT EAX,5 ;EAX的D5位1--CF,EAX12345678H
注意: 如果目的操作数是存储单元, 则该单元的最低位为0.从这个最低位向地址高端每位依次增量,向地址代低端每位依次减量,这部分存储器数据作为一个2G-1~-2G长的位串.此时,有符号源操作数就指示要测试的位. 二.BTS指令
格式: BTS OPD,OPS
功能: 报目的操作数OPD中由源操作数OPS指定的位送CF标志,然后对那一位置位.
说明: 1. 在指令中,目的操作数OPD只能是16/32位通用寄存器或存储单元,用于指定要测试的数据;源操作数OPS必须是8位立即数或者是与目的操作数等长的16/32位通用寄存器,用于指定要测试的位.如果目的操作数是寄存器,则源操作数除以16/32的余数就是要测试的位,它在0-15/31之间. 2. 举例: MOV EAX 12345678H ;EAX12345678H BTS EAX,34 ;EAX的D2位0--CF,EAX1224527CH 注意: 如果目的操作数是存储单元,则该单元的最低位为0.从这个最低位向地址高端每位依次增量,向地址代低端每位依次减量,这部分存储器数据作为一个2G-1~-2G长的位串.此时,有符号源操作数就指示要测试的位 三.BTC 指令
格式: BTC OPD,OPS
功能: 报目的操作数OPD中由源操作数OPS指定的位送CF标志,然后对那一位求反.
说明: 1. 在指令中, 目的操作数OPD只能是16/32位通用寄存器或存储单元,用于指定要测试的数据;源操作数OPS必须是8位立即数或者是与目的操作数等长的16/32位通用寄存器,用于指定要测试的位.如果目的操作数是寄存器,则源操作数除以16/32的余数就是要测试的位,它在0-15/31之间. 2. 举例: MOV EAX 12345678H ;EAX12345678H BTC EAX,10 ;EAX的D10位1--CF,EAX12345278H 注意: 如果目的操作数是存储单元,则该单元的最低位为0.从这个最低位向地址高端每位依次增量,向地址代低端每位依次减量,这部分存储器数据作为一个2G-1~-2G长的位串.此时,有符号源操作数就指示要测试的位. 四.BTR 指令
格式: BTR OPD,OPS
功能: 报目的操作数OPD中由源操作数OPS指定的位送CF标志,然后对那一位复位.
说明: 1. 在指令中,目的操作数OPD只能是16/32位通用寄存器或存储单元,用于指定要测试的数据;源操作数OPS必须是8位立即数或者是与目的操作数等长的16/32位通用寄存器,用于指定要测试的位.如果目的操作数是寄存器,则源操作数除以16/32的余数就是要测试的位,它在0-15/31之间. 2. 举例: MOV EAX 12345678H ;EAX12345678H BTR EAX,20 ;EAX的D20位1--CF,EAX12245278H
注意: 如果目的操作数是存储单元,则该单元的最低位为0.从这个最低位向地址高端每位依次增量,向地址代低端每位依次减量,这部分存储器数据作为一个2G-1~-2G长的位串.此时,有符号源操作数就指示要测试的位. ---------------------------------------------------------------------------------------------------------------------------------
.code main proc ;BT 把 10000001b 的第七位复制到 CF, 得知是 1 mov dx, 10000001b bt dx, 7 lahf PrintHex ah ;47 - 01000111b (CF1) ;BT 把 10000001b 的第六位复制到 CF, 得知是 0 bt dx, 6 lahf PrintHex ah ;86 - 10000110b (CF0) ;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 指令
格式: BSF OPD,OPS 功能: 向前位扫描指令.本指令从最低位(第0位)开始测试OPS中的各位,当遇到有1的位时,ZF0,且将该位的序号存入OPD中,如OPS的所有位都是0,则ZF1且OPD中的值无意义.(执行逻辑移位前,决定应移位的次数) 说明: 1. OPD和OPS应为同类型的16或32位的寄存器或存储器操作数,OPD必须为寄存器操作数. 2. 举例: 假定EBX中的数是12F234E0H,指令BSF EAX,EBX执行后,EAX5,ZF0 六.BSR 指令
格式: BSR OPD,OPS 功能: 向后位扫描指令.本指令从最高位(第15位或31位)开始测试OPS中的各位,当遇到有1的位时,ZF0,且将该位的序号存入OPD中,如OPS的所有位都是0,则ZF1且OPD中的值无意义.(执行逻辑移位前,决定应移位的次数) 说明: 1. OPD和OPS应为同类型的16或32位的寄存器或存储器操作数,OPD必须为寄存器操作数. 2. 举例: 假定EBX中的数是12F234E0H,指令BSR EAX,EBX执行后,EAX28,ZF0
-------------------------------------------------------------------------------------------------------------------
.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 (ZF1) PrintHex cx ;FFFF - 找不到时不会影响到目的值 ret main endp end main
----------------------------------------------------------------------------------------------------------------