OllyDbg---比較、條件跳轉指令


比較和條件跳轉

CMP

  • 比較兩個操作數,相當於SUB指令,但是相減的結果不保存到第一個操作數,而是根據相減的結果來改變零標志位。當兩個操作數相等時,零標志位Z置為1。
  • 兩個操作數不相等時,零標志位Z被置為0,而且如果第一個操作數大於第二個操作數,符號位S被置為0;如果第一個操作數小於第二個操作數,符號位S被置為1。

TEST

  • 兩個操作數進行與操作,結果不保存,但是會改變標志位的結果。
  • 可以用這個指令來判斷eax是否等於0。

JUMPS

  • 所有的跳轉指令都會指向程序將會跳轉的地址

JMP跳轉

  • 無條件跳轉,總是跳轉到指定的地址

JE JZ 結果不為零跳轉

  • 兩個跳轉指令是等價的,書寫不同而已,零標志位Z被置為1時跳轉

JNE JNZ 結果為零跳轉

  • 與JE JZ相反,零標志位為0時,跳轉

JS 結果為負跳轉

  • 當比較的結果為負時跳轉,即符號位S為1時跳轉

JNS 結果不為負跳轉

  • 與JS相反,當符號位S為0時,跳轉

JP JPE 結果中1的個數為偶數跳轉

  • 比較的結果中,1的個數要是偶數,奇偶標志P會被置為1,則跳轉

JNP JNPE 結果中1的個數為奇數跳轉

  • 與JP JPE相反,當比較的結果中1的個數為奇數,奇偶標志位P被置為0時,跳轉。

JO 結果溢出跳轉

  • 當發生溢出的時候,溢出標志O被置為1,跳轉

JNO 結果沒有溢出跳轉

  • 與JO相反,當溢出標志O為0時,跳轉,即沒有發生溢出時。

JB JNAE 小於跳轉(無符號數)

  • 第一個操作數小於第二個操作數時跳轉,即進位借位標志位C被置為1

JNB JAE 大於跳轉(無符號數)

  • 與JB JNAE相反,當借位進位標志位為0時跳轉,

JBE JNA 小於等於跳轉(無符號數)

  • 小於或者等於的時候跳轉,需要判斷兩個標志位,當進位借位標志C被置為1或者零標志Z被置為1時,跳轉。

JNBE JA 大於跳轉(無符號數)

  • 與JBE相反,當進位借位標志C和零標志位Z都為0時,才會跳轉。

JL JNGE 小於跳轉(有符號數)

  • 小於的時候跳轉,與JB不同,這個指令根據符號標志位S來決定是否跳轉
  • 溢出標志O與符號標志S不同時,跳轉

JNL JGE 大於等於跳轉(有符號數)

JLE JNG 小於等於跳轉(有符號數)

JNLE JG 大於跳轉(有符號數)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM