當前位置:菜譜大全網 - 菜譜 - 8086,8088匯編指令大全

8086,8088匯編指令大全

8086/8088指令系統

壹、數據傳輸說明

1.通用數據傳輸指令

MOV(移動)轉移

推入(推入堆棧)

彈出(從堆棧中彈出)

交易所

。MOV指令

格式:MOV夏令時,SRC

執行的操作:(夏令時)

。推入堆棧指令

格式:推送SRC

執行的操作:(sp)

((SP)+1,(SP))& lt;-(SRC)

。彈出堆棧指令

格式:流行夏令時

執行的操作:(夏令時)

(SP)& lt;-(SP)+2

。XCHG交換指令

格式:XCHG OPR1,OPR2。

執行的操作:(opr1)

2.累加器專用轉移指令

輸入輸入

輸出輸出

XLAT(翻譯)轉義碼

這組指令僅限於使用累加器AX或AL來傳輸信息。

。輸入指令

長格式:輸入端口(字節)

在AX中,端口(字)

執行的操作:(al) < -(端口)(字節)

(AX)& lt;-(PORT+1,PORT) (word)

短格式:在AL,DX(字節)

在AX,DX(字)中

執行的操作:Al

AX & lt-((DX)+1,DX) (word)

。OUT輸出指令

長格式為:OUT PORT,AL(字節)。

輸出端口,AX(字)

執行的操作:(端口)

(PORT+1,PORT)& lt;-(斧)(字)

短格式:OUT DX,AL(字節)

輸出DX,AX(字)

執行的操作:((dx)) < -(AL)(字節)

((DX)+1,(DX))& lt;-AX(單詞)

在IBM-PC機器中,外部設備最多可以有65536個I/O端口,這些端口(即外圍設備的端口地址)是

0000~FFFFH。前256個端口(0~FFH)可以直接在指令中指定,這是長格式的端口,它

機器指令用兩個字節表示時,第二個字節是端口號,所以長格式時可以直接在規範中指定。

端口號,但只有前256個端口。當端口號>時;=256,只能用短格式。這時候妳必須先把端口號放進去。

DX寄存器(端口號可以從0000到0FFFFH),然後用IN或OUT指令傳輸信息。

。XLAT轉義指令

格式:XLAT OPR

或者:XLAT

執行的操作:(al) < -((BX)+(AL))

3.寄存器指令的有效地址

LEA(加載有效地址)有效地址被發送到寄存器。

指向寄存器和DS的指針。

指向寄存器和ES的指針。

。LEA註冊的有效地址

格式為:LEA REG,SRC。

執行的操作:(reg)

指令將源操作數的有效地址發送到指定的寄存器。

。指向寄存器和DS指令的LDS指針

格式:LDS REG,SRC

執行的操作:(reg)

(DS)& lt;-(SRC+2)

將源操作數指定的四個連續字節發送到指令和DS寄存器指定的寄存器。該指令通常指定

SI寄存器

。指向寄存器和ES指令的LES指針

格式:LES REG,SRC

執行的操作:(reg)

(ES)& lt;-(SRC+2)

將源操作數指定的四個連續字節發送到指令和es寄存器指定的寄存器。該指令通常指定

DI寄存器

4.標誌寄存器轉移指令

LAHF(用旗子裝載AH)標誌發送AH。

SAHF(把啊存成旗幟)啊送旗幟登記

PUSHF(推送標誌)標誌進入堆棧。

POPF國旗被升起。

LAHF簽送來的呀

格式:LAHF

執行的操作:(ah)

SAHF啊送旗登記

格式:SAHF

執行的操作:(PWS的低位字節)

。PUSHF標誌進入堆棧。

格式:PUSHF

執行的操作:(sp)

((SP)+1,(SP))& lt;-(PSW)

。POPF國旗下棧

格式:POPF

執行的操作:(pws)

(SP)& lt;-(SP+2)

第二,算術指令

1.加法指令

添加(添加)加法

