微機(jī)原理課件第4章(3)章節(jié)_第1頁(yè)
微機(jī)原理課件第4章(3)章節(jié)_第2頁(yè)
微機(jī)原理課件第4章(3)章節(jié)_第3頁(yè)
微機(jī)原理課件第4章(3)章節(jié)_第4頁(yè)
微機(jī)原理課件第4章(3)章節(jié)_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

第4章8086指令系統(tǒng)

本章內(nèi)容提示指令系統(tǒng)、指令的一般格式指令中涉及到的訪(fǎng)問(wèn)內(nèi)存或I/O端口所使用的尋址方式指令系統(tǒng)中的數(shù)據(jù)傳送類(lèi)指令、算術(shù)運(yùn)算類(lèi)指令、位操作類(lèi)指令、串操作類(lèi)指令、控制轉(zhuǎn)移類(lèi)指令、處理機(jī)控制類(lèi)指令各類(lèi)指令的語(yǔ)句格式和功能4.1指令的基本概念和指令格式什么是指令系統(tǒng)

一定要采用調(diào)試程序DEBUG進(jìn)行實(shí)踐指該計(jì)算機(jī)能夠執(zhí)行的全部指令的集合每種計(jì)算機(jī)都有它支持的指令集合

16位8086指令系統(tǒng)是Intel80x86系列微處理器指令系統(tǒng)的基礎(chǔ)一、指令的組成指令由操作碼和操作數(shù)兩部分組成操作碼說(shuō)明計(jì)算機(jī)要執(zhí)行的操作,不可缺少操作數(shù)是指令中的操作對(duì)象通常的指令有一個(gè)或兩個(gè)操作數(shù)操作碼操作數(shù)每種指令的操作碼:用一個(gè)唯一的助記符表示(指令功能的英文縮寫(xiě))對(duì)應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼指令中的操作數(shù):可以是一個(gè)具體的數(shù)值可以是存放數(shù)據(jù)的寄存器或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址4.2指令的尋址方式4.2.1概念指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來(lái)源尋址:尋找操作數(shù)的過(guò)程操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速度和效率

如何尋址一個(gè)操作數(shù)對(duì)程序設(shè)計(jì)很重要4.2.2

與數(shù)據(jù)有關(guān)的尋址方式一、立即尋址二、寄存器尋址三、存儲(chǔ)器尋址1.直接尋址2.寄存器間接尋址3.寄存器相對(duì)尋址4.基址變址尋址5.相對(duì)基址變址尋址一、立即尋址指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)這種操作數(shù)被稱(chēng)為立即數(shù)它可以是8位數(shù)值i8(00H~FFH)也可以是16位數(shù)值i16(0000H~FFFFH)立即數(shù)尋址方式常用來(lái)給寄存器賦值立即數(shù)尋址指令MOVAL,05H ;AL←05HMOVAX,0102H ;AX←0102H指令功能執(zhí)行過(guò)程二、寄存器尋址操作數(shù)存放在CPU的內(nèi)部寄存器reg中,可以是:8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4個(gè)段寄存器seg:CS、DS、SS、ES寄存器尋址指令MOVAX,1234H ;AX←1234HMOVBX,AX ;BX←AX指令功能執(zhí)行過(guò)程三、存儲(chǔ)器尋址1.直接尋址2.寄存器間接尋址3.寄存器相對(duì)尋址4.基址變址尋址5.相對(duì)基址變址尋址指令中給出操作數(shù)的主存地址信息(偏移地址,稱(chēng)之為有效地址EA),而段地址在默認(rèn)的或用段超越前綴指定的段寄存器中1.直接尋址指令功能執(zhí)行過(guò)程有效地址在指令中直接給出默認(rèn)的段地址在DS段寄存器,可使用段跨越前綴改變MOVAX,[2000H];AX←DS:[2000H]MOVAX,ES:[2000H];AX←ES:[2000H]直接尋址【例】(AX)=1212H,BUF為數(shù)據(jù)段定義的變量,其偏移地址是2000H,(DS)=3000H,(32000H)=4545H。執(zhí)行指令:MOVAX,BUF執(zhí)行后:(AX)=?執(zhí)行:(32000H)→AX執(zhí)行后:(AX)=4545H2.寄存器間接尋址有效地址存放在基址寄存器BX或變址寄存器SI、DI中默認(rèn)的段地址在DS段寄存器,可使用段跨越前綴改變MOVAX,[SI] ;AX←DS:[SI]指令功能執(zhí)行過(guò)程3.寄存器相對(duì)尋址有效地址是寄存器內(nèi)容與有符號(hào)8位或16位位移量之和,寄存器可以是BX、BP或SI、DI

