2016-05-18 37 views
-3

鑑於「...當算術或邏輯運算的結果產生零結果時設置零標誌(ZF)」,cmp指令如何與ZF交互?cmp指令何時修改zf標誌? [x86 MASM]

考慮下面的代碼片段,

mov eax, 0 
mov edx, 1 
cmp eax, edx 

如何CMP評估兩個操作數,什麼是ZF設置?如果操作數反轉(cmp edx,eax),那麼ZF是否設置爲與原始語句中相同的值?

如果我要比較兩個相同的值,cmp如何評估操作數以及ZF的設置是什麼?

cmp eax, eax 
+1

請參閱[x86 tag wiki](http://stackoverflow.com/tags/x86/info)以獲取insn set reference和tutorials/guides的鏈接。 –

回答

3

如何CMP評價兩個操作數?

the manual

直:

比較是通過從第一操作數中減去 第二操作數,然後以相同的方式作爲SUB指令設定的狀態標誌來執行。


如果操作數互換(CMP EDX,EAX),則ZF設置爲相同的值作爲初始語句?

對於採埃孚而言,是的。對於其他標誌,不一定,因爲減法不是可交換的。

+0

僅當兩個操作數具有相同的值時才設置ZF。更改訂單不會影響這一點。當兩個操作數具有相同的值時,減法是可交換的。 –

+0

「減去並檢查是否等於零」是可交換的,儘管 – harold

+0

這是真的。編輯。 – Michael