簡體   English   中英

jmp和ja有什么區別?

[英]What is the difference between jmp and ja?

根據我的理解, jmp執行無條件跳轉,而ja跳轉,如果值是無符號的。 我說得對嗎?

一個例子將不勝感激。

你是正確的, jmp無條件跳轉。

但是,您對ja描述不正確。 它根據最近的cmp操作的結果進行條件跳轉。 如果第一個操作數大於第二個操作數,則跳轉,使用無符號比較而不是簽名比較。 jg將使用簽名比較。

ja表示“如果進位標志未設置且零標志未設置則跳轉”。

cmp指令實際上與sub指令相同(即它減去其參數),除了不保存結果但只更新條件標志。

如果我們比較無符號整數,如果b大於a ,則減去(ab)設置進位標志,如果b等於a ,則減去零標志,所以如果這兩個標志都沒有設置,則a大於b

如果我們想要對有符號數進行比較,我們必須將符號標志(即結果的最高位)與溢出標志進行比較,並檢查零標志是否未設置,這是jg指令的作用。

因此, cmp指令不關心參數是有符號還是無符號。 這種區別僅在於如何在之后解釋標志。

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM