仁愛學(xué)院微機(jī)原理復(fù)習(xí)3-1_第1頁(yè)
仁愛學(xué)院微機(jī)原理復(fù)習(xí)3-1_第2頁(yè)
仁愛學(xué)院微機(jī)原理復(fù)習(xí)3-1_第3頁(yè)
仁愛學(xué)院微機(jī)原理復(fù)習(xí)3-1_第4頁(yè)
仁愛學(xué)院微機(jī)原理復(fù)習(xí)3-1_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

指令系統(tǒng)

本章主要介紹微機(jī)系統(tǒng)的指令格式及其常用的尋址方式、指令類型8086指令系統(tǒng)

*數(shù)據(jù)傳送類指令*算術(shù)運(yùn)算類指令*邏輯運(yùn)算指令*字符串操作指令*程序控制類指令*CPU控制指令介紹DEBUG調(diào)試工具3.1指令格式與尋址方式有關(guān)的基本概念微機(jī)工作過程中其內(nèi)部信息有兩類:一類是控制信息(指令);一類是被加工處理的信息(數(shù)據(jù))。指令:微機(jī)中的控制信息就是使計(jì)算機(jī)進(jìn)行某種操作的命令,這些命令就稱為指令。指令系統(tǒng):一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部指令的集合稱為指令系統(tǒng)。不同的計(jì)算機(jī)其指令系統(tǒng)是不同的。匯編語(yǔ)言指令或符號(hào)指令:用字母和其它一些符號(hào)組成的“助記符”與操作數(shù)等表示的指令稱為匯編語(yǔ)言指令或符號(hào)指令。例如:MOVAX,BX;AX←BX

其二進(jìn)制代碼(機(jī)器代碼)為89D8H,就是1000100111011000B

不易理解,不易記憶。匯編程序與匯編過程:把符號(hào)指令變成機(jī)器代碼的過程叫匯編,完成匯編任務(wù)的程序叫匯編程序。一、指令格式指令一般由兩部分組成:操作碼與地址碼操作碼規(guī)定操作的性質(zhì)(即執(zhí)行什么樣的操作)地址碼提供操作數(shù)地址或操作數(shù)本身。還有多地址指令微機(jī)中操作數(shù)的來源有以下三處:操作數(shù)就含在指令中(碼區(qū)中);操作數(shù)在CPU的REG中;

操作數(shù)在內(nèi)存的數(shù)據(jù)區(qū)中;QDQD1D2D3二、尋址方式如何尋找操作數(shù)就是尋址方式。(在何處,如何找)8086有24種尋址方式(可對(duì)位,字節(jié),字,字串,BCD等數(shù)據(jù)類型等進(jìn)行操作)這里介紹常用的幾種尋址方式。立即尋址操作數(shù)直接包含在指令中,操作碼后緊跟著一個(gè)或兩個(gè)字節(jié)的操作數(shù),又稱為立即數(shù)(碼區(qū)中)。例如:MOVAL,34HMOVAX,1234H

圖3.1立即尋址示意圖寄存器尋址操作數(shù)放在CPU內(nèi)部的REG中,如AX,BX,CX,DX等。例如:MOVCX,AX;CX←AX.

圖3.2寄存器尋址示意圖

寄存器間接尋址操作數(shù)是在存儲(chǔ)器中,而不在REG中,操作數(shù)地址的16位偏移量是在REG中(即SI,DI,BP,BX之一中)。分以下兩種情況:①若以SI、DI、BX間址,操作數(shù)在現(xiàn)行數(shù)據(jù)段區(qū)域中,操作數(shù)地址為DS左移4位加上SI、DI、BX中之一的內(nèi)容。例如:DS=2000H,SI=1500H,執(zhí)行MOXAX,[SI]—(間址用[])則操作數(shù)地址為21500H與21501H。(若指令中指定是段超越的,則SI、DI、BX之內(nèi)容也可以與其它段REG相加,形成操作數(shù)之地址。如:MOVAX,ES:[SI]或ES:MOVAX,[SI]若ES=2200H,SI=1500H,則地址為23500H與23501H)。②若以BP間址,則操作數(shù)在堆棧段區(qū)域內(nèi),操作數(shù)地址為SS左移4位加上BP之內(nèi)容。例如:SS=1200H,BP=2200H,執(zhí)行MOVAX,[BP]

