汇编语言TEST指令:对两个操作数进行逻辑(按位)与操作

55 篇文章 1 订阅
55 篇文章 1 订阅

TEST 指令在两个操作数的对应位之间进行 AND 操作,并根据运算结果设置符号标志位、零标志位和奇偶标志位。

 

TEST 指令与《AND指令》一节中介绍的 AND 指令唯一不同的地方是,TEST 指令不修改目标操作数。TEST 指令允许的操作数组合与 AND 指令相同。在发现操作数中单个位是否置位时,TEST 指令非常有用。

示例:多位测试

TEST 指令同时能够检查几个位。假设想要知道 AL 寄存器的位 0 和位 3 是否置 1,可以使用如下指令:

test al, 00001001b ;测试位 0 和位 3

(本例中的 0000 1001 称为位掩码。)从下面的数据集例子中,可以推断只有当所有测试位都清 0 时,零标志位才置 1:

0  0  1  0  0  1  0  1    <- 输入值
0  0  0  0  1  0  0  1    <- 测试值
0  0  0  0  0  0  0  1    <- 结果:ZF=0

0  0  1  0  0  1  0  0    <- 输入值
0  0  0  0  1  0  0  1    <- 测试值
0  0  0  0  0  0  0  0    <- 结果:ZF=1

标志位

TEST 指令总是清除溢出和进位标志位,其修改符号标志位、零标志位和奇偶标志位的方法与 AND 指令相同。

6.1 布尔和比较指令简介
6.2 AND指令
6.3 OR指令
6.4 位向量(位映射)
6.5 XOR指令
6.6 NOT(反码)指令
6.7 TEST指令
6.8 CMP(比较)指令
6.9 置位和清除单个CPU标志位
6.10 64位模式下的布尔指令
6.11 条件跳转简介
6.12 条件跳转指令汇总
6.13 条件跳转应用及示例
6.14 LOOPZ和LOOPE指令
6.15 LOOPNZ和LOOPNE指令
6.16 使用汇编语言实现IF语句
6.17 使用汇编语言实现逻辑表达式
6.18 使用汇编语言实现WHILE循环
6.19 表驱动选择
6.20 有限状态机
6.21 条件控制流伪指令
6.22 .IF、.ELSE、.ELSEIF、.ENDIF伪指令
6.23 用.REPEAT和.WHILE实现循环

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值