微機(jī)原理第3章微型計(jì)算機(jī)原理及應(yīng)用教案課件_第1頁
微機(jī)原理第3章微型計(jì)算機(jī)原理及應(yīng)用教案課件_第2頁
微機(jī)原理第3章微型計(jì)算機(jī)原理及應(yīng)用教案課件_第3頁
微機(jī)原理第3章微型計(jì)算機(jī)原理及應(yīng)用教案課件_第4頁
微機(jī)原理第3章微型計(jì)算機(jī)原理及應(yīng)用教案課件_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章 8088/8086MPU的指令系統(tǒng) 尋址方式3.2中斷及中斷返回3.4指令與指令系統(tǒng)3.18086指令系統(tǒng)3.3計(jì)算機(jī)系統(tǒng)包括硬件和軟件兩大組成部分。硬件是指構(gòu)成計(jì)算機(jī)的中央處理機(jī)、主存儲器、外部設(shè)備等物理裝置,軟件則指由軟件廠家為方便用戶使用計(jì)算機(jī)而提供的系統(tǒng)軟件,和用戶用于完成自己的特定事務(wù)和信息處理任務(wù)而設(shè)計(jì)的用戶程序軟件。計(jì)算機(jī)能直接識別和運(yùn)行的軟件程序通常由該計(jì)算機(jī)的指令代碼組成。尋址方式3.2中斷及中斷返回3.4指令與指令系統(tǒng)3.18086指令系統(tǒng)3.33.1 指令與指令系統(tǒng) 要確定一臺計(jì)算機(jī)的指令系統(tǒng)并評價(jià)其優(yōu)劣,通常應(yīng)從如下4個(gè)方面考慮:1、指令系統(tǒng)的完備性,常用指令齊

2、全,編程方便。2、指令系統(tǒng)的高效性,程序占內(nèi)存空間少,運(yùn)行速度快。3、指令系統(tǒng)的規(guī)整性,指令和數(shù)據(jù)使用規(guī)則統(tǒng)一簡單,易學(xué)易記。4、指令系統(tǒng)的兼容性,同一系列的低檔計(jì)算機(jī)的程序能在高檔機(jī)上直接運(yùn)行。要完全同時(shí)滿足上述標(biāo)準(zhǔn)是困難的,但它可以指導(dǎo)我們設(shè)計(jì)出更加合理的指令系統(tǒng)。設(shè)計(jì)指令系統(tǒng)的核心問題是選定指令的格式和功能。3.1.1指令的組成 通常情況下,一條指令要由兩部分內(nèi)容組成,其格式為:第一部分,是指令的操作碼op code。操作碼用于指明本條指令的操作功能,例如,是算術(shù)加運(yùn)算、減運(yùn)算還是邏輯與、或運(yùn)算功能,是否是讀、寫內(nèi)存或讀、寫外設(shè)操作功能,是否是程序轉(zhuǎn)移和子程序調(diào)用或返回操作功能等,計(jì)算機(jī)

3、需要為每條指令分配一個(gè)確定的操作碼。第二部分,是指令的操作數(shù)opd/地址addr,用于給出被操作的信息(數(shù)據(jù))或操作數(shù)的地址,包括參加運(yùn)算的一或多個(gè)操作數(shù)所在的地址,運(yùn)算結(jié)果的保存地址,程序的轉(zhuǎn)移地址、被調(diào)用的子程序的入口地址等。操作碼操作數(shù)/地址3.1.2 指令的分類 從用到的操作數(shù)個(gè)數(shù)區(qū)分,可能有如下4種情況:1.無操作數(shù)指令有的指令不涉及操作數(shù),或使用約定的某個(gè)(些)操作數(shù),既已約定則沒有必要再在指令中加以表示,稱這類指令為無操作數(shù)指令,它僅有操作碼部分,例如停機(jī)指令、空操作指令、關(guān)中斷指令、堆棧結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)中對堆棧中數(shù)據(jù)運(yùn)算的指令等。2.單操作數(shù)指令有些指令只用一個(gè)操作數(shù),必須在指