操作數(shù)地址為14200H與14201H

約定:若以SI、DI、BX作間址,對(duì)應(yīng)的段寄存器為DS,若以BP作間址,對(duì)應(yīng)的段寄存器為SS。

允許段超越,即在指令中可以指定其他段寄存器。直接尋址操作數(shù)地址的16位偏移量直接在指令中(存放于碼區(qū)),而操作數(shù)是在數(shù)據(jù)區(qū)中。(操作數(shù)地址為DS左移4位加上該16位偏移量)例如:MOVAX,[1200H];1200H為16位地址偏移量若DS=1200H,則操作數(shù)地址為12000H和12001H。

(允許段超越)變址尋址以指定的REG內(nèi)容,加上指令中給定的8位(或16位)偏移量(必須要一個(gè)段REG作基址),作為操作數(shù)之地址。作為變址尋址的REG是SI、DI、BX、BP中任一個(gè)。(三個(gè)內(nèi)容相加→地址)例如:MOVAX,[DI+60]或MOVAX,60[DI];MOVBX,[SI+1000H]或MOVBX,1000H[SI]

若DS=1500H,SI=1200H,則尋址過程如圖3.6。通常SI,DI,BX作變址REG時(shí)→DS

BP作變址時(shí)→SS。

(允許段超越)基址加變址尋址方式通常把BX和BP作基址REG,SI與DI做變址REG,把這兩種尋址結(jié)合起來形成一種新的尋址方式。即BX或BP加上SI或DI再加上8(or16)位偏移量,四個(gè)量相加。例如:MOVAX,[BX+SI+1030H]或MOVAX,1030[BX][SI]

若BX=2100H,SI=1400H,偏移量1030H,DS=1200H,尋址過程如圖3.7。則操作數(shù)地址為12000+2100+1400+1030=16530H與16531H。正常情況下:由基址REG決定哪個(gè)段REG作為地址基準(zhǔn)

約定:BX→DS,BP→SS。(允許段超越)3.2數(shù)據(jù)傳送類指令

一、通用數(shù)據(jù)傳送類指令MOVOPRD1,OPRD2;OPRD1←OPRD2

其中OPRD1為目的操作數(shù),可以是存儲(chǔ)器操作數(shù),又可以是寄存器操作數(shù);OPRD2為源操作數(shù),可以是寄存器或內(nèi)存操作數(shù),也可以是立即數(shù);注意:

OPRD1,OPRD2不能同時(shí)為內(nèi)存操作數(shù);CS和IP不能做目的操作數(shù);

所有的MOV指令都不改變標(biāo)志位。傳送方向示意圖段寄存器CS,DS,SS,ES通用REGAX…DXBP,SI,DI,SPMEM立即數(shù)堆棧操作指令堆棧是一個(gè)按照后進(jìn)先出原則組織的一段內(nèi)存區(qū)域,要由堆棧區(qū)域與棧指針SP組成,堆棧主要用于子程序調(diào)用與中斷服務(wù)處理程序。

堆棧指令分為壓棧和出棧指令。①壓棧指令PUSHreg/mem或PUSHOPRD

操作如下:SP←SP-1(棧操作都是16位)[SP]←OPRDHSP←SP-1[SP]←OPRDL例如SP=2000H,SS=1000H,AX=1234H執(zhí)行PUSHAX,則堆棧內(nèi)容與SP如下:

SP=1FFEH3412××SP→1FFE1FFFSP→2000M出棧指令POPOPRD

與PUSH過程相反。交換指令

XCHGOPRD1,OPRD2;B/WOPRD1,OPRD2可以是CPU內(nèi)部REG,也可以是內(nèi)存單元,但不能同時(shí)為兩個(gè)內(nèi)存單元。不可以指定段寄存器為交換寄存器。

XCHGBX,[BP+SI]XCHGCX,SI二、累加器專用傳送指令輸入/輸出指令I(lǐng)N,OUTINAL/AX,portINAL/AX,DXOUTport,AL/AXOUTDX,AL/AX例如:有兩個(gè)I/O端口分別為:80H和120H,如何讀/寫這兩個(gè)端口?

讀80H口:

INAL,80H;

寫80H口:OUT80H,AL

讀120H口:MOVDX,120H;INAL,DX

寫120H口:MOVDX,120H;OUTDX,AL表格查找指令(操作數(shù)是隱含的,操作數(shù)地址為基址+索引值)

XLAT;BX為表格起點(diǎn),AL為索引值;從[BX+AL]中取一個(gè)字節(jié)送給AL。BX+0→BX+1→BX+2→BX+AL→XXYYZZ表格地址內(nèi)容DD三、地址傳送指令LEAreg,src;src代表地址偏移量(16位)例如:LEABX,[2400H];BX=2400HLDSreg,mem;(DW)

將mem中的字裝入到指定的reg中,跟在內(nèi)存單元字后面的mem單元中的字裝入到DS中。若DS=1000H,例如:LDSSI,[20H]

SI=1234H,DS=2000HLESreg,mem;(DW)

將上述指令的DS換為ES即可。20001234→SI→DS10020H10021H10022H10023HM四、標(biāo)志傳送指令LAHF(LoadAHfromFlags):將FR中的低8位送到AH中SAHF(StoreAHintoFlags)

與LAHF相反,將AH→FR中的低8位。PUSHF

將FR壓入堆棧。POPF

將堆棧頂內(nèi)容彈出給FR。CFPFAFZFSFAHFR3.3算術(shù)運(yùn)算指令一、加法指令(ADD,ADC,INC)1.不帶進(jìn)位CF的加法指令

ADDOPRD1,OPRD2;OPRD1←OPRD1+OPRD2ADDmem/reg1,mem/reg1/data2.帶進(jìn)位的加法指令

ADCOPRD1,OPRD2;OPRD1←OPRD1+OPRD2+CF

ADD與ADC影響標(biāo)志位SZAPCO(六個(gè))加1指令

INCOPRD;

(8位或16位REG,MEM內(nèi)容)注:段REG內(nèi)容不能加1;不改變CF,只改變S,Z,A,P,O。

二、減法指令不帶CF減法指令

SUBOPRD1,OPRD2;OPRD1←OPRD1-OPRD2。帶CF減法指令

SBBOPRD1,OPRD2;OPRD1←OPRD1-OPRD2-CF。

SUB與SBB影響SZAPCO。減1指令

DECreg/mem;(B/W);reg/mem←reg/mem-1。求補(bǔ)指令

NEGreg/mem;reg/mem←0-reg/mem

標(biāo)志同減法SUB。比較指令

CMPOPRD1,OPRD2;OPRD1-OPRD2

不送回相減的結(jié)果,只影響標(biāo)志位。?當(dāng)兩數(shù)x,y為無符號(hào)數(shù)比較時(shí),判斷大小用CF標(biāo)志:若x-y,CF=0,x>y;

若x-y,CF=1,x<y。?若兩數(shù)x,y為帶符號(hào)數(shù)比較大小時(shí),用OF與SF判斷大?。喝魓-y后,SF=1,OF=1,則x>y;

SF=0,OF=0,則x>y;

即若SF

OF=0,則x>y。若x-y后,SF=1,OF=0或SF=0,OF=1,即:SF

OF=1則x<y。例如:AL=50H,BL=A0H,判斷AL,BL誰大。

CMPAL,BL之后,SZAPCO=100011

(50H-A0=B0H,有一個(gè)借位)

?若為無符號(hào)數(shù),CF=1,BL>AL;?若為符號(hào)數(shù),SF=1,OF=1,則SF

OF=0

所以AL>BL。三、乘法指令無符號(hào)數(shù)乘法

MULreg/mem;(B/W)

該指令只影響CF與OF,當(dāng)乘積的高一半為0,則OF=CF=0;否則CF=OF=1。

Reg/memALAHAL8×8AXReg/memAXDX|AX16×16帶符號(hào)數(shù)乘法

IMULreg/mem;

與MUL相似,只是兩操作數(shù)是符號(hào)數(shù)。

若OF=CF=0,則表示AH或DX中不是00就是FF,積的符號(hào)位擴(kuò)展。若OF=CF=1,表示AH(orDX)內(nèi)容是積的有效數(shù)字部分。例如:MOVAL,FBH|MOVAL,FBHMOVBH,02H|MOVBH,02HIMULBH|MULBH

則AX=FFF6H,|則AX=01F6H,即502CF=OF=0,符號(hào)位擴(kuò)展。|CF=OF=1(AH=01為有效位)。四、除法指令無符號(hào)數(shù)除法

DIVmem/regDX|AX÷mem/reg(32位÷16位)→AX…DXAX÷mem/reg(16位÷8位)→AL…AH

標(biāo)志ZSAPCO不確定。帶符號(hào)數(shù)除法

IDIVmem/reg

商范圍:8位:-128~+12716位:-32768~+32767

若超出了這個(gè)范圍,則會(huì)作為除數(shù)為0的情況來處理,即產(chǎn)生一個(gè)0號(hào)中斷(不是按常規(guī)使OF=1)。若8位÷8位,或16÷16時(shí),被除數(shù)AH與DX做符號(hào)擴(kuò)展。商余將AL之符號(hào)擴(kuò)展到AH中

CBW

若AL<80H,則CBW后,AH←00;若AL≥80H,則CBW后,AH←FFH;不影響標(biāo)志位。擴(kuò)展AX之符號(hào)到DX中

CWD

若AX<8000H,則CWD后,DX←0000;若AX≥8000H,則CWD后,DX←FFFFH;不影響標(biāo)志位。五、BCD碼運(yùn)算指令有兩類BCD碼:一類叫組合的BCD碼,即一個(gè)字節(jié)表示兩個(gè)BCD碼,如01000101表示45;(壓縮BCD)

另一類叫非組合的BCD碼,一個(gè)字節(jié)只用低4位表示一位BCD碼,高4位為0,如00001000表示8。(非壓縮BCD)BCD碼加法十進(jìn)制調(diào)整指令?組合BCD碼:DAA

影響OF之外的五個(gè)標(biāo)志位(S、A、Z、P、C)?非組合BCD碼:AAA

影響AF和CFBCD碼減法調(diào)整指令?DAS(組合的BCD碼調(diào)整)?AAS(非組合的BCD碼調(diào)整)BCD碼乘法調(diào)整指令:AAM

被乘數(shù)和乘數(shù)都是用非組合的BCD碼表示。BCD碼除法調(diào)整指令:AAD對(duì)AX中兩位未組合的BCD數(shù)在相除前校正3.4邏輯運(yùn)算指令

NOT求反單操作數(shù)

NOTreg/memAND,OR,XOR指令

ANDOPRD1,OPRD2

OROPRD1,OPRD2XOROPRD1,OPRD2

標(biāo)志位:CF=OF=0,AF未定義;SF,ZF,PF與操作結(jié)果有關(guān)檢測(cè)指令

TESTOPRD1,OPRD2

與AND一樣按位相與,結(jié)果不送回,僅影響標(biāo)志位,標(biāo)志與AND一樣。移位指令算術(shù)左移SALCF算術(shù)右移SARCF邏輯左移SHLCF邏輯右移SHRCFMBLB000SALreg/mem,1或SALreg/mem,CL;S,Z,P,C與結(jié)果有關(guān);移位之后,CF和

最高位不相等,OF=1;循環(huán)移位?不帶CF循環(huán)ROLCFRORCF?帶CF循環(huán)RCLCFRCRCF只影響CF與OF標(biāo)志:符號(hào)位改變OF=1;符號(hào)位不改變OF=0。說明:1、8條移位指令的移位次數(shù)若為1位,次數(shù)可直接寫在指令中,若大于1次,則移位次數(shù)須寫在CL中。2、SAL,SAR,SHL,SHR影響SF,ZF,PF,CF;OF=0,表示移位前后符號(hào)位沒變;OF=1,表示移位前后符號(hào)位改變。(SAR不改變OF)。3、ROL,ROR,RCL,RCR只影響OF與CF,其它標(biāo)志不變。CF與移位有關(guān),OF反映移位前后符號(hào)位是否改變。3.5串操作指令

串操作指令8086CPU有5種字符串操作指令:MOVS,LODS,STOS,CMPS,SCAS先介紹一下它們的共性:

