1. jmp:改變eip的值。
最大區別:會改變esp(棧頂)。
1. cmp指令:
該指令是比較兩個運算元,實際上,它相當於sub指令,但是相減的結構並不儲存到第乙個運算元中。
只是根據相減的結果來改變零標誌位的,當兩個運算元相等的時候,零標誌位置1。
可以用來判斷兩個數是否相等:cmp eax, eax 看zf,為1則相等。
也可以比較兩個數的大小:cmp eax, eax 看sf,為1則表示結果為負數。
2. text指令
相當於and(邏輯乘法),text eax, eax,並不改變原暫存器的值。
用來測試某個暫存器是否為0。text eax, eax:如果結果不為0(zf標誌位),則表示原暫存器中的值也不為0。
而是用於修改eip的,相當於jmp,但適用於不同情況。
1. je, jz + 位址 結果為0則跳轉(相等時跳轉) zf = 1
2. jne, jnz 結果不為零/不相等時跳轉 zf = 0
3. js (sign) 結果為負則跳轉 sf = 1
4. jns 結果非負則跳轉 sf = 0
5. jp, jpe(jump if parity (even)) 結果中1的個數為偶數則跳轉 pf = 1
6. jnp, jpo(jump if not parity (odd)) 結果中1的個數為奇數則跳轉 pf = 0
7. jo 結果溢位了則跳轉 of = 1
8. jno 結果沒有溢位則跳轉 of = 0
9. jc(carry) / jb(beolw小於) / jnae(not above equal不大於等於) 小於則跳轉(無符號數) cf = 1
10. jnc / jnb / jae 大於等於則跳轉(無符號數) cf = 0
11. jbe / jna 小於等於則跳轉(無符號數) cf = 1 or zf = 1
12. jnbe / ja 大於則跳轉(無符號數) cf = 0 and zf = 0
13. jl / jnge 小於則跳轉(有符號數) sf≠ of
14. jnl / jge 大於等於則跳轉(有符號數) sf=of
15. jle / jng 小於等於則跳轉(有符號數) zf=1 or sf≠ of
16. jnle, jg 大於等於則跳轉(有符號數) zf=0 and sf=of
彙編學習 二
如果要能編譯和執行asm檔案,則必須安裝masmsdk2.建立visual c 空白工程 3.新建asm檔案 這是網上摘錄的 mymain.asm.386 model flat,stdcall option casemap none include windows.inc include kerne...
彙編loop ARM彙編(二)
前言 初學逆向 請多多指教 學習到的內容 1 arm的定址方式 一小部分 2 arm的常用指令集 arm的定址方式 之前arm彙編 一 中的間接定址還有部分忘記寫了,今天補上 在對多暫存器及塊拷貝定址的時候,需要知道的如下內容 基本使用的命令為 ldm stm,然後還有關於在進行拷貝的時候的暫存器變...
組合語言學習(二)
今天學習了王爽 組合語言 第5 6章。我感覺這兩章主要加深了對於段這個概念的理解。第5章 bx 和loop指令,重點在於段位址和偏移位址的理解,段字首的應用。第6章包含多個段的程式,重點在於理解為什麼要分段,掌握分段匯程式設計序的寫法,搞清楚段在記憶體當中的儲存。1.loop指令和 bx 的應用 1...