有效地址=(BX)/(BP)/(SI)/(DI)+8/16位位移量段地址對(duì)應(yīng)BX/SI/DI寄存器默認(rèn)是DS,對(duì)應(yīng)BP寄存器默認(rèn)是SS;可用段跨越前綴改變寄存器相對(duì)尋址指令MOVAX,[DI+06H] ;AX←DS:[DI+06H]MOVAX,[BP+06H];AX←SS:[BP+06H]指令功能執(zhí)行過(guò)程4.基址變址尋址有效地址由基址寄存器(BX或BP)的內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容構(gòu)成:有效地址=(BX)/(BP)+(SI)/(DI)段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段跨越前綴改變基址變址尋址指令MOVAX,[BX+SI] ;AX←DS:[BX+SI]MOVAX,[BP+DI] ;AX←SS:[BP+DI]MOVAX,DS:[BP+DI];AX←DS:[BP+DI]指令功能執(zhí)行過(guò)程5.相對(duì)基址變址尋址有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個(gè)8位或16位位移量之和:有效地址=(BX)/(BP)+(SI)/(DI)+8/16位位移量段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段跨越前綴改變相對(duì)基址變址尋址指令MOVAX,[BX+SI+06H];AX←DS:[BX+SI+06H]

位移量可用符號(hào)表示

同一尋址方式有多種表達(dá)形式指令功能執(zhí)行過(guò)程指令中直接給出端口地址端口地址:2位十六進(jìn)制數(shù)或用符號(hào)可訪(fǎng)問(wèn)的端口號(hào)為0~255。4.2.3I/O端口尋址方式1.直接端口尋址例如:INAL,65HOUT84H,AXI/O端口獨(dú)立編址方式,有專(zhuān)門(mén)的輸入輸出指令:IN和OUT2.寄存器間接端口尋址IN和OUT指令中,當(dāng)端口地址大于255必須間接尋址方式。間接尋址,是指把I/O端口的地址先送到DX中,用DX作間接尋址寄存器。只能用DX。例如:MOVDX,318HOUTDX,AL

