2020 12 04常用彙編指令認識

2021-10-11 07:24:15 字數 3203 閱讀 3899

6.常用彙編指令的認識

軟體破解常用彙編指令 

二、算術運算指令 

─────────────────────────────────────── 

add    加法. 

adc    帶進製加法. 

inc    加 1. 

aaa    加法的ascii碼調整. 

daa    加法的十進位制調整. 

sub    減法. 

sbb    帶借位減法. 

dec    減 1. 

nec    求反(以 0 減之). 

cmp    比較.(兩運算元作減法,僅修改標誌位,不回送結果). 

aas    減法的ascii碼調整. 

das    減法的十進位制調整. 

mul    無符號乘法. 

imul    整數乘法. 

以上兩條,結果回送ah和al(位元組運算),或dx和ax(字運算), 

aam    乘法的ascii碼調整. 

div    無符號除法. 

idiv    整數除法. 

以上兩條,結果回送: 

商回送al,餘數回送ah, (位元組運算); 

或  商回送ax,餘數回送dx, (字運算). 

aad    除法的ascii碼調整. 

cbw    位元組轉換為字. (把al中位元組的符號擴充套件到ah中去) 

cwd    字轉換為雙字. (把ax中的字的符號擴充套件到dx中去) 

cwde    字轉換為雙字. (把ax中的字符號擴充套件到eax中去) 

cdq    雙字擴充套件.    (把eax中的字的符號擴充套件到edx中去) 

三、邏輯運算指令 

─────────────────────────────────────── 

and    與運算. 

or      或運算. 

xor    異或運算. 

not    取反. 

test    測試.(兩運算元作與運算,僅修改標誌位,不回送結果). 

shl    邏輯左移. 

sal    算術左移.(=shl) 

shr    邏輯右移. 

sar    算術右移.(=shr) 

rol    迴圈左移. 

ror    迴圈右移. 

rcl    通過進製的迴圈左移. 

rcr    通過進製的迴圈右移. 

以上八種移位指令,其移位次數可達255次. 

移位一次時, 可直接用操作碼.  如 shl ax,1. 

移位》1次時, 則由暫存器cl給出移位次數. 

如  mov cl,04 

shl ax,cl 

四、串指令 

─────────────────────────────────────── 

ds:si  源串段暫存器  :源串變址. 

es:di  目標串段暫存器:目標串變址. 

cx      重複次數計數器. 

al/ax  掃瞄值. 

d標誌  0表示重複操作中si和di應自動增量; 1表示應自動減量. 

z標誌  用來控制掃瞄或比較操作的結束. 

movs    串傳送. 

( movsb  傳送字元.    movsw  傳送字.    movsd  傳送雙字. ) 

cmps    串比較. 

( cmpsb  比較字元.    cmpsw  比較字. ) 

scas    串掃瞄. 

把al或ax的內容與目標串作比較,比較結果反映在標誌位. 

lods    裝入串. 

把源串中的元素(字或位元組)逐一裝入al或ax中. 

( lodsb  傳送字元.    lodsw  傳送字.    lodsd  傳送雙字. ) 

stos    儲存串. 

是lods的逆過程. 

rep            當cx/ecx<>0時重複. 

repe/repz      當zf=1或比較結果相等,且cx/ecx<>0時重複. 

repne/repnz    當zf=0或比較結果不相等,且cx/ecx<>0時重複. 

repc          當cf=1且cx/ecx<>0時重複. 

repnc          當cf=0且cx/ecx<>0時重複. 

五、程式轉移指令 

─────────────────────────────────────── 

1>無條件轉移指令 (長轉移) 

jmp    無條件轉移指令 

call    過程呼叫 

ret/retf過程返回. 

2>條件轉移指令 (短轉移,-128到+127的距離內) 

( 當且僅當(sf xor of)=1時,op1迴圈控制指令(短轉移) 

loop            cx不為零時迴圈. 

loope/loopz    cx不為零且標誌z=1時迴圈. 

loopne/loopnz  cx不為零且標誌z=0時迴圈. 

jcxz            cx為零時轉移. 

jecxz          ecx為零時轉移. 

4>中斷指令 

int    中斷指令 

into    溢位中斷 

iret    中斷返回 

5>處理器控制指令 

hlt    處理器暫停, 直到出現中斷或復位訊號才繼續. 

wait    當晶元引線test為高電平時使cpu進入等待狀態. 

esc    轉換到外處理器. 

lock    封鎖匯流排. 

nop    空操作. 

stc    置進製標誌位. 

clc    清進製標誌位. 

cmc    進製標誌取反. 

std    置方向標誌位. 

cld    清方向標誌位. 

sti    置中斷允許位. 

cli    清中斷允許位. 

六、偽指令 

─────────────────────────────────────── 

dw      定義字(2位元組). 

proc    定義過程. 

endp    過程結束. 

segment 定義段. 

assume  建立段暫存器定址. 

ends    段結束. 

end    程式結束. 

常用彙編指令

1 加減指令 2 adr指令 adr是小範圍的位址讀取偽指令,ldr是大範圍的讀取位址偽指令。可實際上adr是將基於pc相對偏移的位址值或基於暫存器相對位址值讀取的為指令,而ldr用於載入32為立即數或乙個位址到指定的暫存器中。到這兒就會看到其中的區別了。如果在程式中想載入某個函式或者某個在聯接時候...

常用彙編指令

一 資料傳輸指令 它們在存貯器和 暫存器 寄存 器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依...

常用彙編指令

1 資料傳送指令 mov move r1,r2 r1 r2 move r1,4096 r1 4096 2 偽指令ldr 用於將乙個大於八位的資料裝入暫存器 ldr r1,0x123456789 r1 0x123456789 ldr r1,label 獲取絕對位址,即label的位址 label 3 ...