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