鸽了好久了

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跳转。

https://blog.csdn.net/gwzz1228/article/details/37595471

Last modification:September 9th, 2020 at 03:28 pm