微機原理與接口 C0303_第1頁
微機原理與接口 C0303_第2頁
微機原理與接口 C0303_第3頁
微機原理與接口 C0303_第4頁
微機原理與接口 C0303_第5頁
已閱讀5頁,還剩32頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

微機原理與接口技術2016-2017第二學期馮春暉2017.3.8周三8086的匯編指令系統8086的指令系統包括100多條指令,可分為以下六種類型:數據傳送指令算術運算指令位操作指令串操作指令程序控制指令處理器控制指令數據傳送指令數據傳送指令負責把數據、地址或立即數傳送到寄存器或存儲單元中。通用傳送指令MOV(Move)數據傳送指令格式:MOV

dst,src

dstsrc說明reg1reg2reg1不能是CSregimreg不能是CS,DS,ES和SSregmreg不能是CSmimmregreg為寄存器操作數,m為存儲器操作數,im為立即數。MOV指令傳送方向PUSH(Pushontothestack)進棧指令格式:PUSH

src操作:(SP)←(SP)-2((SP)+1,(SP))←src說明:PUSH指令只能是字(16位)操作。src可以是‘reg’、‘m’,但不能是‘im’。例:PUSHAXPUSHCSPUSH[SI]XX低地址棧頂SS→···XX…未進棧單元…已進棧單元高地址SP→棧頂12H未進棧單元已進棧單元SP→XX···XX低地址SS→…高地址34HMOVAX1234HPUSHAX…POP(Popfromstack)出棧指令格式:POP

dst操作:dst←((SP)+1,(SP)),(SP)←(SP)+2說明:POP指令只能字(16位)操作dst可以是‘m’,‘reg’,但不能是CS、‘im’。PUSH,POP指令不影響標志位棧頂未進棧單元已進棧單元SP→12HXX···XX低地址SS→…高地址34HPOPBX棧頂12H未進棧單元已進棧單元SP→XX···XX低地址SS→…高地址34H(BX)=1234HXCHG(Exchange)數據交換指令格式:

XCHG

OPR1,OPR2操作:

(OPR1)←→(OPR2)OPR1,OPR2是兩個操作數。它們可以是寄存器或存儲器,但二者中必有一個是寄存器。不允許使用段寄存器。指令允許字或字節操作。不影響標志位。累加器專用傳送指令XLAT(Translate)換碼指令格式:

XLAT操作:

(AL)←(BX+AL)EA=BX+AL將數據段中一個存儲單元的內容送到ALIN(Input)輸入指令直接尋址方式格式:

IN

AL,PORT;(字節)

IN

AX,PORT;(字)操作:字節

(AL)←(PORT)

字(AX)←(PORT+1,PORT)PORT是I/O端口地址(0~255)間接尋址方式格式:

IN

AL,DX;(字節)

IN

AX,DX;(字)操作:字節(AL)←(DX)

字(AX)←(DX+1,DX)OUT(Output)輸出指令直接尋址方式格式:

OUT

PORT,AL;(字節)

OUT

PORT,AX;(字)操作:字節(PORT)←(AL)字(PORT+1,PORT)←(AX)間接尋址方式格式:OUT

DX,AL;(字節)

OUT

DX,AX;(字)操作:字節(DX)←(AL)字(DX+1,DX)←(AX)IN和OUT(輸入輸出)指令專用于CPU與外設(I/O端口)之間傳送信息。無論輸入或輸出,數據必須經由累加器(AX或AL)傳送。直接尋址方式的指令只能尋址256個I/O端口(端口號:0~255或0~FFH)。間接接尋址方式的指令可以尋址64K個I/O端口(端口號:0~65535或0~FFFFH)。IN和OUT指令提供了字與字節兩種使用方式,選用哪一種,取決于外設端口的寬度。[例]

INAX,28HMOVDATA_WORD,AX把端口28H的內容經AX傳送到存儲單元DATA_WORD中。[例]

MOVDX,3FCHINAX,DX從端口03FCH取一個字送到AX寄存器。[例]OUT5,AL

從AL寄存器輸出一個字節到端口5。目的地址傳送指令LEA(Loadeffectiveaddress)取有效地址指令格式:

LEA

reg16,mem操作:把源操作數的有效地址(EA),傳送到目標寄存器(reg16)中。源操作數mem必須是內存操作數。reg16必須是一個16位的通用寄存器例

LEABX,BUFFERMOVBX,BUFFER前者是把BUFFER的有效地址‘EA’傳送給BX,后者把存儲單元BUFFEER的內容傳送給BX。LEADX,[BX]MOVAX,[BX]若(BX)=0400H,DS=2000H,(20400H)=0402H則(DX)=0400H(AX)=0402H例

LEABX,MAX[BX][SI]若執行前:

(BX)=0400H,(SI)=003CH,MAX=0F62H源操作數的有效地址為

EA=0400+003C+0F62=139EH指令執行后:

(BX)=139EHLDS(LoadDSwithpointer)指針送寄存器和DS格式:

LDS

reg16,mem操作:

(reg16)←(mem)

