[英]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.