彙編指令表與花指令大全

2021-08-29 11:47:10 字數 4009 閱讀 4091

-- 8088彙編指令表

一、資料傳輸指令

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

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

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

彙編指令表

二 算術運算指令 add 加法.adc 帶進製加法.inc 加 1.aaa 加法的ascii碼調整.daa 加法的十進位制調整.sub 減法.sbb 帶借位減法.dec 減 1.nec 求反 以 0 減之 cmp 比較.兩運算元作減法,僅修改標誌位,不回送結果 aas 減法的ascii碼調整.das...

8088彙編指令表

二 算術運算指令 add 加法.adc 帶進製加法.inc 加 1.aaa 加法的ascii碼調整.daa 加法的十進位制調整.sub 減法.sbb 帶借位減法.dec 減 1.nec 求反 以 0 減之 cmp 比較.兩運算元作減法,僅修改標誌位,不回送結果 aas 減法的ascii碼調整.das...

8088彙編指令表

一 資料傳輸指令 三 邏輯運算指令 and 與運算.or 或運算.xor 異或運算.兩者相等為0,不等為1.not 取反.test 測試.兩 作數作與運算,僅修改標誌位,不回送結果 shl 邏輯左移.sal 算術左移.shl shr 邏輯右移.sar 算術右移.shr rol 迴圈左移.ror 迴圈...