邏輯段分配立即數(shù)尋址的功能立即數(shù)尋址的執(zhí)行寄存器尋址的功能寄存器尋址的執(zhí)行直接尋址的功能直接尋址的執(zhí)行寄存器間接尋址的執(zhí)行寄存器相對(duì)尋址的功能寄存器相對(duì)尋址的執(zhí)行基址變址尋址的功能基址變址尋址的執(zhí)行相對(duì)基址變址尋址的功能相對(duì)基址變址尋址的執(zhí)行4.38086指令系統(tǒng)全面而準(zhǔn)確地理解每條指令的功能和應(yīng)用,是編寫(xiě)匯編語(yǔ)言程序的關(guān)鍵逐個(gè)展開(kāi)指令4.3.1數(shù)據(jù)傳送類(lèi)指令最基本、最重要的一種操作最常使用把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位重點(diǎn)掌握MOV、XCHG、XLAT、PUSH、POP、LEA一、通用數(shù)據(jù)傳送指令提供方便靈活的通用傳送操作有4條指令MOVXCHGPUSHPOPMOVXCHGPOPPUSH1、傳送指令MOV(move)把操作數(shù)從源地址傳送至目的地址MOVREG/MEM,IMM;立即數(shù)送寄存器或主存MOV例題1MOVREG/MEM/SEG,REG;寄存器送(段)寄存器或主存例題2MOVREG/SEG,MEM;主存送(段)寄存器例題3MOVREG/MEM,SEG;段寄存器送寄存器或主存例題4MOV指令傳送功能立即數(shù)段寄存器CSDSESSS通用寄存器AXBXCXDXBPSPSIDI存儲(chǔ)器MOV也并非任意傳送兩個(gè)操作數(shù)的類(lèi)型不一致兩個(gè)操作數(shù)都是存儲(chǔ)器單元段寄存器的操作突破一些限制不允許立即數(shù)傳送給段寄存器不允許直接改變CS值不允許段寄存器之間的直接數(shù)據(jù)傳送非法傳送2、交換指令XCHG(exchange)把兩個(gè)地方的數(shù)據(jù)進(jìn)行互換寄存器與寄存器之間對(duì)換數(shù)據(jù)寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)不能在存儲(chǔ)器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)XCHGREG,REG/MEM;REG

REG/MEM例題6例題53、堆棧操作指令堆棧:“FILO”

或“LIFO”

的主存區(qū)域,位于堆棧段中;SS記錄其段地址只有一個(gè)出口——棧頂;SP指定棧頂是地址較小的一端(低端),棧底不變堆棧的操作PUSH;進(jìn)棧指令先使堆棧指針SP減2,然后把一個(gè)字操作數(shù)存入堆棧頂部POP;出棧指令把棧頂?shù)囊粋€(gè)字傳送至指定的目的操作數(shù),然后堆棧指針SP加2堆棧只有兩種基本操作:進(jìn)棧和出棧,對(duì)應(yīng)兩條指令PUSH和POP①進(jìn)棧指令PUSHPUSHAXPUSH[2000H]PUSHR16/M16/SEG;SP←SP-2;SS:[SP]←R16/M16/SEGPUSH②出棧指令POPPOPDXPOP[2000H]POPR16/M16/SEG;R16/M16/SEG←SS:[SP];SP←SP+2POP例7:現(xiàn)場(chǎng)保護(hù)恢復(fù)PUSHAX ;進(jìn)入子程序后PUSHBXPUSHDS...POPDS ;返回主程序前POPBXPOPAX二、累加器專(zhuān)用傳送指令8086通過(guò)輸入輸出指令與外設(shè)進(jìn)行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設(shè)是端口(Port),即I/O地址8086用于尋址外設(shè)端口的地址線(xiàn)為16條,端口最多為216=65536(64K)個(gè),端口號(hào)為0000H~FFFFH每個(gè)端口用于傳送一個(gè)字節(jié)的外設(shè)數(shù)據(jù)1、輸入輸出指令①輸入指令將外設(shè)數(shù)據(jù)傳送給CPU內(nèi)的AL/AXINAL,i8;字節(jié)輸入:AL←I/O端口(i8直接尋址)INAL,DX;字節(jié)輸入:AL←I/O端口(DX間接尋址)INAX,i8;字輸入:AX←I/O端口(i8直接尋址)INAX,DX;字輸入:AX←I/O端口(DX間接尋址);直接尋址,字節(jié)量輸入INAL,21HMOVAH,ALINAL,20H;直接尋址,字量輸入INAX,20H;間接尋址,字量輸入MOVDX,20HINAX,DX②輸出指令OUT將CPU內(nèi)AL/AX中的數(shù)據(jù)傳送給外設(shè)OUTi8,AL

;字節(jié)輸出:I/O端口←AL(i8直接尋址)OUTDX,AL

;字節(jié)輸出:I/O端口←AL(DX間接尋址)OUTi8,AX

;字輸出:I/O端口←AX(i8直接尋址)OUTDX,AX

;字輸出:I/O端口←AX(DX間接尋址);間接尋址,字節(jié)量輸出

MOVDX,3FCH

MOVAL,80H

OUTDX,AL2、換碼指令XLAT(translate)換碼指令執(zhí)行前:主存中的字節(jié)量表格內(nèi)含要轉(zhuǎn)換成的目的代碼,表格首地址為(BX),(AL)為相對(duì)表格首地址的位移量換碼指令執(zhí)行后:(AL)為轉(zhuǎn)換的目標(biāo)代碼將BX指定的緩沖區(qū)中、AL指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給ALXLATXLAT

;AL←(DS:[BX+AL])例題10三、地址傳送指令地址傳送指令將存儲(chǔ)器單元的邏輯地址送至指定的寄存器有效地址傳送指令LEA指針傳送指令LDS和LES注意不是獲取存儲(chǔ)器單元的內(nèi)容①有效地址傳送指令LEA(loadEA)將存儲(chǔ)器操作數(shù)的有效地址傳送至指定的16位寄存器中LEAR16,MEM;R16←MEM的有效地址EA例8:獲取有效地址MOVBX,0400HMOVSI,3CHLEABX,[BX+SI+0F62H];(BX)=0400H+003CH+0F62H=139EH

獲得主存單元的有效地址;不是物理地址,也不是該單元的內(nèi)容可以實(shí)現(xiàn)計(jì)算功能例9:地址指針傳送MOVWORDPTR[3060H],0100HMOVWORDPTR[3062H],1450HLESDI,[3060H];(ES)=1450H,(DI)=0100HLDSSI,[3060H];(DS)=1450H,(SI)=0100H

MEM指定主存的連續(xù)4個(gè)字節(jié)作為邏輯地址(32位的地址指針),送入DS:R16或ES:R16②指針傳送指令LDSR16,MEM

;R16←(MEM)

;DS←(MEM+2)將主存中MEM指定的字送至R16,并將MEM的下一字送DS寄存器LESR16,MEM

;R16←(MEM)

;ES←(MEM+2)將主存中MEM指定的字送至R16,并將MEM的下一字送ES寄存器四、標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令用來(lái)傳送標(biāo)志寄存器FLAGS的內(nèi)容,方便進(jìn)行對(duì)各個(gè)標(biāo)志位的直接操作有2對(duì)4條指令低8位傳送:LAHF和SAHF16位傳送:PUSHF和POPF第4章教學(xué)要求(2)掌握8086的I/O端口編址方式掌握數(shù)據(jù)傳送類(lèi)指令的格式與應(yīng)用作業(yè)(p143)4.3、4.9例1立即數(shù)傳送MOVAL,4 ;AL←4,字節(jié)傳送MOVCX,0FFH ;CX←00FFH,字傳送MOVSI,200H ;SI←0200H,字傳送MOVBYTEPTR[SI],0AH;BYTEPTR說(shuō)明是字節(jié)操作MOVWORDPTR[SI+2],0BH;WORDPTR說(shuō)明是字操作

注意立即數(shù)是字節(jié)量還是字量明確指令是字節(jié)操作還是字操作MOV例2寄存器傳送MOVMOVAX,BX ;AX←(BX),字傳送MOVAH,AL ;AH←(AL),字節(jié)傳送MOVDS,AX ;DS←(AX),字傳送MOV[SI],AL ;[SI]←(AL),字節(jié)傳送例3存儲(chǔ)器傳送

不存在存儲(chǔ)器向存儲(chǔ)器的傳送指令MOVAL,[BX];AL←(DS:[SI])MOVDX,[BP] ;DX←(SS:[BP])MOVES,[SI] ;ES←(DS:[SI])MOV例4段寄存器傳送MOV[SI],DSMOVAX,ES ;AX←(ES)MOVDS,AX ;DS←(AX)MOV例5寄存器間交換MOVAX,1234H

;(AX)=1234HMOVBX,5678H

;(BX)=5678HXCHGAX,BX