全部為1字節(jié)指令;

用SI尋址源操作數(shù)(默認(rèn)段為DS);

用DI尋址目的操作數(shù)(默認(rèn)段為ES);

用CX做計(jì)數(shù)器;

地址修改取決于DF,若DF=0,則地址增量(加1或2),DF=1,則地址減量(減1或2);

串操作指令的前面可以加上重復(fù)操作前綴,于是指令重復(fù)執(zhí)行,直到CX的操作次數(shù)滿足要求為止。串操作指令字符串傳送(MOVEString)

MOVSB/MOVSW

完成MEM→MEM(B/W),由SI指定的MEM單元中8位(或16位)數(shù)到DI指定的MEM單元中。可以采用重復(fù)前綴REP,直到CX減到0,對(duì)標(biāo)志位無影響。例如:MOVSI,1000HREP

MOVSBMOVDI,1200HMOVAH,4CHMOVCX,100INT21HCLD串操作指令字符串比較(CompareString)

CMPSB/CMPSW;[SI]-[DI],置FR

可用來檢查兩個(gè)字符串(數(shù)據(jù)塊)是否相等。若找相等的字符,加前綴REPE或REPZ,可解釋為“當(dāng)塊未結(jié)束(CX≠0)且字符是相等的(ZF=1),繼續(xù)比較?!比粽也坏鹊淖址?,加前綴REPNE或REPNZ,則“串未結(jié)束(CX≠0)且字符不等(ZF=0),繼續(xù)比較?!贝僮髦噶钭址阉鳎⊿canString)

SCASB/SCASW;AL/(AX)-ES:[DI],改變FR,在數(shù)據(jù)塊中找KEY(關(guān)鍵字)??杉又貜?fù)前綴REPE/REPZ,“當(dāng)串未結(jié)束(CX≠0)且ZF=0,繼續(xù)搜索?!币部杉又貜?fù)前綴REPNE/REPNZ,,“當(dāng)串未結(jié)束(CX≠0)且ZF=1,繼續(xù)搜索?!睆腂LOCK開始有一個(gè)數(shù)據(jù)串,共100個(gè)字節(jié),在該數(shù)據(jù)串中查找關(guān)鍵字,關(guān)鍵字放在CHR單元中,查到則將關(guān)鍵字的偏移地址放在POINTER中,搜索次數(shù)放在DI中。若未查到,則將POINTER單元清零。

MOVDI,OFFSETBLOCK MOVCX,100 MOVAL,CHAR CLD REPNZSCASB JZS1 MOVDI,0 JMPS2S1:DECDI……

字符串裝入(LoadString)

LODSB/LODSW;AL/AX←DS:[SI]并修改SI。使用REP沒意義(可用來統(tǒng)計(jì)正、負(fù)、0的個(gè)數(shù),大小寫字母等)。5.字符串填充(StorString)

STOSB/STOSW;AL/AX→ES:[DI]并修改DI??杉覴EP,在內(nèi)存中填充一串相同的數(shù)據(jù),如清0。把內(nèi)存某個(gè)區(qū)域填入相同的字符。

某數(shù)據(jù)緩沖區(qū)起始地址為BLOCK,共存放100個(gè)字節(jié)8位帶符號(hào)數(shù),要求把正負(fù)數(shù)相分離,其中正數(shù)存放在PLUS開始的單元中,負(fù)數(shù)存放在MINUS開始的單元中。

PUSHDSSTOSBPOPESXCHGBX,DIMOVSI,OFFSETBLOCKL2:DECCXMOVDI,OFFSETPLUSJNZL1MOVBX,OFFSETMINUSHLTMOVCX,100CLDL1:LODSBTESTAL,80HJNZMINSTOSBJMPL2MIN:XCHGBX,DI3.6程序控制類指令

程序控制類指令共有4種,分別是:調(diào)用、返回指令CALL,RET無條件轉(zhuǎn)移和條件轉(zhuǎn)移JMP,JCC(CC為條件)循環(huán)控制LOOP,(LOOPE/LOOPZ,LOOPNE/LOOPNZ)中斷控制INTn,IRET一、調(diào)用與返回,轉(zhuǎn)移調(diào)用指令格式:CALLaddr;直接給出調(diào)用地址;

