OD 彙編指令 記錄(1)

2021-10-03 19:53:56 字數 3025 閱讀 2850

一. mov eax , 0x12

1.mov 目標運算元 ,源運算元

作用把 源運算元拷貝到目標運算元

mov 語法

1.mov r/m8 ,r8 r 代表通用暫存器

2.mov r/m16 ,r16 m 代表記憶體

3.mov r/m32 ,r32 imm 代表立即數

4.mov r8,r/m8 r8代表8位暫存器

5.mov r16,r/m16 m8代表8位記憶體

6.mov r32,r/m32 imm8代表8位立即數

7.mov r8,imm8

8.mov r16,imm16

9.mov r32,imm32

二.add加運算

add eax ,12

add 目標運算元 ,源運算元

作用:把源運算元 與目標運算元相加,並且把結果存到目標運算元

1.add r/m8 ,r8

2.add r/m16 ,r16

3.add r/m32 ,r32

4.add r8,r/m8

5.add r16,r/m16

6.add r32,r/m32

7.add r8,imm8

8.add r16,imm16

9.add r32,imm32

三.減運算 sub

sub eax ,12

sub 目標運算元 ,源運算元

作用:用目標運算元相減去源運算元,並且把結果存到目標運算元

1.sub r/m8 ,r8

2.sub r/m16 ,r16

3.sub r/m32 ,r32

4.sub r8,r/m8

5.sub r16,r/m16

6.sub r32,r/m32

7.sub r8,imm8

8.sub r16,imm16

9.sub r32,imm32

四. 與運算and

and eax,12

and 目標運算元 ,源運算元

作用:用目標運算元和源運算元進行(與運算&),並且把結果存到目標運算元

1.and r/m8 ,r8

2.and r/m16 ,r16

3.and r/m32 ,r32

4.and r8,r/m8

5.and r16,r/m16

6.and r32,r/m32

7.and r8,imm8

8.and r16,imm16

9.and r32,imm32

五.或運算or

or eax,12

or 目標運算元 ,源運算元

作用:用目標運算元和源運算元進行(或運算|),並且把結果存到目標運算元

1.or r/m8 ,r8

2.or r/m16 ,r16

3.or r/m32 ,r32

4.or r8,r/m8

5.or r16,r/m16

6.or r32,r/m32

7.or r8,imm8

8.or r16,imm16

9.or r32,imm32

六.異或運算or

xor eax,12

xor 目標運算元 ,源運算元

作用:用目標運算元和源運算元進行(異或運算),並且把結果存到目標運算元

1.xor r/m8 ,r8

2.xor r/m16 ,r16

3.xor r/m32 ,r32

4.xor r8,r/m8

5.xor r16,r/m16

6.xor r32,r/m32

7.xor r8,imm8

8.xor r16,imm16

9.xor r32,imm32

七.not運算

not eax

not 目標運算元

作用:用目標運算元把運算元按位取反

1.not r/m8

2.not r/m16

3.not r/m32

八 .取記憶體位址

lea eax,dword ptr ds:[0012ffc4]

lea 目標運算元 ,源運算元

作用把記憶體編號位址0012ffc4值給到eax ,存記憶體值

九.堆疊

1.push eax 壓棧:把eax的資料壓到棧頂裡面

2.pop eax 出棧:把棧頂的資料彈出到eax

壓棧,出棧可以操作eax(4個位元組,32位二進位制)和 ax(2個位元組,16位二進位制),8位二進位制則不行

3.pushad 是一次性直接壓入8個暫存器的資料

4.popad 一次性出棧8個暫存器的資料

十.adc 帶進製的加法指令

mov eax ,1

adc eax,2 結果為4

adc r//m,/r/m/im 兩邊不能同時為記憶體

十一.sbb 帶借位的減法

sbb r//m,/r/m/im 兩邊不能同時為記憶體

十二.xchg 交換資料

xchg eax,ecx

xchg r//m,/r/m 兩邊不能同時為記憶體

十三.movs 移動資料 記憶體-記憶體

movsb byte ptr es:[0x12345678],byte ptr ds:[0x1ffcde]

movsw word ptr es:[0x12345678],word ptr ds:[0x1ffcde]

movsd dword ptr es:[0x12345678],word ptr ds:[0x1ffcde]

記憶體編號位址會加2個位元組還是減會受到df位的影響

十四.stos指令:將al/ax/eax的值儲存到[edi]指定的記憶體單元

stosb byte ptr es:[edi]

stosw word ptr es:[edi]

stosd dword ptr es:[edi]

記憶體編號位址會加2個位元組還是減會受到df位的影響

十四.rep指令:按計數暫存器(ecx)中指定的次數重複執行字串指令

mov ecx,5

rep stosb byte ptr es:[edi]

彙編記錄 99 彙編指令

mov 賦值 指令 mov a,b 把 b 的資料傳送到 a 中 有以下形式 1 mov 暫存器,任意 資料 記憶體單元 暫存器 段暫存器 字元 mov ax,9 1 bx ds a 2 mov 記憶體單元,暫存器 段暫存器 mov 2 bx ds 3 mov 段暫存器,暫存器 記憶體單元 mov ...

od基礎彙編

標誌暫存器代表某種狀態。在32位cpu中有32個不同的標誌暫存器,不過不用擔心,我們只關心其中的3個 zf of cf。在逆向工程中,你了解了標誌暫存器就能知道程式在這一步是否會跳轉,標誌暫存器就是乙個標誌,只能是0或者1,它們決定了是否要執行某個指令。z flag 零標誌 zf是破解中用得最多的暫...

彙編常用指令記錄

指令的一般格式 其中 為不可省略,為可以省略。注意 opcode cond s之間沒有空格,s和rd之間使用空格隔開。lsl 左移指令 mov r1,r0,lsl 3 將暫存器r0中的值左移3位後傳送到暫存器r1中cmp 比較指令 cmp r1,r0 將暫存器r1的值與暫存器r2的值相減,並根據結果...