mov
功能:用來進行資料傳輸。
以 「mov a, b」為例,相當於a=b。
具有以下形式:mov 暫存器, 資料;mov 暫存器, 暫存器;mov 暫存器, 記憶體單元;mov 記憶體單元, 暫存器;mov 段暫存器,暫存器;
add功能:用來做加法。
以「add a, b」為例,相當於a=a+b。
具有的形式,和 mov 一樣。
sub功能:用來做減法。
以「sub a, b」為例,相當於a=a-b。
具有的形式,和 mov 一樣。
inc,dec
功能:用來自增,自減
以「inc a」為例,相當於a=a+1。
以「dec a」為例,相當於a=a-1。
push
功能:入棧
以「push a」為例,大概相當於:sp=sp-2 ;將a中的內容送入ss:sp指向的記憶體單元處。
具有以下形式:push 暫存器;push 記憶體單元;push 段暫存器
pop功能:出棧
以「pop a」為例,大概相當於:將ss:sp指向的記憶體單元處的資料送入a中;sp=sp+2。
具有形式和push相同
loop
功能:實現基於cx的迴圈功能
以「loop s「為例,大概相當於:cx=cx-1,判斷cx中的值,不為0則轉至標號處執行程式。
and功能:邏輯與指令,按位進行與運算。
通過該指令可將操作物件的相應位設定為0,其他位不變。
or功能:邏輯或指令,按位進行或運算。
通過該指令可將操作物件的相應位設定為1,其他位不變。
mul功能:乘法指令
當乘數是位元組運算元時,把al中的無符號數與乘數相乘,結果16位放入ax中
當乘數是字運算元時,把ax中的無符號數與乘數相乘,結果32位,高位放入dx中,低位放入ax中。
div功能:除法指令
除數:有8位和16位兩種,在乙個reg或記憶體單元中。
被除數:預設放在ax或dx和ax中,如果除數為8位,被除數則為16位,預設在ax中存放;如果除數為16位,被除數則為32位,在dx和ax中存放,dx存放高16位,ax存放低16位。
結果:如果除數為8位,則al儲存除法操作的商,ah儲存除法操作的餘數;如果除數為16位,則ax儲存除法操作的商,dx儲存除法操作的餘數。
jmp1. 依據位移進行轉移的 jmp 指令:
(1) jmp short 標號
這種 jmp指令實現的是段內短轉移,它對ip的修改範圍為 -128-127 。
實際上,「jmp short 標號」的功能為:(ip)=(ip)+8位位移
8位位移=標號處的位址-jmp指令後的第乙個位元組的位址。
short指明此處的位移為8位位移。
8位位移用補碼表示。
8位位移由編譯程式在編譯時算出。
(2)jmp near ptr 標號
這種 jmp 指令實現的是段內近轉移。
實際上,「jmp near 標號」的功能為:(ip)=(ip)+16位位移
2. 轉移的目的位址在指令中的 jmp 指令
jmp far ptr 標號 實現的是段間轉移,又稱為遠轉移。
3. 轉移位址在暫存器中的 jmp 指令
指令格式:jmp 16位 reg
功能:(ip)=(16位reg)
4.轉移位址在記憶體單元中的 jmp 指令
(1)jmp word ptr 記憶體單元位址
(2)jmp dword ptr 記憶體單元位址(段間轉移)
jcxz(jump if cx = zero)
指令格式:jcxz 標號
操作:當 cx=0 時,(ip)=(ip)+8位位移
retret指令用棧中的資料,修改ip的內容,從而實現近轉移;
cpu執行 ret 指令時,進行下面兩步操作:
(1)(ip)=((ss)*16+(sp))
(2)(sp)=(sp)+ 2
retf
retf指令用棧中的資料,修改cs和ip的內容,從而實現遠轉移;
cpu執行 retf 指令時,進行下面4步操作:
(1)(ip)=((ss)*16 + (sp))
(2)(sp)=(sp)+ 2
(3)(cs)=((ss)*16 + (sp))
(4)(sp)=(sp)+ 2
call
一. 依據位移進行轉移的call指令
1. call 標號(將當前的 ip 壓棧後,轉到標號處執行指令)
cpu執行這種格式的call指令後,進行如下的操作:
(1)(sp)=(sp)- 2
((ss)* 16 +(sp))=(ip)
(2)(ip)=(ip)+ 16位位移
二. 轉移的目的位址在指令中的call指令
1. call far ptr 標號
cpu執行此種格式的call指令時,進行如下的操作:
(1)(sp)=(sp)- 2
((ss)*16 + (sp))=(cs)
(sp)=(sp)- 2
((ss)*16 + (sp))=(ip)
(2)(cs)=標號所在段的段位址
(ip)=標號在段中的偏移位址
三. 轉移位址在暫存器中的call指令
call 16位 reg
功能:(sp)=(sp)- 2
((ss)*16 +(sp))=(ip)
(ip)=(reg)
四. 轉移位址在記憶體中的call指令
1. call word ptr 記憶體單元位址
功能:push ip
jmp word ptr 記憶體單元位址
2. call dwordd ptr 記憶體單元位址
功能:push cs
push ip
jmp dword ptr 記憶體單元位址
adcadc是帶進製加法指令,它利用了cf位上記錄的進製值。
指令格式:adc 操作物件1,操作物件2
功能:操作物件1=操作物件1+操作物件2+cf
sbbsbb是帶借位減法指令,它利用了cf位上記錄的借位值。
指令格式:sbb 操作物件1,操作物件2
功能:操作物件1=操作物件1-操作物件2-cf
cmpcmp是比較指令,cmp的功能相當於減法指令,只是不儲存結果,關鍵作用是對標誌暫存器的影響。
指令格式:cmp 操作物件1,操作物件2
功能:計算操作物件1-操作物件2但不儲存結果,僅僅根據計算結果對標誌暫存器進行設定。
檢測比較結果的條件轉移指令
指令含義
檢測的相關標誌位
je等於則跳轉
zf=1
jne不等於則跳轉
zf=0
jb小於則跳轉
cf=1
jnb不小於則跳轉
cf=0
ja大於則跳轉
cf=0且zf=0
jna不大於則跳轉
cf=1且zf=1
movsb
格式:movsb
功能:將ds:si指向的記憶體單元中的位元組送入es:di中,然後根據df的值,將si和di遞增1或遞減1。
執行movsb指令相於進行下面幾步操作
(1)((es)*16+(di))=((ds)*16+(si))
(2)如果df=0則:(si)=(si)+ 1;(di)=(di)+ 1
如果df=1則:(si)=(si)- 1;(di)=(di)- 1
movsw
格式:movsw
功能:將ds:si指向的記憶體字單元中的字送入es:di中,然後根據標誌暫存器df的值,將si和di遞增2或遞減2 。
rep一般和movsb,movsw聯動
功能:rep的作用是根據cx的值,重複執行後面的串傳送指令。
pushf ,popf
pushf的功能是將標誌暫存器的值壓棧,popf的功能是從棧中彈出資料,放入標誌暫存器中。
int功能:引發中斷過程。
指令格式:int n (n為中斷型別碼)
cpu執行int n指令,相當於引發乙個n號中斷的中斷過程,執行過程如下。
(1)取中斷型別碼n;
(2)標誌暫存器入棧,if=0,tf=0;
(3)cs、ip入棧;
(4)(ip)=(n*4),(cs)=(n*4+2)。
iret
功能:從中斷例程返回到應用程式。
相當於:
pop ip
pop cs
popf
in out
在in和out指令中,只能使用ax或al來存放從埠中讀入的資料或要傳送到埠中的資料。訪問8位埠時,要用al;訪問16位埠時,要用ax。
對0~255以內的埠進行讀寫時:
in al,20h ;從20h埠讀入乙個位元組
out 20h,al ;往20h埠寫入乙個位元組
對256~65535的埠進行讀寫時,埠號放在dx中:
mov dx,3f8h ;將埠號3f8h放入dx
in al,dx ;從3f8h埠讀入乙個位元組
out dx,al ;往3f8h埠寫入乙個位元組
shlshl是邏輯左移指令,它的功能為:
(1)將乙個暫存器或記憶體單元中的資料向左移位;
(2)將最後移出的一位寫入cf中;
(3)最低位用0補充。
如果移動位數大於1時,必須將移動位數放在cl中。
shrshr是邏輯右移指令,它的功能為:
(1)將乙個暫存器或記憶體單元中的資料向右移位;
(2)將最後移出的一位寫入cf中;
(3)最高位用0補充。
如果移動位數大於1時,必須將移動位數放在cl中。
sti cli
sti,設定if=1
cli,設定if=0
組合語言 彙編指令
功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...
組合語言 AT T組合語言
這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...
彙編(三)組合語言的指令格式
本篇介紹匯程式設計序功能 偽操作及組合語言的指令格式。一 匯程式設計序的主要功能 1.檢查源程式 2.檢測源程式中的語法錯誤,並給出錯誤資訊 3.產生源程式的目標程式,並給出列表檔案 lst檔案,同時給出組合語言和機器語言的檔案 4.展開巨集檔案 二 偽操作 硬指令 使cpu產生動作 並在程式執行時...