4、令中指明其地址,如一個(gè)寄存器內(nèi)容增1或減1運(yùn)算的指令;或還使用約定的某個(gè)操作數(shù),既已約定則無需再在指令中加以表示,如完成從(向)外設(shè)讀(寫)數(shù)據(jù)的指令,就可以只在指令中指明該外設(shè)地址,而把接受(送出)數(shù)據(jù)的通用寄存器約定下來。此外,在短字長的、采用單個(gè)累加器的計(jì)算機(jī)中,已約定目的操作數(shù)(如被加數(shù)、被減數(shù)等)和保存計(jì)算結(jié)果都使用唯一的那個(gè)累加器,指令中只需表示另一個(gè)源操作數(shù)即可。稱這類指令為單操作數(shù)指令。.3.雙操作數(shù)指令對于常用的算術(shù)和邏輯運(yùn)算指令,往往要求使用兩個(gè)操作數(shù),一個(gè)叫做原操作數(shù)/地址,另一個(gè)叫做目的操作數(shù)/地址,需分別給出目的操作數(shù)和源操作數(shù)的地址,其中目的操作數(shù)地址還用于保存本次

5、的運(yùn)算結(jié)果。稱這類指令為雙操作數(shù)指令。4.多操作數(shù)指令另外一些指令可能使用多個(gè)操作數(shù),如3個(gè)操作數(shù),其中兩個(gè)操作數(shù)地址分別給出目的操作數(shù)和源操作數(shù)的地址,第三個(gè)操作數(shù)地址用于指出保存本次的運(yùn)算結(jié)果的去處。可以稱這類指令為三操作數(shù)指令;在有些性能更高的計(jì)算機(jī)(甚至PC機(jī))中,還有在指令中使用更多個(gè)操作數(shù)地址的指令,用于完成對一批數(shù)據(jù)的處理過程,如字符串復(fù)制指令,向量、矩陣運(yùn)算指令等,稱這類指令為多操作數(shù)指令。3.1.3 指令系統(tǒng) 指令系統(tǒng)是指一臺計(jì)算機(jī)所能執(zhí)行的各種不同類型指令的總和。即一臺計(jì)算機(jī)所能執(zhí)行的全部操作。不同計(jì)算機(jī)的指令系統(tǒng)包含的指令種類和數(shù)目也不同。指令系統(tǒng)是表征一臺計(jì)算機(jī)性能的重

6、要因素,它的格式與功能不僅直接影響到機(jī)器的硬件結(jié)構(gòu),而且也直接影響到系統(tǒng)軟件,影響到機(jī)器的適用范圍。尋址方式3.2中斷及中斷返回3.4指令與指令系統(tǒng)3.18086指令系統(tǒng)3.33.2 尋址方式 3.2.1 立即尋址方式 操作數(shù)作為指令的一部分而直接寫在指令中,這種操作數(shù)稱為立即數(shù),這種尋址方式也就稱為立即數(shù)尋址方式。【例3-1】MOV AX,1234H注意:立即數(shù)不能能夠作為目的操作數(shù)。不能直接給段寄存器和標(biāo)志寄存器賦予立即數(shù)。這種尋址方式操作數(shù)在指令中。3.2.2 寄存器尋址方式 指令所要的操作數(shù)已經(jīng)在某寄存器中,表示指令時(shí),或把目標(biāo)操作數(shù)存入寄存器。把在指令中指出所使用寄存器(即:寄存器的

7、名字)的尋址方式稱為寄存器尋址方式。指令中可以引用的寄存器及其符號名稱如下:8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;1.源操作數(shù)是寄存器尋址方式如: ADD VARW, AX MOV VARB, BH等。其中: VARW和VARB是雙字,字和字節(jié)類型的內(nèi)存地址,叫做符號地址。2.目的操作數(shù)是寄存器尋址方式如:ADD BH, 78H ADD AX, 1234H等。3.源和目的操作數(shù)都是寄存器尋址方式如: MOV AX, BX MOV DH, BL等?!纠?-2】MOV AX,BX指令執(zhí)行前:(AX

8、)=3064H (BX)=1234H指令執(zhí)行后:(AX)=1234H,BX內(nèi)容未改變。注意:源寄存器與目的寄存器的位數(shù)必須一致。 這種尋址方式操作數(shù)在CPU中。3.2.3 RAM尋址方式 Opd也可以存放在存儲器中,這種尋址方式叫做存儲器尋址,存儲器尋址的關(guān)鍵是如何給出存儲器的地址,給出方式不同,尋址方式也有多種。 1.直接尋址方式【例3-3】MOV AX,2000H指令執(zhí)行前:(DS)=3000H,(32000H)=50H,(32019H)=30H操作數(shù)的物理地址=3000H*10H+2000H=32000H指令的操作是把32000H字存儲單元的內(nèi)容送AX寄存器。指令執(zhí)行后:(AX)=305