帶進位加法的ADC(帶進位加法)

INC(增量)加1

添加說明

格式:添加DST,SRC

執行的操作:(夏令時)

帶進位加法指令的ADC

格式:ADC DST,SRC

執行的操作:(夏令時)

。加法加1指令

格式:公司運營

執行的操作:(OPR)

2.減法指令

減法

SBB(用借位減)用借位減。

DEC(減量減1

負補碼

CMP(比較)比較

減法指令

格式:夏令時,夏令時

執行的操作:(夏令時)

。帶借位減法指令的SBB

格式:SBB夏令時,SRC

執行的操作:(夏令時)

。DEC減1指令

格式:十二月營業

執行的操作:(OPR)

負補碼指令

格式:負OPR

執行的操作:(OPR)

CMP比較指令

格式:CMP OPR1,OPR2

執行的操作:(OPR1)-(OPR2)

此指令像sub指令壹樣執行減法,但不保存結果,只根據結果設置條件標誌的西半部分。

球。

3.乘法指令

無符號數乘法

IMUL(有符號倍數)有符號數乘法

。MUL無符號數乘法指令

格式:MUL SRC

執行的操作:

字節操作數:(ax) < -(AL)*(SRC)

字操作數:(dx,ax) < -(AX)*(SRC)

。IMUL有符號數乘法指令

格式:IMUL SRC

執行的操作:與MUL相同,但必須是有符號數,MUL是無符號數。

4.除法指令

無符號除法

IDIV(帶符號除法)帶符號數字除法

CBW(將字節轉換成字)字節被轉換成字。

CWD(Contert word to double word)單詞被轉換成雙單詞。

。無符號數除法指令

格式:DIV SRC

執行的操作:

字節操作:(al)<-(AX)/(SRC)的商

(啊)& lt-(AX)/(SRC)的余數

字運算:(ax)<的商-(DX,AX)/(SRC)

(AX)& lt;-(DX,AX)/(SRC)的余數

。IDIV簽名的數字除法指令

格式:DIV SRC

執行的運算:與DIV相同,但操作數必須是有符號數,商和余數也是有符號數,余數是有符號的。

與股息符號相同。

。CBW字節到字指令

格式:CBW

執行的操作:將AL的內容符號擴展為AH。也就是說,如果(AL)的最高有效位是0,那麽(AH)= 00;如(阿爾)最

最高有效位為1,則(AH)=0FFH。

轉換。CWD的話變成了雙字指令

格式:CWD

執行的操作:AX的內容符號擴展為DX。也就是說,如果(AX)的最高有效位是0,那麽(DX)= 0;否則

(DX)=0FFFFH。

這些指令都不會影響條件代碼。

第三,邏輯指令

1.邏輯操作指令

and(與)邏輯AND

或(或)邏輯或

非邏輯否定

異或

測試(測試)測試

。邏輯和指令

格式:DST,SRC

執行的操作:(夏令時)

。或邏輯或指令

格式:或夏令時、夏令時

執行的操作:(夏令時)

。非邏輯非指令

格式:非OPR

執行的操作:(OPR)

XOR異或指令

格式:XOR DST,SRC

執行的操作:(夏令時)

測試指令

格式:測試OPR1,OPR2

執行的操作:(夏令時)(夏令時)

兩個操作數的AND結果不保存,只根據其特征設置條件碼。

2.移位指令

SHL(邏輯左移)邏輯向左移動。

SAL(算術左移)算術左移。

SHR(邏輯右移)邏輯向右移動。

SAR(算術右移)算術右移。

ROL(向左旋轉)循環向左移動。

ROR(向右旋轉)循環向右移動。

RCL(通過進位向左旋轉)隨著進位循環向左移動。

RCR(通過進位向右旋轉)隨著進位循環向右移動。

格式:SHL OPR,CNT(其他類似)

OPR可以是除立即數以外的任何尋址方法。移位數由CNT決定,可以是1或CL。

循環移位指令可以改變操作數中所有位的位置;移位指令通常用於將2乘以2。

其中,算術移位指令適用於有符號數運算,SAL用於乘以2,SAR用於除以2;而邏輯移位指令使用

對於無符號數運算,SHL用於乘以2和2,SHR用於除以2。

第四,串行處理指令

1.MOVS、STOS和LODS說明與代表合作

。重復字符串操作,直到(CX)=0為止。

格式:表示字符串原語

其中字符串原語可以是MOVS、LODS或STOS指令。

執行的操作:

1)如果(CX)=0,退出REP,否則繼續。