;(AX)=5678H,(BX)=1234HXCHGAH,AL

;(AX)=7856HXCHG例6寄存器與存儲(chǔ)器交換XCHGXCHGAX,[2000H] ;字交換;等同于

XCHG[2000H],AXXCHGAL,[2000H]

;字節(jié)交換;等同于

XCHG[2000H],AL例10代碼轉(zhuǎn)換

換碼指令沒(méi)有顯式的操作數(shù),但使用了BX和AL;因?yàn)閾Q碼指令使用了隱含尋址方式——采用默認(rèn)操作數(shù)XLATMOVBX,100HMOVAL,03HXLAT4.3.2DOS系統(tǒng)功能調(diào)用DOS使用的中斷類(lèi)型號(hào)是20H~3FH,為用戶(hù)程序和系統(tǒng)程序提供磁盤(pán)讀寫(xiě)、程序退出、系統(tǒng)功能調(diào)用等功能。

DOS所有的系統(tǒng)功能調(diào)用都是利用INT

21H中斷指令實(shí)現(xiàn)的,每個(gè)功能調(diào)用對(duì)應(yīng)一個(gè)子程序,并有一個(gè)編號(hào),其編號(hào)就是功能號(hào)。DOS擁有的功能子程序因版本而異。DOS中斷調(diào)用方法在中斷調(diào)用前要把功能號(hào)裝入AH中,把子功能號(hào)裝入AL中:⑴將調(diào)用參數(shù)裝入指定的寄存器;⑵如需要功能號(hào),將它裝入AH;⑶如需要子功能號(hào),將它裝入AL;⑷按中斷類(lèi)型號(hào)調(diào)用DOS或BIOS;⑸檢查返回參數(shù)是否正確。

DOS系統(tǒng)功能調(diào)用21H號(hào)中斷是DOS提供給用戶(hù)的用于調(diào)用系統(tǒng)功能的中斷

l在AH寄存器中設(shè)置系統(tǒng)功能調(diào)用號(hào)l在指定寄存器中設(shè)置入口參數(shù)l執(zhí)行指令I(lǐng)NT21H(或ROM-BIOS的中斷向量號(hào))實(shí)現(xiàn)中斷服務(wù)程序的功能調(diào)用

常見(jiàn)DOS系統(tǒng)功能調(diào)用⑴單字符輸入(1號(hào)調(diào)用)MOVAH,1INT21H;從鍵盤(pán)輸入字符的ASCII碼送入AL中,并顯示。⑵單字符顯示(2號(hào)調(diào)用)MOVDL,待顯示字符的ASCII碼MOVAH,2INT21H;將DL中的字符顯示,若DL為CTRL+BREAK的ASCII碼,則退出。

⑷結(jié)束調(diào)用(4CH號(hào)調(diào)用)MOV AH,4CHINT21H;終止當(dāng)前程序并返回調(diào)用程序

⑶打印輸出(5號(hào)調(diào)用)MOV DL,待打印字符的ASCII碼MOV AH,5INT 21H

;將DL中的字符送打印。

⑸顯示字符串(9號(hào)調(diào)用)LEA DX,待顯示字符串首偏移地址MOV AH,9INT 21H;將當(dāng)前數(shù)據(jù)區(qū)中以‘$’結(jié)尾的字符串顯示⑹字符串輸入(10號(hào)調(diào)用)LEA DX,緩沖區(qū)首偏移地址MOV AH,10INT 21H

;從鍵盤(pán)上輸入一字符串到用戶(hù)定義的輸入緩沖區(qū)中,并顯示。

DEBUG.COM,實(shí)用程序:查看內(nèi)存內(nèi)容(ROM和RAM),一次一條指令地執(zhí)行用戶(hù)程序,翻譯并執(zhí)行匯編語(yǔ)言程序。調(diào)試步驟:首先必須在DEBUG下運(yùn)行程序,如:

溫馨提示

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

評(píng)論

0/150

提交評(píng)論