9、0H.2.寄存器間接尋址方式操作數(shù)在存儲器中,操作數(shù)的有效地址用SI、DI、BX和BP等四個(gè)寄存器之一來指定,稱這種尋址方式為寄存器間接尋址方式。該尋址方式物理地址的計(jì)算方法如下:若指令中指定的寄存器是BP,操作數(shù)在堆棧段,段基值在SS中。物理地址=(SS)*10h+(BP) -基地址指針寄存器,可對指針進(jìn)行修改形成下一個(gè)地址。(BX)-基址寄存器(SI)-源變址寄存器(DI)-目的變址寄存器物理地址=(DS)*10H+3.寄存器相對尋址方式該尋址方式是以指定的寄存器內(nèi)容,加上指令中給出的位移量(8位或16位),并以一個(gè)段寄存器為基準(zhǔn),作為操作數(shù)的地址。指定的寄存器一般是一個(gè)基址寄存器或變址寄

10、存器。寄存器相對尋址通過基址寄存器BX,BP或變址寄存器SI,DI與一個(gè)位移量相加形成有效地址(EA),計(jì)算物理地址(PA)的缺省段仍然是SI,DI和BX為DS,BP為SS。(BX)(SI)(DI)DISP8DISP16PA=(ES)*10H+DISP叫做位移量,實(shí)際上它是一個(gè)數(shù)值,可以是8位也可以是16位。4.基址加變址尋址方式這是一種基址加變址來定位操作數(shù)地址的方式,操作數(shù)的有效地址是一個(gè)基址寄存器(BP或BX)和一個(gè)變址寄存器(SI或DI)的內(nèi)容之和。MOV CL,BX+SIPA=(DS)*10H+(BX)+(SI)MOV CH,BX+DIPA=(DS)*10H+(BX)+(DI)4.基

11、址加變址尋址方式這是一種基址加變址來定位操作數(shù)地址的方式,操作數(shù)的有效地址是一個(gè)基址寄存器(BP或BX)和一個(gè)變址寄存器(SI或DI)的內(nèi)容之和。MOV AX,BP+SIPA=(SS)*10H+(BP)+(SI)MOV DX,BP+DIPA=(SS)*10H+(BP)+(DI)5.相對基址加變址尋址方式操作數(shù)的有效地址是基址加變址,再加上一個(gè)位移量得到。一般用于尋址復(fù)雜的數(shù)組中的元素。MOV DH,BX+DI+20H源操作數(shù)PA=(DS)*10H+(BX)+(SI)+20H;其中20H即為DISP5.相對基址加變址尋址方式MOV AX,F(xiàn)ILEBX+SI ;FILE為符號表示的DISP源操作數(shù)

12、PA=(DS)*10H+(BX)+(SI)+FILEMOV LISTBP+SI,AX目的操作數(shù)PA=(SS)*10H+(BP)+(SI)+LIST尋址方式3.2中斷及中斷返回3.4指令與指令系統(tǒng)3.18086指令系統(tǒng)3.33.3 8086指令系統(tǒng)3.3.1 數(shù)據(jù)傳送指令 1.通用數(shù)值傳送指令(MOV)格式:MOV DST,SRC其中,DST表示目的操作數(shù)或地址,SRC表示源操作數(shù)或地址。功能:把一個(gè)字節(jié)或字從源操作數(shù)傳送到目的操作數(shù),即DST(SRC),目的操作數(shù)原有內(nèi)容消失。注意事項(xiàng):立即樹不能為目的操作數(shù)。CS不能是目的操作數(shù),只能作為源操作數(shù)。目的操作數(shù)與源操作數(shù)不能同時(shí)用存儲器尋址方式

13、。(這一點(diǎn)適用于所有指令)不同類型的數(shù)據(jù)不能傳送。立即數(shù)不能直接送段寄存器。 MOV指令不影響標(biāo)志位。2.堆棧指令:格式1:PUSH SRC功能:PUSH 是壓棧指令。把棧頂指針減2,即SP(SP)-2;將源操作數(shù)送到棧頂指針?biāo)甘镜臈m攩卧?。格?:POP DST功能:退棧指令,把棧頂?shù)淖謹(jǐn)?shù)據(jù)從堆棧中彈出送目的操作數(shù)。DST(SP); (SP)(SP)+2注意事項(xiàng):PUSH 和POP 指令只能是字操作,不能是字節(jié)操作。POP的DST不允許是CS寄存器。PUSH和POP 指令不能使用立即數(shù)方式。PUSH 和 POP不影響標(biāo)志位。3.交換指令: (XCHG)格式:XCHG OPR1,OPR2其中

14、,OPR代表操作數(shù)寄存器。功能:(OPR1)(OPR2)注意:兩個(gè)操作數(shù)不能同時(shí)在存儲器中。也不能為立即數(shù)。不允許使用段寄存器。不影響標(biāo)志位。4.換碼指令: XLAT(查表指令)格式: XLAT 或 XLAT OPR功能: (AL)(DS)*10H+(BX)+(AL)根據(jù) AL寄存器提供的位移量,將BX指示的字節(jié)表格中的代碼換存到AL中.注意事項(xiàng):所建字節(jié)表格長度不能超過256B.不影響標(biāo)志位.5.累加器專用傳送指令:IN 指令:固定端口:格式:IN AL,Port /Port0FFH 功能:將I/O端口經(jīng)DX送AL或AX寄存器。 (AL)(DX) (AX)(DX)+1: (DX)OUT指令

15、:格式1: OUT Port,AL /Port0FFH功能:將AL或AX中的數(shù)據(jù)經(jīng)DX寄存器送往I/O端口. (DX)(AL) (DX)+1: (DX)(AX)注意事項(xiàng):不影響標(biāo)志位。3.3.2 地址傳送指令 1.有效地址裝入指令(LEA)格式:LEA REG,SRC功能:把源操作數(shù)的有效地址裝入指定的目標(biāo)寄存器。注意事項(xiàng):源操作數(shù)的數(shù)據(jù)類型可以是字節(jié)或字,而目的寄存器必須是16位的通用寄存器。LEA處理的是存儲單元的有效地址,MOV指令處理的是存儲單元的內(nèi)容。2.雙指針裝入指令(LDS,LES)格式:LDS REG,SRC LES REG,SRC功能:把雙字長操作數(shù)低地址之中內(nèi)中的偏移量裝入

16、指定的目的寄存器。3.3.3 標(biāo)志寄存器傳送指令 標(biāo)志寄存器傳送(有四條標(biāo)志傳送指令)1.LAHF (LOAD AH WITH FLAG)將標(biāo)志寄存器中的SF、ZF、AF、PF和CF(即低8位)傳送至AH寄存器的指定位,空位沒有定義。2.SAHF (STORE AH WITH FLAG)將寄存器AH的指定位,送至標(biāo)志寄存器的SF、ZF、AF、PF和CF位(即低8位)。根據(jù)AH的內(nèi)容,影響上述標(biāo)志位,對OF、DF和IF無影響。3.PUSHF (PUSH FLAG)將標(biāo)志寄存器壓入堆棧頂部,同時(shí)修改堆棧指針,不影響標(biāo)志位。4. POPF (POP FLAG)堆棧頂部的一個(gè)字,傳送到標(biāo)志寄存器,同時(shí)

17、修改堆棧指針,影響標(biāo)志位。3.3.4 算術(shù)運(yùn)算指令1.加法指令:格式1:ADD DST,SRC 功能:不帶進(jìn)位的加法,將源操作數(shù)與目的操作數(shù)相加,將和放入目的操作數(shù)地址中。DST(SRC)+(DST)格式2: ADC DST,SRC功能:帶進(jìn)位的加法,將源操作數(shù)、目的操作數(shù)以及標(biāo)志寄存器中的進(jìn)位標(biāo)志位相加,并將和放入目的操作數(shù)中。DSTSRC+DST+CF格式3:INC OPR功能:將目的操作數(shù)加1,放入目的操作數(shù)中.OPROPR+1 注意事項(xiàng):ADD和ADC指令是雙操作數(shù)指令,它們的兩個(gè)操作數(shù)不能同時(shí)為存儲器尋址方式,源操作數(shù)和目的操作數(shù)必須有一個(gè)是寄存器尋址方式。INC可以是 除立即數(shù)以外

18、的任何尋址方式。ADD、ADC影響條件標(biāo)志位,INC影響除了CF之外的其他條件碼。條件碼的設(shè)置情況:SF=1 加法結(jié)果為負(fù)數(shù)SF=0 加法結(jié)果為正數(shù)ZF=1 加法結(jié)果為0ZF=0 加法結(jié)果不為0CF=1 最高有效位向高位有進(jìn)位CF=0 最高有效位向高位無進(jìn)位OF=1 兩個(gè)同符號數(shù)相加,結(jié)果符號與 其相反OF=0 不同符號數(shù)相加時(shí),或同符號數(shù)相加,結(jié)果符號與其相同2.減法指令: 格式1: SUB DST,SRC功能: (DST)(DST)-(SRC)格式2:SBB DST,SRC功能: (DST)(DST)-(SRC)-CF格式3:DEC OPR功能: (OPR)(OPR)-1格式4: CMP

19、OPR1,OPR2功能: (OPR1)-(OPR2) ,根據(jù)相減的結(jié)果設(shè)置條件碼,但不回送結(jié)果.格式5:NEG OPR功能: (OPR)-(OPR)+1,求操作數(shù)的補(bǔ)碼,即對OPR取非后,末位再加1.條件碼設(shè)置:CF=1 二進(jìn)制減法運(yùn)算中最高有效位向更高位有借位(被減數(shù)=減數(shù))OF=1 兩數(shù)符號相反,而結(jié)果符號與減數(shù)相同OF=0 同符號數(shù)相減時(shí),或不同符號數(shù)相減時(shí),其結(jié)果符號與減數(shù)不同3.乘法指令:格式1:MUL SRC /無符號數(shù)乘法功能: (AX)(AL)*(SRC) 格式2:IMUL SRC /帶符號數(shù)乘法功能: (DX,AX)(AX)*(SRC)注意:影響CF,OF.對于MUL, CF

20、 OF =0 0 乘積高一半為0 CF OF=1 1 乘積高一半不為0對于IMUL,CF OF=0 0 乘積的高一半為低一半的符號 擴(kuò)展. CF OF=1 1 其他情況.4.除法指令:格式1:DIV SRC /無符號數(shù)除法格式2: IDIV SRC /有符號數(shù)除法功能:字節(jié)除法:(AL)(AX)/SRC的商 (AH)(AX)/SRC的余數(shù)字除法: (AX)(DX,AX)/SRC的商 (DX)(DX,AX)/SRC的余數(shù)注意事項(xiàng):不影響條件碼。當(dāng)除數(shù)為0或商溢出時(shí)由系統(tǒng)直接轉(zhuǎn)入0型中斷來處理。3.3.5 邏輯運(yùn)算指令 格式1:AND DST,SRC功能:邏輯與,(DST)(DST)(SRC)格式

21、2: OR DST,SRC功能:邏輯或,(DST)(DST)(SRC)格式3: NOT OPR功能:邏輯非,()(OPR#)格式4: XOR DST,SRC功能:邏輯異或,(DST)(DST)(SRC)格式5:TEST OPR1,OPR2功能:根據(jù)與運(yùn)算結(jié)果,設(shè)置條件碼,結(jié)果不回送.注意事項(xiàng):這是一組位操作指令,它們可以對字或字節(jié)按位執(zhí)行邏輯操作,因此源操作數(shù)經(jīng)常為一個(gè)位串。NOT 不影響標(biāo)志位。其他指令指令后,CF、OF置0,AF無定義,SF、ZF、PF根據(jù)運(yùn)算結(jié)果設(shè)置。3.3.6 移位指令 格式1:SHL DST,CNT功能:邏輯左移,最低位補(bǔ)0,最高位移到CF中。格式2:SHR DST,

22、CNT功能:邏輯右移,最高位補(bǔ)0,最低位移到CF中。格式3:SAL DST,CNT功能:算術(shù)左移,最高位移到CF中,最低位補(bǔ)0。格式4:SAR DST,CNT功能:算術(shù)右移,最高位用符號位的值補(bǔ)充,最低位移到CF中。格式5:ROL DST,SRC功能:循環(huán)左移,最高位移到最低位,其余各位依次左移。格式6:ROR DST,SRC功能:循環(huán)右移,最低位移到最高位,其余各位依次右移。格式7:RCL DST,SRC功能:帶進(jìn)位的循環(huán)左移。CF移到最低位,操作數(shù)最高位移到CF,其余各位依次左移。格式8:RCR DST,SRC功能:帶進(jìn)位的循環(huán)右移。CF 移到最高位,最低位移到CF,其余各位依次右移。3.

23、3.7 控制轉(zhuǎn)移指令1.無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令JMP分直接轉(zhuǎn)移和間接轉(zhuǎn)移兩種。一般格式: JMP OPRD ;OPRD是轉(zhuǎn)移的目的地址(1)短程轉(zhuǎn)移 JMP SHORT OPRD ;IP=IP+8位位移量目的地址與JMP指令所處地址的距離應(yīng)在-128127范圍之內(nèi)。(2)近程轉(zhuǎn)移 JMP NEAR PTR OPRD ;IP=IP+16位位移量 或 JMP OPRD ;NEAR可省略目的地址與JMP指令應(yīng)處于同一地址段范圍之內(nèi)。(3)遠(yuǎn)程轉(zhuǎn)移 JMP FAR PTR OPRD ;IP=OPRD的段內(nèi)位移量,CS=OPRD所在段地址。遠(yuǎn)程轉(zhuǎn)移是段間的轉(zhuǎn)移,目的地址與JMP指令所在地址不在同一

24、段內(nèi)。執(zhí)行該指令時(shí)要修改CS和IP的內(nèi)容。間接轉(zhuǎn)移指令的目的地址可以由存儲器或寄存器給出。(4)段內(nèi)間接轉(zhuǎn)移 JMP WORD PTR OPRD ;IP=EA (由OPRD的尋址方式確定)。JMP WORD PTRBX IP=(DS)*16+(BX)JMP WORD PTR BX IP=(BX)(5)段間間接轉(zhuǎn)移 JMP DOWRD PTR OPRD;IP=EA,CS=EA+2該指令指定的雙字節(jié)指針的第一個(gè)字單元內(nèi)容送IP,第二個(gè)字單元內(nèi)容送CS。JMP DWORD PTR BX+SI2.條件轉(zhuǎn)移8086有18條不同的條件轉(zhuǎn)移指令。它們根據(jù)標(biāo)志寄存器中各標(biāo)志位的狀態(tài),決定程序是否進(jìn)行轉(zhuǎn)移,滿足

25、條件轉(zhuǎn)移,不滿足條件則順序執(zhí)行。條件轉(zhuǎn)移指令的目的地址必須在現(xiàn)行的代碼段(CS)內(nèi),并且以當(dāng)前指針寄存器IP內(nèi)容為基準(zhǔn),其位移必須在十127128的范圍之內(nèi)。 3.循環(huán)指令對于需要重復(fù)進(jìn)行的操作,微機(jī)系統(tǒng)可用循環(huán)程序結(jié)構(gòu)來進(jìn)行,8086/8088系統(tǒng)為了簡化程序設(shè)計(jì),設(shè)置了一組循環(huán)指令,這組指令主要對CX或標(biāo)志位ZF進(jìn)行測試,確定是否循環(huán) 表3-2循環(huán)指令表指令格式執(zhí)行操作LOOP OPRDCX=CX-1;若CX0,則循環(huán)LOOPNZ/LOOPNE OPRDCX=CX-1,若CX0 且ZF=0,則循環(huán)LOOPZ/LOOPE OPRDCX=CX-1,若CX0 且ZF=1,則循環(huán)4.子程序調(diào)用與返

26、回CALL指令用來調(diào)用一個(gè)過程或子程序。由于過程或子程序有段間(即遠(yuǎn)程FAR)和段內(nèi)調(diào)用(即近程N(yùn)EAR)之分。所以CALL也有FAR和NEAR之分。因此RET也分段間與段內(nèi)返回兩種。調(diào)用指令一般格式為:段內(nèi)調(diào)用 CALL NEAR PTR OPRD ; 操 作 SP=SP-2,(SP)+1,(SP)=IP,IP=IP+16位位移量 CALL指令首先將當(dāng)前IP內(nèi)容壓入堆棧。當(dāng)執(zhí)行RET指令而返回時(shí),從堆棧中取出一個(gè)字放入IP中。段間調(diào)用 CALL FAR PTR OPRD ; 操 作 SP=SP-2,(SP)+1),(SP)=CS;SP=SP-2,(SP)+1),(SP)=IP;IP=EA;C

27、S=EA+2CALL指令先把CS壓入堆棧,再把IP壓入堆棧。當(dāng)執(zhí)行RET指令而返回時(shí),從堆棧中取出一個(gè)字放入IP中,然后從堆棧中再取出第二個(gè)字放入CS中,作為段間返回地址。返回指令格式有:RET ;SP=(SP+1),SP),SP=SP+2 RET n ;SP=(SP+1),SP),SP=SP+2 SP=SP+nRET n指令要求n為偶數(shù),當(dāng)RET正常返回后,再做SP=SP+n操作。3.3.8字符串操作指令字符串操作指令處理放在存儲器中的字節(jié)串或字串,串處理的方向有方向標(biāo)志位DF決定,串處理指令之前可加重復(fù)前綴,在執(zhí)行串處理指令時(shí),源串的指針SI和目的串的指針DI根據(jù)DF的指示自動(dòng)增量(+1或

28、+2)或自動(dòng)減量(-1或-2)1.設(shè)置方向標(biāo)志指令:格式1:CLD 功能:DF置0,串處理的方向是自動(dòng)增量。格式2:STD功能:DFZ置1,串處理的方向是自動(dòng)減量。2.串處理指令格式1: MOVSB 或MOVSW 功能:串傳送,傳字節(jié)或傳字。(ES:DI)(DS:SI)(SI)(SI)1(字節(jié))或2(字)(DI)(DI)1(字節(jié))或2(字)格式2:STOSB或STOSW功能:存串。(ES:DI)(AL)或(AX) (DI)(DI)1(字節(jié))或2(字)格式3:LODSB或LODSW功能:取串.(AL)或(AX) (ES:SI) (SI)(SI)1(字節(jié))或2(字)格式4:CMPSB或CMPSW功

29、能:串比較。(DS:SI)-(ES:DI),根據(jù)比較的結(jié)果設(shè)置條件碼.(SI)(SI)1(字節(jié))或2(字)(DI)(DI)1(字節(jié))或2(字)格式5:SCASB 或SCASW功能:串掃描.(AL)-(ES:DI)或(AX)-(ES:DI),根據(jù)掃描比較的結(jié)果設(shè)置條件碼. (DI)(DI)1(字節(jié))或2(字)3.串重復(fù)前綴格式1:REP 功能:重復(fù)執(zhí)行串指令,(CX)=重復(fù)次數(shù)。 (CX)=0時(shí),串指令執(zhí)行完畢,否則執(zhí)行: (CX)(CX)-1 執(zhí)行串指令(MOVS或STOS) 重復(fù)執(zhí)行格式2:REPE/REPZ功能:相等或?yàn)榱銜r(shí)重復(fù)執(zhí)行串指令,(CX)=比較或掃描的次數(shù). (CX)=0或ZF=0時(shí),結(jié)束執(zhí)行串指令.否則繼續(xù)執(zhí)行: (CX)(CX)-1 執(zhí)行串指令(CMPS或SCAS) 重復(fù)執(zhí)行格式3:REPNE/REPNZ功能:不等或不為零時(shí)重復(fù)執(zhí)行串指令.(CX)=比較或掃描的次數(shù). (CX)=0或ZF=0,結(jié)束執(zhí)行串指令,否則繼續(xù)執(zhí)行: (CX)(CX)-1 執(zhí)行串指令(CMPS或SCAS) 重復(fù)執(zhí)行3.3.9 處理器控制

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論