测试条件
JZ ZF=1 // JZ=jump if zero (结果为0则设置ZF零标志为1,跳转)
JNZ ZF=0 // JNZ=jump if not zero
test属于逻辑运算指令
功能: 执行BIT与BIT之间的逻辑运算
测试(两操作数作与运算,仅修改标志位,不回送结果).
Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。
TEST AX,BX 与 AND AX,BX 命令有相同效果
运用举例:
1.Test用来测试一个位,
例如寄存器: test eax, 100b; b后缀意为二进制
jnz ******;
如果eax右数第三个位为1,jnz将会跳转
jnz跳转的条件是ZF=0,ZF=0意味着ZF(零标志)没被置位,即逻辑与结果为1.
2.Test的一个非常普遍的用法是用来测试一方寄存器是否为空:
test ecx, ecx
jz somewhere 如果ecx为零,设置ZF零标志为1,Jz跳转
JZ ZF=1 // JZ=jump if zero (结果为0则设置ZF零标志为1,跳转)
JNZ ZF=0 // JNZ=jump if not zero
test属于逻辑运算指令
功能: 执行BIT与BIT之间的逻辑运算
测试(两操作数作与运算,仅修改标志位,不回送结果).
Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。
TEST AX,BX 与 AND AX,BX 命令有相同效果
运用举例:
1.Test用来测试一个位,
例如寄存器: test eax, 100b; b后缀意为二进制
jnz ******;
如果eax右数第三个位为1,jnz将会跳转
jnz跳转的条件是ZF=0,ZF=0意味着ZF(零标志)没被置位,即逻辑与结果为1.
2.Test的一个非常普遍的用法是用来测试一方寄存器是否为空:
test ecx, ecx
jz somewhere 如果ecx为零,设置ZF零标志为1,Jz跳转