彙編指令速查

2021-04-06 19:48:01 字數 4140 閱讀 3865

一、資料傳輸指令 

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

它們在存貯器和暫存器、暫存器和輸入輸出埠之間傳送資料. 

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. 目的位址傳送指令. 

lea 裝入有效位址. 

例: lea dx,string ;把偏移位址存到dx. 

lds 傳送目標指標,把指標內容裝入ds. 

les 傳送目標指標,把指標內容裝入es. 

lfs 傳送目標指標,把指標內容裝入fs. 

lgs 傳送目標指標,把指標內容裝入gs. 

lss 傳送目標指標,把指標內容裝入ss. 

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: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 程式結束.

8088 彙編指令速查

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

彙編指令速查手冊

當值為負時,高位補 1 當值為正時,高位補 0 rol 迴圈左移.ror 迴圈右移.rcl 通過進製的迴圈左移.rcr 通過進製的迴圈右移.以上八種移位指令,其移位次數可達255次.移位一次時,可直接用操作碼.如 shl ax,1.移位 1次時,則由暫存器cl給出移位次數.如 mov cl,04 s...

mo彙編指令 彙編指令速查表

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