2)(CX)& lt;-(CX)-1

3)執行字符串操作。

4)重復1)~3)

。MOVS字符串轉移指令

格式:有三種。

MOVS夏令時,SRC

MOVSB(字節)

MOVSW (word)

其中,第二種和第三種格式明確表示是字節還是字,第壹種格式要在操作數中表示是不是字

字節操作,例如:

MOVS ES:字節PTR[DI],DS:[SI]

執行的操作:

1)((DI))& lt;-((SI))

2)字節操作:

(SI)& lt;-(SI)+ (or-) 1,(di)

當方向標誌DF=0時使用+,使用-

3) Word操作:

(SI)& lt;-(SI)+ (or-) 2,(di)

當方向標誌DF=0時使用+,使用-

該指令不影響條件代碼。

。CLD(清除方向標誌)該指令使DF=0,執行字符串運算指令時地址可自動遞增;

。STD(設置方向標誌)該指令使DF=1,在執行字符串操作指令時可以自動遞減地址。

STOS存儲字符串指令

格式:STOS夏令時

STOSB(字節)

STOSW(單詞)

執行的操作:

字節操作:((di)) < -(AL),(DI)& lt;-(DI)+-1

字操作:((di)) < -(AX),(DI)& lt;-(二)+-2

該指令根據DF的值和數據類型,將AL或AX的內容存儲在由(di)指定的附加段的單元中

修改DI的內容。當它與REP結合時,AL或AX的內容可以存儲在壹個長度為(CX)的緩沖區中。

。LODS從字符串中獲取指令。

格式:LODS SRC

LODSB

LODSW

執行的操作:

字節操作:(al) < -((SI)),(SI)& lt;-(SI)+-1

字操作:(ax) < -((SI)),(SI)& lt;-(矽)+-2

此指令根據方向標誌和數據類型,將(SI)指定的數據段中的單元內容發送到AL或AX

改變矽的含量。該指令允許使用段交叉前綴來指定非數據段的存儲區域。該指令也不影響條件代碼。

壹般來說,這個指令不和REP壹起使用,有時候需要把緩沖區中的壹串字符壹個壹個取出來測試時,可以使用。

使用本說明。

2.CMPS和SCAS指令與REPE/REPZ和REPNZ/REPNE共同工作。

。當等於/零時,REPE/REPZ重復字符串操作。

格式:REPE(或REPZ)字符串原語

字符串原語可以是CMPS或SCAS指令。

執行的操作:

1)如果(CX)=0或ZF=0(即兩個操作數比較的結果不同),退出,否則繼續。

2)(CX)& lt;-(CX)-1

3)執行後續的字符串指令。

4)重復1)~3)

。當不等於/零時,REPNE/REPNZ重復字符串操作。

格式:REPNE(或REPNZ)字符串原語

其中字符串原語可以是CMPS或SCAS指令。

執行的操作:

除了退出條件(CX=0)或ZF=1,其他操作與REPE完全相同。

。字符串比較指令

格式:CMP SRC,DST

CMPSB

CMPSW

執行的操作:

1)((SI))-((DI))

2)字節操作:(si)

字操作:(si)

該指令將(SI)指向的數據段中的壹個字(或字節)與(di)指向的附加段中的壹個字(或字節)組合

相減,但不保存結果,只根據結果設置條件碼。該指令的其他特征與MOVS指令的特征相同。

SCAS字符串掃描指令

格式:SCAS夏令時

SCASB

SCASW

執行的操作:

字節操作:(al)-(di),(di)

字操作:(al)-(di),(di)

此指令將AL(或AX)的內容與(di)指定的附加段中的壹個字節(或字)進行比較,並且不保存它。

因此,僅根據結果設置條件代碼。指令的其他特性與MOVS規定的特性相同。

動詞 (verb的縮寫)控制轉移指令

1.無條件轉移指令

。JMP(jmp)跳轉指令

1)段內直接做空轉賬

格式:JMP SHORT OPR

執行的操作:(IP)

2)段內直接鄰近傳輸

格式:PTR OPR附近的JMP

執行的操作:(IP)

3)分部內間接轉移

格式:JMP WORD PTR OPR

執行的操作:(IP)

4)分段之間的直接(遠程)傳輸

格式:JMP遠東PTR OPR

執行的操作:(IP)

(CS)& lt;-OPR所在段的段地址。

5)分部間的間接轉移

格式:JMP DWORD PTR OPR

執行的操作:(IP)

(CS)& lt;-(EA+2)

2.條件轉移指令

1)根據單個條件標誌的設置進行傳輸。

。JZ(或JE)(如果零或等於則跳轉)導致零(或等於),則轉移分支。

格式:JE(或JZ) OPR

測試條件:ZF=1。

。JNZ(或JNE)(不為零或不等於則跳轉)結果不為零(或不等於),則轉移分支。

格式:JNZ(或JNE) OPR

測試條件:ZF=0

如果的結果。JS(如果有符號則跳轉)為負,將被轉移。

格式:JS OPR

測試條件:SF=1

。JNS(如果沒有符號則跳轉)導致規則轉換。

格式:JNS OPR

測試條件:SF=0

。JO(溢出則跳轉)溢出並轉移。

格式:JO OPR

測試條件:OF=1

。JNO(不溢出就跳)不溢出就轉移。

格式:JNO OPR

測試條件:OF=0

。JP(或JPE)(如果奇偶,或奇偶偶則跳轉)是1,那麽它將被轉移。

格式:JP OPR

測試條件:PF=1

。JNP(或JPO)(如果不是奇偶性,或奇偶性跳轉)為0,則該分支將被轉移。

格式:JNP(或JPO) OPR

測試條件:PF=0

。JB(或jnae,jc)(低於則跳轉,或不高於或等於,或進位)低於,或不高於或等於,或進位。

位1被傳輸。

格式:JB(或JNAE,JC) OPR

測試條件:CF=1

。JNB(或jae,jnc)(不低於,或高於或等於,或不進位則跳轉)不低於,或高於或等於,

或者進位是0。

格式:JNB(或JAE,JNC) OPR

測試條件:CF=0

2)比較兩個無符號數,根據比較結果進行移位。

JB(或JNAE,JC)

格式:同上

。JNB(或JAE,JNC)

格式:同上

。JBE(或JNA)(跳如果低於或等於,或不高於)低於或等於,或不高於,它將被轉移。

格式:JBE(或JNA) OPR

測試條件:CFVZF=1。

。JNBE(或ja)(不低於等於,或高於則跳轉)不低於等於,或高於,則轉移。

格式:JNBE(或JA) OPR

測試條件:CFVZF=0

3)比較兩個有符號數,根據比較結果進行移位。

。JL(或lnge)(如果小於或不大於或等於,則跳轉)小於或不大於或等於,則進行傳輸。

格式:JL(或JNGE) OPR

測試條件:SFVOF=1。

。JNL(或jge)(不小於或大於或等於則跳轉)不小於或大於或等於轉移。

格式:JNL(或JGE) OPR

測試條件:SFVOF=0

。JLE(或jng)(如果小於或等於,或不大於則跳轉)小於或等於,或不大於,它將被轉移。

格式:JLE(或JNG) OPR