CALLdisp16;直接給出調(diào)用地址16位偏移量;CALLreg/mem;通過reg或mem給出地址;具體的有:CALLDXCALLNear[BX]CALLNear[1000H]CALL1200HCALLFar[BX]CALLFar[100H]CALL1200H:1000H段內(nèi)調(diào)用,Near可省去段間調(diào)用,F(xiàn)ar不能省返回指令格式:RET;段內(nèi)返回,棧針SP+2;RETF;段間返回,棧針SP+4;RETdisp16;SP+2之后再加disp16;RETFdisp16;SP+4之后再加disp16;例如:SP=FFF2H,執(zhí)行RETF04后,SP=FFFAH。(允許用戶廢除一些在執(zhí)行CALL以前入棧的參數(shù))第一個(gè)字→IP第二個(gè)字→CS無條件轉(zhuǎn)移

JMPaddrJMPdispJMPreg/mem與CALL一樣,可用Near或Far表示段內(nèi)或段間轉(zhuǎn)移。JMP不要求返回。二、條件轉(zhuǎn)移指令

以某些標(biāo)志位或若干標(biāo)志的邏輯組合作為條件,若滿足條件cc,則轉(zhuǎn)向目標(biāo)地址。8086轉(zhuǎn)移的上下范圍為-128~+127。可分為:a.根據(jù)單個(gè)標(biāo)志的條件轉(zhuǎn)移指令;b.根據(jù)若干標(biāo)志位的邏輯組合的轉(zhuǎn)移指令。(一)、根據(jù)單個(gè)標(biāo)志的條件轉(zhuǎn)移(5個(gè)標(biāo)志S,Z,P,C,O之一,共有10種情況)S標(biāo)志JSdisp;(JS—JumponSign)若SF=1,則轉(zhuǎn)移至目的地址;JNSdisp;若SF=0,則轉(zhuǎn)移至目的地址;Z標(biāo)志JZ/JEdisp;ZF=1,則轉(zhuǎn)移JNZ/JNEdisp;ZF=0,則轉(zhuǎn)移(JNZ與JNE是同一指令的兩種寫法。)P標(biāo)志JP/JPEdisp;PF=1,則轉(zhuǎn)移JNP/JPOdisp;PF=0,則轉(zhuǎn)移C標(biāo)志JC/JB/JNAEdisp;CF=1,則轉(zhuǎn)移JNC/JNB/JAEdisp;CF=0,則轉(zhuǎn)移O標(biāo)志JOdisp;OF=1,則轉(zhuǎn)移JNOdisp;OF=0,則轉(zhuǎn)移(二)、若干個(gè)標(biāo)志位邏輯組合的條件轉(zhuǎn)移判斷無符號(hào)數(shù)的大?。–F與ZF)JA/JNBEdisp;大于且不相等,CF=0,ZF=0。兩個(gè)無符號(hào)數(shù)比較大小時(shí),A>B(不包括相等),則轉(zhuǎn)移。JNA/JBEdisp;

A≤B滿足cc,小于(Below)CF=1,相等ZF=1,cc為:CF=1,或者ZF=1判斷符號(hào)數(shù)的大小(SF,OF,ZF組合)JG/JNLE;A>B滿足cc,則轉(zhuǎn)移;不等ZF=0,大于SF

OF=0,所以cc為:

SF

OF=0并且ZF=0;JGE/JNC;A≥B,滿足cc,則轉(zhuǎn)移;

cc為:SF

OF=0或ZF=1;JL/JNGEdisp;A<B,滿足cc則轉(zhuǎn)移;

cc為:SF

OF=1并且ZF=0;JLE/JNGdisp;A≤B,滿足cc則轉(zhuǎn)移;

cc為:SF

OF=0或ZF=1;三、循環(huán)控制指令

循環(huán)控制指令在循環(huán)的頭部或尾部確定是否進(jìn)行循環(huán),范圍為+127~-128之間,對(duì)完成串操作十分有用。LOOPdisp;CX←CX-1,若CX≠0,則轉(zhuǎn)至目的地址;在使用LOOP之前,需把循環(huán)次數(shù)置于CX中。