(DS)←(mem+2)存儲器…………DSreg16highlowLES

(LoadESwithpointer)指針送寄存器和ES格式:

LES

reg16,mem操作:

(reg16)←(mem),(ES)←(mem+2)存儲器…………ESreg16highlow源操作數mem是32位的內存操作數。目的操作數reg16是16位的通用寄存器。本指令將源操作數指定的存儲器中的4個連續單元(4字節)傳送給指定的reg16和DS/ES,低2位字節給reg16,高2位字節給DS/ES。LEA、LDS、LES三條指令不影響標志位。存儲器…………highlow[例]

LDSSI,[10H]若指令執行前(DS)=C000H,(SI)=0010H,(C0010H)=0180H,(C0012H)=2000H則指令執行后(SI)=0180H,(DS)=2000H。DSSI80H20H00H01H例:LESDI,[BX]若指令執行前(DS)=B000H,(BX)=080AH,(B080AH)=05AEH,(B080CH)=4000H,則指令執行后

(DI)=05AEH,(ES)=4000H。存儲器…………highlowESDIAEH40H00H05H標志傳送指令LAHF(LoadAHwithflags)標志送AH指令格式:

LAHF操作:

(AH)←(FLAG的低字節位)只傳送了SF,ZF,AF,PF,CF五個標志位標志傳送指令SAHF(StoreAHintoflags)AH送標志寄存器指令

格式:SAHF操作:(FLAG的低字節)←(AH)PUSHF(Pushtheflags)標志進棧指令格式:

PUSHF操作:

(SP)←(SP)-2((SP)+1,(SP))←(FLAG)POPF(Poptheflags)標志出棧指令格式:

POPF操作:

(FLAG)←((SP)+1,(SP))(SP)←(SP)+2LAHF和PUSHF不影響標志位,SAHF和POPF則由裝入的值來確定標志位。算術指令加法指令ADD(add)加法格式:ADD

dst,src操作:(dst)←(src)+(dst)ADC(addwithcarry)帶進位加法格式:ADC

dst,src操作:(dst)←(src)+(dst)+CFINC(increment)加1格式:INC

dst操作:(dst)←(dst)+1說明:目的操作數dst可以是寄存器或存儲器操作數。源操作數src可以是寄存器、存儲器操作數或立即數。源與目的操作數不能同為存儲器操作數。不允許段寄存器參與運算。以上三條指令可以是字節(8位)操作,也可以是字(16位)操作。三條指令對狀態標志位產生影響,但INC指令對CF位無影響。例如:ADDCL,10ADCDX,SIADDAX,MEMADCALPHA[DI],30HINCSI以上指令皆合法。[例]

MOVAL,7EHMOVBL,5BHADDAL,BL指令執行后,(AL)=7EH+5BH=D9H各狀態標志位為:SF=1,ZF=0,AF=1,PF=0,CF=0,OF=17E011111105B01011011D911011001減法指令SUB

(subtract)減法格式:SUB

dst,src操作:(dst)←(dst)-(src)SBB(subtractwithborrow)帶借位減法格式:SBB

dst,src操作:

(dst)←(dst)-(src)-CF其中,CF為借位的值DEC(Decrement)減1格式:DEC

dst操作:

(dst)←(dst)-1CMP

(Compare)比較格式:CMP

dst,src操作:(dst)-(src),CMP不保存運算結果,但影響狀態標志位。NEG(Negate)求補格式:

NEG

dst操作:

(dst)←0-(dst),或取反+1操作數為0時,NEG指令使CF=0,其余情況CF均為1;字節運算對-128求補、字運算對-32768求補時OF=1,其余情況OF均為0。[例]MOVAX,0013H;

AX=0013H

;AL=00010011BNEGAL;AL=11101101B=EDH;CF=1,OF=0MOVBX,8F5AH;

BX=8F5AH

;BX=1000111101011010NEGBX; ;BX=0111000010100110;BX=?70A6?H ;CF=1,OF=0NEGAH;AH=00H ;CF=0,OF=0[例]

內存數據存放了100個帶符號數,首地址為AREA1,要求將各數取絕對值后存入以AREA2為首地址的內存區。由于100個帶符號數中可能既有正數,又有負數,因此先要判斷正負。如為正數,可以原封不動的傳送到另一內存區;如為負數,則須先求補即可得到負數的絕對值,然后再傳送。程序如下:

LEASI,AREA1;(SI)←原地址指針

LEADI,AREA2;(DI)←目的地址指針

MOVCX,100;(CX)←循環次數CHECK:MOVAL,[SI];取一個帶符號數到AL

CMPAL,0;AL內容不變,但影響標志

JNSNEXT;若(SF)=0,則轉NEXTNEGAL;否則求補NEXT:MOV[DI],AL;傳送到目的地址

INCSI;源地址加1

INCDI;目的地址加1

DECCX;循環次數減1

JNZCHECK;如不等于零,則轉CHECKHLT;停止

[例]

SUB[SI+14H],0316H

指令執行前(DS)=3000H,(SI)=0040H,(30054H

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論