測試條件:(sfof) vzf = 1。

。JNLE(或jg)(不小於等於或大於則跳轉)不小於等於或大於,則轉移。

格式:JNLE(或JG) OPR

測試條件:(sfof) vzf = 0。

4)如果測試CX的值為0,則指令將被轉移。

。jcxz(如果CX寄存器為零則跳轉)如果CX寄存器的內容為零,則它將被轉移。

格式:JCXZ OPR

測試條件:(CX)=0

註意:條件轉移都是8位短跳轉!

3.循環指令

循環指令

格式:循環操作

測試條件:(CX)< >0

。零或相等時的loopz/LOOPZ/LOOPE指令。

格式:LOOPZ(或LOOPE) OPR

測試條件:(CX)< >0和ZF=1。

當指令不為零或不相等時,LOOPNZ/LOOPNE循環指令。

格式:LOOPNZ(或LOOPNE) OPR

測試條件:(CX)< >0和ZF=0。

這三個指令的步驟是:

1)(CX)& lt;-(CX)-1

2)檢查測試條件是否滿足,如果滿足,(IP)

4.子程序

。呼叫指令

。RET返回指令

中斷

。INT指令

格式:INT類型

或INT

執行的操作:(sp)

((SP)+1,(SP))& lt;-(PSW)

(SP)& lt;-(SP)-2

((SP)+1,(SP))& lt;-(CS)

(SP)& lt;-(SP)-2

((SP)+1,(SP))& lt;-(知識產權)

(IP)& lt;-(類型*4)

(CS)& lt;-(類型*4+2)

。如果溢出,則轉換為中斷。

執行的操作:如果OF=1,則:

(SP)& lt;-(SP)-2

((SP)+1,(SP))& lt;-(PSW)

(SP)& lt;-(SP)-2

((SP)+1,(SP))& lt;-(CS)

(SP)& lt;-(SP)-2

((SP)+1,(SP))& lt;-(知識產權)

(IP)& lt;-(10H)

(CS)& lt;-(12H)

。IRET從中斷中返回壹條指令。

格式:IRET

執行的操作:(IP)

(SP)& lt;-(SP)+2

(CS)& lt;-((SP)+1,(SP))

(SP)& lt;-(SP)+2

(PSW)& lt;-((SP)+1,(SP))

(SP)& lt;-(SP)+2

六、處理器控制指令

1.標誌處理指令

。CLC進位位置0指令(清零進位)cf

CMC進位補碼進位cf

。STC進位位置1指令(設置進位)cf

。CLD方向標誌設置0指令(清除方向)df < -0

。STD方向標誌設置1指令(設置方向)df

。CLI中斷標誌設置0指令(清除中斷),如果

。STI中斷標誌設置1指令(設置中斷),如果

2.其他處理器控制指令

無操作

停止停機

等待(等待)等待

ESC(退出)

鎖定封鎖

這些指令可以控制處理器狀態。它們都不會影響條件代碼。

。NOP無操作說明

該指令不執行任何操作,其機器碼占用壹個字節,常用於調試程序。

以便在正式操作中用其他指令替換它。

。HLT關閉指令

這個指令可以使機器停止工作,並使處理器停止以便等待外部中斷,中斷結束。

之後,您可以繼續執行以下程序。

。等待等待指令

這條指令使處理器空閑。它也可用於等待外部中斷,但在中斷結束後仍會返回。

等待指令延續美德。

ESC轉義指令

格式化ESC內存

其中mem表示存儲單元,ESC指令將存儲單元的內容發送到數據總線。當然,ESC指令

不允許立即數和寄存器尋址。該指令使用協處理器來執行壹些操作。

指令或操作數可以從內存中獲取。協處理器(如8087)是提高速度的可選硬件。

。鎖定阻塞指令

此指令是壹個前綴,可以與其他指令組合,以維持總線的鎖存信號,直到該指令與它組合。

當CPU與其他處理器合作時,該指令可以避免破壞有用的信息。