汇编语言TEST指令:对两个操作数进行逻辑(按位)与操作 EXFxiw
^[Er%yr0
"AK3t'
jF*
TEST 指令在两个操作数的对应位之间进行 AND 操作,并根据运算结果设置符号标志位、零标志位和奇偶标志位。 @
:4Kk
4g1
3ElpS^2W
9c7}-Go
TEST 指令与 AND 指令唯一不同的地方是,TEST 指令不修改目标操作数。TEST 指令允许的操作数组合与 AND 指令相同。在发现操作数中单个位是否置位时,TEST 指令非常有用。 YPy))>Q>cK
?W|IC8~d')
eztk$o
示例:多位测试 @ty|HXW
fBOPd=
.nH
/=
TEST 指令同时能够检查几个位。假设想要知道 AL 寄存器的位 0 和位 3 是否置 1,可以使用如下指令: >oNk(.
%
test al, 00001001b ;测试位 0 和位 3 XfrnM^oty
85{vz|(':
bX(*f>G'
(本例中的 0000 1001 称为位掩码。)从下面的数据集例子中,可以推断只有当所有测试位都清 0 时,零标志位才置 1: ~+C#c,Nw
0 0 1 0 0 1 0 1 <- 输入值 ed*AU,^@v
0 0 0 0 1 0 0 1 <- 测试值 U[D<%7f
0 0 0 0 0 0 0 1 <- 结果:ZF=0 ;2|H6IN"
(*x"6)`
<"+C<[n.
0 0 1 0 0 1 0 0 <- 输入值 8)!;[G|
0 0 0 0 1 0 0 1 <- 测试值 ZO1J";>u
0 0 0 0 0 0 0 0 <- 结果:ZF=1 {LD8ie|x1`
bN&da
[K
r?I(me,
标志位 ,s76]$%4
TEST 指令总是清除溢出和进位标志位,其修改符号标志位、零标志位和奇偶标志位的方法与 AND 指令相同。 pzr-}>xrZ