Intel 8086 常用彙編指令表

2022-05-02 05:36:07 字數 3904 閱讀 6599

二、算術運算指令

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

七、埠指令

埠是主機與外設進行資料交換的。(外設介面電路有專用於資料互動的暫存器。為了與cpu中的暫存器相區別,稱之為「埠」)。埠有資料埠,狀態埠和控制埠3種。

pc機給予每乙個埠分配了乙個位址(稱為埠號),形成乙個獨立於記憶體空間的i/o位址空間。在8086/8088中,埠位址的範圍是0000至ffff。

cpu對外設的操作通過專門的埠讀寫指令來完成。讀埠用in指令,寫埠用out指令。

——————————————————————————————————————————

in acc,port;從埠port讀取資料到acc;

port可以是立即數,也可以是dx。

acc為al時,從port讀取1位元組資料到al

acc為ax時,從port讀取2位元組資料到ax

——————————

out port,acc;將acc的資料寫入埠port;

——————————

例子:in al,21h;表示從21h埠讀取一位元組資料到al

in ax,21h;表示從埠位址21h讀取1位元組資料到al,從埠位址22h讀取1位元組到ah

mov dx,379h

in al,dx ;從埠379h讀取1位元組到al

—————

out 21h,al;將al的值寫入21h埠

out 21h,ax;將ax的值寫入埠位址21h開始的連續兩個位元組。(port[21h]=al,port[22h]=ah)

mov dx,378h

out dx,ax ;將ah和al分別寫入埠379h和378h

Intel 8086彙編之加減法指令

2011年05月20日 星期五 19時59分14秒 1.加法指令add,adc,inc 1 add dst,src和adc dst,src dst是目的運算元,src是源運算元。add指令實現的功能是 將目標運算元和源運算元相加,結果存放在目標運算元中,運算中產生的進製送進製標誌位。即 dst ds...

常用彙編指令

1 加減指令 2 adr指令 adr是小範圍的位址讀取偽指令,ldr是大範圍的讀取位址偽指令。可實際上adr是將基於pc相對偏移的位址值或基於暫存器相對位址值讀取的為指令,而ldr用於載入32為立即數或乙個位址到指定的暫存器中。到這兒就會看到其中的區別了。如果在程式中想載入某個函式或者某個在聯接時候...

常用彙編指令

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