鸽了好久了
test
TEST指令执行按位逻辑与,丢弃实际结果,并根据逻辑结果置零ZF,并且:如果结果为零,则置ZF = 1,否则置ZF = 0。
text eax, eax
特殊地,eax为0时置ZF = 1
sbb
目的操作数减源操作数减进位标志。
进位标志为0或1。1的十六进制表示是0FFFFFFFFh
jnz/jz
jz:是零则跳转。ZF零标志位为1时,结果为0,则跳转。
是否为0,看的是结果,而不是零标志位
Test的一个非常普遍的用法是用来测试一方寄存器是否为空:
test ecx, ecx
jz somewhere
如果ecx为零,设置ZF零标志为1,Jz跳转。