标签: testing assembly x86 ollydbg
我有这个:
TEST ECX, 3
ECX包含地址内存,其中包含字符'a'。
ECX
'a'
但是,测试结束后,ZF设置为1!这怎么可能?
以下是指令的屏幕截图before和after。
答案 0 :(得分:5)
ZF表示最后一条指令的结果是否为零。您的代码行根据
0x42AA8C AND 0x03
0x00,因为0b1100 AND 0b0011 = 0x00 因此,设置零标志。
0x00
0b1100 AND 0b0011 = 0x00
有关TEST和其他x86说明的详细信息,请查看here。
TEST
答案 1 :(得分:0)
您将TEST指令与寄存器操作数一起使用,因此测试了寄存器的内容。要测试内存位置,请使用内存操作数:
TEST DWORD PTR [ECX], 3