LOOPdispDECCXJNZdispLOOPE/LOOPZdisp;CX←CX-1,若CX≠0且ZF=1則繼續(xù)循環(huán);

若CX≠0ZF=0,則停止循環(huán);若CX=0,則停止循環(huán);3.LOOPNE/LOOPNZdisp;CX←CX-1,若CX≠0且ZF=0則轉(zhuǎn)移(循環(huán));JCXZdisp;當(dāng)CX=0時(shí),轉(zhuǎn)移,跳出循環(huán);

CX≠0則不轉(zhuǎn)移。為了能跳出循環(huán),只要在開始處置CX=0即可,CX每次不減1。四、中斷控制指令軟中斷指令:INTnn為中斷矢量號(hào),n可以是0~255(00

~FF)類型號(hào),n×4(地址)中存放著中斷服務(wù)入口地址IP值,n×4+2中存放著中斷服務(wù)入口地址的CS值,有了中斷服務(wù)程序的入口地址,就可以轉(zhuǎn)入中斷服務(wù)程序。該指令執(zhí)行如下操作:?將FR壓入堆棧;?清除IF和TF標(biāo)志,即置IF=TF=0;?將斷點(diǎn)地址CS壓入棧內(nèi);?將中斷服務(wù)程序入口地址的段址裝入CS中(從

內(nèi)存地址n×4+2中?。?將斷點(diǎn)地址IP壓入棧內(nèi);?將中斷服務(wù)程序入口地址的偏移量裝入IP中(從

內(nèi)存地址n×4中?。?。

中斷向量號(hào)n由系統(tǒng)占用若干,提供給用戶若干。INT0;除法出錯(cuò);INT1;單步中斷;INT2;NMI中斷;INT3;斷點(diǎn)中斷;INT4;溢出中斷;

┇┇I(xiàn)NT21H;DOS功能調(diào)用。例如:INT4(INTO)n×4=16=10H,n×4+2=18=12H,則00010H,00011H存放中服IP值,00012H,00013H存放CS值。中斷服務(wù)程序入口地址是

2100:5678H78560021M00010000110001200013IPCS中斷返回指令:IRET從中斷返回,中斷服務(wù)程序的最后一條指令是IRET;把棧中的斷點(diǎn)地址CS:IP及FR彈出送到CS,IP和FR,返回中斷時(shí)的斷點(diǎn)處。3.7CPU控制指令

一、標(biāo)志位操作指令(CF,DF,IF)進(jìn)位標(biāo)志清0:CLC;CF←0;進(jìn)位標(biāo)志置1:STC;CF←1;進(jìn)位標(biāo)志取反:CMC;CF←CF;(complement)方向標(biāo)志清0:CLD;DF←0;方向標(biāo)志置1:STD;DF←1;中斷標(biāo)志清0:CLI;IF←0(禁止、屏蔽INTR線上的中斷);7.進(jìn)位標(biāo)志置1:STI;IF←1(允許INTR線上中斷)二、空操作NOP:不進(jìn)行任何操作,等待4個(gè)T狀態(tài),用于精確定時(shí)或在源程序中插入指令。三、處理器暫停HLT:使CPU進(jìn)入暫停狀態(tài),CPU不進(jìn)行任何操作,也不影響FR。當(dāng)CPU處于HLT時(shí),只有下面三種情況之一發(fā)生時(shí),CPU才能脫離暫停狀態(tài):在RESET線上有復(fù)位信號(hào);在NMI上有請(qǐng)求(當(dāng)沒有總線請(qǐng)求時(shí));在IF=1時(shí),INTR線上有請(qǐng)求。四、處理器等待WAIT:與8087配合使用。該指令用于等待8087協(xié)處理器的運(yùn)行結(jié)果。五、處理器換碼ESCmem;將指定的存儲(chǔ)單元內(nèi)容送到數(shù)據(jù)BUS上,使其它外部處理器共享8086的程序與數(shù)據(jù)。六、總線鎖定前綴LOCK:在下一條指令執(zhí)行時(shí)鎖定總線,使別的主設(shè)備暫時(shí)不能控制BUS。

DEBUG(調(diào)試工具)的使用DEBUG命令進(jìn)入D

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論