基本彙編指令集
彙編指令集
1. 通用資料傳送指令
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 位元組查表轉換.
bx 指向一張 256 位元組的表的起點, al 為表的索引值 (0-255,即 0-ffh); 返回 al 為查表結果. ( [bx+al]->al )
2. 輸入輸出埠傳送指令.
in i/o埠輸入. ( 語法: in 累加器, )
out i/o埠輸出. ( 語法: out ,累加器 )
輸入輸出埠由立即方式指定時, 其範圍是 0-255; 由暫存器 dx 指定時,其範圍是 0-65535.
3. 目的位址傳送指令.
4. 標誌傳送指令.
lahf 標誌暫存器傳送,把標誌裝入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 整數乘法.
以上兩條,結果回送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 i 目標串段暫存器:目標串變址.
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/ecx0時重複.
repe/repz 當zf=1或比較結果相等,且cx/ecx0時重複.
repne/repnz 當zf=0或比較結果不相等,且cx/ecx0時重複.
repc 當cf=1且cx/ecx0時重複.
repnc 當cf=0且cx/ecx0時重複.
五、程式轉移指令
1>無條件轉移指令 (長轉移)
jmp 無條件轉移指令
call 過程呼叫
ret/retf過程返回.
2>條件轉移指令 (短轉移,-128到+127的距離內)
( 當且僅當(sf xor of)=1時,op1 ja/jnbe 不小於或不等於時轉移.
jae/jnb 大於或等於轉移.
jb/jnae 小於轉移.
jbe/jna 小於或等於轉移.
以上四條,測試無符號整數運算的結果(標誌c和z).
jg/jnle 大於轉移.
jge/jnl 大於或等於轉移.
jl/jnge 小於轉移.
jle/jng 小於或等於轉移.
以上四條,測試帶符號整數運算的結果(標誌s,o和z).
je/jz 等於轉移.
jne/jnz 不等於時轉移.
jc 有進製時轉移.
jnc 無進製時轉移.
jno 不溢位時轉移.
jnp/jpo 奇偶性為奇數時轉移.
jns 符號位為 "0" 時轉移.
jo 溢位轉移.
jp/jpe 奇偶性為偶數時轉移.
js 符號位為 "1" 時轉移.
3>迴圈控制指令(短轉移)
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 程式結束.
文章出處:http://www.diybl.com/course/3_program/hb/hbjs/2007124/89947.html
彙編指令集
1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓入堆疊.popa 把di,si,bp,sp,bx,dx,cx,ax依次彈...
彙編指令集
一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...
彙編指令集
ja jnbe 不小於或不等於時轉移.jae jnb 大於或等於轉移.jb jnae 小於轉移.jbe jna 小於或等於轉移.以上四條,測試無符號整數運算的結果 標誌c和z jg jnle 大於轉移.jge jnl 大於或等於轉移.jl jnge 小於轉移.jle jng 小於或等於轉移.以上四條...