8086指令速查

2021-06-09 20:48:01 字數 4507 閱讀 6872

一、資料傳輸指令 

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

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

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時,op13>迴圈控制指令(短轉移) 

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

8086指令格式

8086的指令使用的是1 6byte s 的變長指令。由3個部分組成 舉幾個例子,下圖是1byte 6bytes不同長度指令的劃分 先來翻譯一下上面的各個部分 d destination 目的運算元,w word 字,mod 模式 方式,reg register 暫存器,r m register m...

8086指令系統資料傳送指令

1.一般傳送指令mov 格式 mov 目標運算元 源運算元 功能 mov主要實現內容就是各種傳送 目標運算元可以為暫存器運算元 儲存器運算元 源運算元可以為立即數運算元 暫存器運算元 儲存器運算元 根據彙編規定指令的兩個運算元不能同時為儲存器運算元所以有共有5種傳送操作 1 立即數到暫存器 例 mo...

彙編(二)8086指令系統

本篇介紹8086的指令系統,包括常用指令及定址方式。cpu的全部指令集稱為指令系統,8086指令系統有如下特性 採用可變長指令,指令格式比較複雜 定址方式多樣靈活,處理資料能力較強,可處理位元組 字 符號等 有重複指令和乘 除運算指令。擴充了條件轉移 移位 迴圈指令 增加了軟體中斷和支援多處理器有關...