TEST ECX,3不测试ECX指出的值

时间:2015-11-11 14:54:20

标签: testing assembly x86 ollydbg

我有这个:

TEST ECX, 3

ECX包含地址内存,其中包含字符'a'

但是,测试结束后,ZF设置为1!这怎么可能?

以下是指令的屏幕截图beforeafter

2 个答案:

答案 0 :(得分:5)

ZF表示最后一条指令的结果是否为零。您的代码行根据

的结果有效地设置标志,包括ZF
0x42AA8C AND 0x03

0x00,因为0b1100 AND 0b0011 = 0x00 因此,设置零标志。

有关TEST和其他x86说明的详细信息,请查看here

答案 1 :(得分:0)

您将TEST指令与寄存器操作数一起使用,因此测试了寄存器的内容。要测试内存位置,请使用内存操作数:

TEST DWORD PTR [ECX], 3