微機(jī)原理與接口 C0303_第1頁
微機(jī)原理與接口 C0303_第2頁
微機(jī)原理與接口 C0303_第3頁
微機(jī)原理與接口 C0303_第4頁
微機(jī)原理與接口 C0303_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

dst,src

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

src操作:(SP)←(SP)-2((SP)+1,(SP))←src說明:PUSH指令只能是字(16位)操作。src可以是‘reg’、‘m’,但不能是‘im’。例:PUSHAXPUSHCSPUSH[SI]XX低地址棧頂SS→···XX…未進(jìn)棧單元…已進(jìn)棧單元高地址SP→棧頂12H未進(jìn)棧單元已進(jìn)棧單元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指令不影響標(biāo)志位棧頂未進(jìn)棧單元已進(jìn)棧單元SP→12HXX···XX低地址SS→…高地址34HPOPBX棧頂12H未進(jìn)棧單元已進(jìn)棧單元SP→XX···XX低地址SS→…高地址34H(BX)=1234HXCHG(Exchange)數(shù)據(jù)交換指令格式:

XCHG

OPR1,OPR2操作:

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

XLAT操作:

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

IN

AL,PORT;(字節(jié))

IN

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

(AL)←(PORT)

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

IN

AL,DX;(字節(jié))

IN

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

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

OUT

PORT,AL;(字節(jié))

OUT

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

DX,AL;(字節(jié))

OUT

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

INAX,28HMOVDATA_WORD,AX把端口28H的內(nèi)容經(jīng)AX傳送到存儲單元DATA_WORD中。[例]

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

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

LEA

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

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

LEABX,MAX[BX][SI]若執(zhí)行前:

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

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

(BX)=139EHLDS(LoadDSwithpointer)指針?biāo)图拇嫫骱虳S格式:

LDS

reg16,mem操作:

(reg16)←(mem)

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

(LoadESwithpointer)指針?biāo)图拇嫫骱虴S格式:

LES

reg16,mem操作:

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

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

(DI)=05AEH,(ES)=4000H。存儲器…………h(huán)ighlowESDIAEH40H00H05H標(biāo)志傳送指令LAHF(LoadAHwithflags)標(biāo)志送AH指令格式:

LAHF操作:

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

格式:SAHF操作:(FLAG的低字節(jié))←(AH)PUSHF(Pushtheflags)標(biāo)志進(jìn)棧指令格式:

PUSHF操作:

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

POPF操作:

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

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

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

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

MOVAL,7EHMOVBL,5BHADDAL,BL指令執(zhí)行后,(AL)=7EH+5BH=D9H各狀態(tài)標(biāo)志位為: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不保存運(yùn)算結(jié)果,但影響狀態(tài)標(biāo)志位。NEG(Negate)求補(bǔ)格式:

NEG

dst操作:

(dst)←0-(dst),或取反+1操作數(shù)為0時,NEG指令使CF=0,其余情況CF均為1;字節(jié)運(yùn)算對-128求補(bǔ)、字運(yùn)算對-32768求補(bǔ)時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[例]

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

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

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

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

CMPAL,0;AL內(nèi)容不變,但影響標(biāo)志

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

INCSI;源地址加1

INCDI;目的地址加1

DECCX;循環(huán)次數(shù)減1

JNZCHECK;如不等于零,則轉(zhuǎn)CHECKHLT;停止

[例]

SUB[SI+14H],0316H

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

溫馨提示

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

評論

0/150

提交評論