彙編學習 二

2021-10-06 18:35:15 字數 1544 閱讀 8259

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...