常用命令
執行操作
cmp a,b
比較a與b
mov a,b
把b的值送給a
ret返回主程式
nop無作用
call
呼叫子程式
je 或jz
若相等則跳(機器碼74 或0f84)
jne或jnz
若不相等則跳(機器碼75或0f85)
jmp無條件跳(機器碼eb)
jb若小於則跳
ja若大於則跳
jg若大於則跳
jge若大於等於則跳
jl若小於則跳
jle若小於等於則跳
pop出棧
push
壓棧shl
邏輯左移.
sal算術左移.(=shl)
shr邏輯右移.
sar算術右移.(=shr)
rol迴圈左移.
ror迴圈右移.
rcl通過進製的迴圈左移.
rcr通過進製的迴圈右移.
mov傳送字或位元組.
movsx
先符號擴充套件,再傳送.
movzx
先零擴充套件,再傳送.
push
把字壓入堆疊.
pop把字彈出堆疊.
pusha
把ax,cx,dx,bx,sp,bp,si,di依次壓入堆疊.
popa
把di,si,bp,sp,bx,dx,cx,ax依次彈出堆疊.
pushad
把eax,ecx,edx,ebx,esp,ebp,esi,edi依次壓入堆疊.
popad
把edi,esi,ebp,esp,ebx,edx,ecx,eax依次彈出堆疊.
bswap
交換32位暫存器裡位元組的順序
xchg
交換字或位元組.( 至少有乙個運算元為暫存器,段暫存器不可作為運算元)
cmpxchg
比較並交換運算元.( 第二個運算元必須為累加器al/ax/eax )
xadd
先交換再累加.( 結果在第乙個運算元裡 )
xlat
位元組查表轉換.
ini/o埠輸入. ( 語法: in 累加器, )
outi/o埠輸出. ( 語法: out ,累加器 )
lea裝入有效位址.例: lea dx,string ;把偏移位址存到dx.
ldsles
lfslgs
lsslahf
標誌暫存器傳送,把標誌裝入ah.
sahf
標誌暫存器傳送,把ah內容裝入標誌暫存器.
pushf
標誌入棧.
popf
標誌出棧.
pushd
32位標誌入棧.
popd
32位標誌出棧.
add加法.
adc帶進製加法.
inc加 1.
aaa加法的ascii碼調整.
daa加法的十進位制調整.
sub減法.
sbb帶借位減法.
dec減 1.
nec求反(以 0 減之).
cmp比較.(兩運算元作減法,僅修改標誌位,不回送結果).
aas減法的ascii碼調整.
das減法的十進位制調整.
mul無符號乘法.
imul
整數乘法.
aam乘法的ascii碼調整.
div無符號除法.
idiv
整數除法.
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通過進製的迴圈右移.
移位一次時, 可直接用操作碼. 如 shl ax,1.
移位》1次時, 則由暫存器cl給出移位次數.
如 mov cl,04
shl ax,cl
ds:si
源串段暫存器 :源串變址.
esi目標串段暫存器:目標串變址.
cx重複次數計數器.
al/ax
掃瞄值.
movs
串傳送.( movsb 傳送字元. movsw 傳送字. movsd 傳送雙字. )
cmps
串比較.( cmpsb 比較字元. cmpsw 比較字. )
scas
串掃瞄.把al或ax的內容與目標串作比較,比較結果反映在標誌位.
lods
裝入串.把源串中的元素(字或位元組)逐一裝入al或ax中.( lodsb 傳送字元. lodsw 傳送字. lodsd 傳送雙字. )
stos
儲存串.是lods的逆過程.
rep當cx/ecx0時重複.
repe/repz
當zf=1或比較結果相等,且cx/ecx0時重複.
repne/repnz
當zf=0或比較結果不相等,且cx/ecx0時重複.
repc
當cf=1且cx/ecx0時重複.
repnc
當cf=0且cx/ecx0時重複.
無條件轉移指令 (長轉移)
.jmp
無條件轉移指令
call
過程呼叫
ret/retf
過程返回.
條件轉移指令 (短轉移,-128到+127的距離內)
( 當且僅當(sf xor of)=1時,op1迴圈控制指令(短轉移)
loop
cx不為零時迴圈.
loope/loopz
cx不為零且標誌z=1時迴圈.
loopne/loopnz
cx不為零且標誌z=0時迴圈.
jcxz
cx為零時轉移.
jecxz
ecx為零時轉移.
中斷指令
int中斷指令
into
溢位中斷
iret
中斷返回
處理器控制指令
hlt處理器暫停, 直到出現中斷或復位訊號才繼續.
wait
當晶元引線test為高電平時使cpu進入等待狀態.
esc轉換到外處理器.
lock
封鎖匯流排.
nop空操作.
stc置進製標誌位.
clc清進製標誌位.
cmc進製標誌取反.
std置方向標誌位.
cld清方向標誌位.
sti置中斷允許位.
cli清中斷允許位.
dw定義字(2位元組).
proc
定義過程.
endp
過程結束.
segment
定義段.
assume
建立段暫存器定址.
ends
段結束.
end程式結束.
組合語言 彙編指令
功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...
組合語言 傳送指令
一.傳送指令 1.通用傳送指令mov mov dst,src 將src傳送到dst中 dstsrc操作位數 mem reg imm8 16 mem reg seg reg8 16 reg seg mem 8 16 mem reg seg 8 16 imm是立即數,reg是暫存器,seg是段暫存器,m...
組合語言常用指令
上次說到組合語言十分重要,所以又為了避免忘記,貼上一些常用彙編指令 mov 指令範例 mov r1,8 mov r2,r1 mov r3,10 mvn 傳送取反賦值 mvn r1,0b10 mvn r2,5 mvn r3,r1 sub 減法 目的暫存器 被減數 不能是立即數 減數 mov r2,4 ...