9
A
回答
16
jz
是「跳躍如果零」。 cmp
減去其兩個操作數,並相應地設置標誌。 (請參閱here以供參考。)
如果兩個操作數相等,則減法運算結果爲零,並且ZF
標誌將被設置。
因此,在您的示例中,如果al
爲1,則不會採取其他措施。
3
jz
意味着如果跳爲零。在這種情況下,只有在al
爲1時纔會跳轉。
這是因爲cmp
通常等於sub
(減),但實際上沒有更改該值。
cmp al, 1
將基於如果從al
中減去1會發生什麼來設置處理器標誌(包括零標誌)。
如果al
爲2,則跳轉不會被執行(因爲零標誌未被設置),並且代碼將繼續在jz
之後的指令處執行。
順便說一句,jz
往往是相同作爲操作碼,因爲je
他們實際上意味着同樣的事情。參見例如Wikipedia page on x86 control flow:零點
跳轉
jz loc
荷載EIP指定地址,如果零位被從先前的算術表達式設定。 jz與je相同。
1
'跳轉零' - 如果設置了零標誌,則跳轉到標籤'mub'。 'cmp'是一個減法,只設置標誌&因此,如果a1是2,(2-1)<> 0,那麼零標誌清零,跳轉將不會執行。
相關問題
- 1. Cmp指令不匹配
- 2. 瞭解cmp指令
- 3. 86怪「CMP」指令
- 4. 爲什麼此CMP指令失敗?
- 5. 裝配testq和cmovg指令
- 6. JNZ和CMP組裝說明
- 7. 裝配移動指令有異常嗎?
- 8. 裝配中MOV指令的有效性
- 9. x86 CMP指令不適用於單字比較
- 10. 裝配。反向字
- 11. 什麼是彙編cmp指令完全比較?
- 12. 如何將IA32'cmp'指令轉換爲Y86?
- 13. cmp指令何時修改zf標誌? [x86 MASM]
- 14. AngularJS:在指令中包裝指令
- 15. CMP命令無法正常工作
- 16. Seg。故障 - 裝配(NASM)
- 17. 組裝MOVS指令
- 18. 加密 「register.php?username=jz&[email protected]」
- 19. 「Jump if zero」(jz)更快嗎?
- 20. 裝配大數字計算器
- 21. 裝配8086程序 - 裝配錯誤
- 22. angularjs將ngModel從包裝指令傳遞到包裝指令
- 23. 用C程序調用linux命令cmp
- 24. 包裝divs輸入指令
- 25. T4模板組裝指令
- 26. 作曲家安裝指令
- 27. 組裝MIPS TAl指令
- 28. 組裝測試指令
- 29. 包裝JSTree在角指令
- 30. 角度 - 裝飾指令
jz = je,這是相同的指令。 – 2012-02-18 18:34:50