2015-11-11 23 views
0

我有這樣的:TEST ECX,3並非在測試值指向ECX

TEST ECX, 3 

ECX含有包含字符'a'地址存儲器。

但是,在測試之後,ZF被設置爲1!這怎麼可能?

這裏是屏幕截圖beforeafter的說明。

+0

ZF在「after」圖像中的位置是否正確? – Downvoter

+2

'0xc和0x3 = 0x00',所以我不知道你爲什麼認爲這很奇怪。 – Downvoter

+0

這可能怎麼樣?簡單。 'test'指令與'和'指令的功能相同,只有一個小的差別 - 目標從不更新。因此,正如'cad'所說的,如果我們查看低8位,則得到0x42AA8C&0x3或10001100&00000011。 – enhzflep

回答

5

ZF指示最後一條指令的結果是否爲零。你的代碼行有效地設置標誌,包括ZF,根據

0x42AA8C AND 0x03 

其結果是0x00因爲0b1100 AND 0b0011 = 0x00
因此,置零標誌。

有關TEST和其他x86指令的更多信息,看看here

0

您使用帶有寄存器操作數的TEST指令,從而對寄存器的內容進行了測試。要測試內存位置,請使用內存操作數:

相關問題