輸入輸出和中斷匯編語言王爽版第6章.ppt_第1頁
輸入輸出和中斷匯編語言王爽版第6章.ppt_第2頁
輸入輸出和中斷匯編語言王爽版第6章.ppt_第3頁
輸入輸出和中斷匯編語言王爽版第6章.ppt_第4頁
輸入輸出和中斷匯編語言王爽版第6章.ppt_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第6章 輸入輸出程序設(shè)計(jì),6.1 輸入輸出基本概念 6.2 中斷基本概念 6.3 BIOS中斷調(diào)用方式 鍵盤I/O 顯示器I/O 6.4 中斷程序設(shè)計(jì),本章重點(diǎn):輸入/輸出指令、中斷類型、中斷向量表、中斷處理過程、DOS/BIOS服務(wù)。,本章難點(diǎn):中斷向量表概念理解、DOS/BIOS中斷程序設(shè)計(jì)。,6.1 輸入/輸出的基本概念,輸入和輸出設(shè)備(外設(shè))是計(jì)算機(jī)系統(tǒng)的重要組成部分。外設(shè)與 CPU連接是通過各種I/O接口實(shí)現(xiàn)的,它們之間的通信是通過接口 中的端口地址利用一組I/O指令所編寫的輸入/輸出程序?qū)崿F(xiàn)的。,I/O端口與端口地址 把I/O接口電路中能被CPU直接訪問的寄存器或某些特定器件稱之為

2、端口(Port)。I/O接口中常設(shè)有數(shù)據(jù)口、命令口和狀態(tài)口,是CPU與外設(shè)進(jìn)行讀/寫操作使用的,各I/O端口由端口地址區(qū)分,I/O端口按存放信息的不同,分為三種類型 數(shù)據(jù)端口:用于存放CPU與外設(shè)間傳送的數(shù)據(jù)信息 狀態(tài)端口:用于暫存外設(shè)的狀態(tài)信息 控制端口:用于存放CPU對(duì)外設(shè)或接口的控制信息,計(jì)算機(jī)I/O端口編址一般分兩種方法:一種是將I/O與內(nèi)存單元統(tǒng)一編址,另一種是將I/O獨(dú)立編址。在80 x86微機(jī)中,是將I/O采用16bit獨(dú)立編址,這個(gè)I/O空間允許設(shè)置64 K(65 536)個(gè)8位端口或32 K(32 768)個(gè)16位端口。,端口編址的形成:16位地址線形成0000HFFFFH,

3、輸入/輸出(I/O):指CPU與外部設(shè)備之間的數(shù)據(jù)傳送。輸入/輸出是計(jì)算機(jī)與外部世界進(jìn)行信息交換的重要環(huán)節(jié)。 用匯編語言可以編寫I/O的程序,控制外設(shè)的各種動(dòng)作,最終實(shí)現(xiàn)輸入和輸出。匯編語言提供有專門的I/O指令:IN和OUT,輸入指令I(lǐng)N:用來從指定的外設(shè)取信息送入累加器AL/AX當(dāng)中。有4種形式: (1)IN AL,PORT功能:(PORT)AL (2)IN AX,PORT功能:(PORT)AX (3)IN AL,DX 功能:(DX)AL (4)IN AX,DX功能:(DX)AL,直接尋址,間接尋址,直接尋址:端口地址直接出現(xiàn)在指令當(dāng)中,當(dāng)端口地址在 255(00H-0FFH)之間時(shí),可用

4、于直接尋址; 間接尋址:當(dāng)端口地址超過0FFH時(shí),即在100HFFFFH時(shí)須用間接尋址。,6.1 輸入輸出的基本概念,1、輸入/輸出指令,輸出指令out用來把累加器的內(nèi)容送往指定的端口,有四種形式: (1)OUTPORT,AL 功能:ALPORT (2)OUTPORT,AX 功能:AXPORT (3)OUTDX,AL 功能:AL(DX) (4)OUTDX,AX 功能:AX(DX),IN AL,21H ;直接尋址,字節(jié)輸入 IN AX,20H ;直接尋址,字輸入 MOV DX,200H ;間接尋址 IN AX,DX ;字輸入 IN AL,DX ;字節(jié)輸入,舉例: 輸入指令,1、輸入/輸出(續(xù)),

5、舉例:輸出指令,;間接尋址,字節(jié)輸出 MOV DX,3FCH MOV AL,80H OUT DX,AL,IN指令與MOV指令的區(qū)別: INAL,80H MOVAL,80H,注意,解釋:數(shù)據(jù)傳送方式指CPU與外設(shè)間的數(shù)據(jù)傳送方式 各種不同的I/O設(shè)備要求的輸入或輸出信息是通過其接口的相應(yīng)端口地址進(jìn)行的,各個(gè)端口都有指定的操作地址,CPU通過輸入/輸出指令I(lǐng)N和OUT與外部設(shè)備交換信息。,2、數(shù)據(jù)傳送方式,無條件傳送方式 查詢方式 中斷方式 直接存儲(chǔ)器傳送方式(DMA),I/O設(shè)備與主機(jī)之間進(jìn)行數(shù)據(jù)交換有多種方式,概括起來可以分為,無條件傳送方式示例,用一個(gè)8位輸出鎖存器控制8個(gè)發(fā)光二極管,使發(fā)光

6、管從上向下依次一個(gè)一個(gè)地閃亮,每個(gè)發(fā)光管亮一段規(guī)定的時(shí)間。設(shè)輸出鎖存器的地址為84H。 START:MOV AL,01H NEXT: OUT 84H,AL CALL DELAY ROL AL,1 JMP NEXT,DELAY PROC PUSH AX MOV AX,COUNT TIME:DEC AX JNZ TIME POP AX RET DELAY ENDP,查詢方式示例,假設(shè)從某輸入設(shè)備上輸入一組數(shù)據(jù)送緩沖區(qū)。 ; FAH為狀態(tài)端口地址 ,F(xiàn)8H為數(shù)據(jù)端口地址, FCH為控制端口地址,DATA SEGMENT MESSI DB “BUFFER OVERFLOW”, “$” BUFF DB

7、60 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX,MOV BX,OFFSET BUFF MOV CX,60 MOV AL,01H OUT 0FCH,AL ;啟動(dòng) WAIT:IN AL,0FAH TEST AL,01H;最低位為1準(zhǔn)備好 JZ WAIT IN AL,0F8H MOV BX,AL INC BX LOOP WAIT ;檢測緩沖區(qū)是否滿,不滿再輸入,LEADX, MESSI MOVAH,09H INT21H MOVAH,4CH INT21H CODE ENDS END

8、START,無條件傳送方式:不管外設(shè)的工作狀態(tài)如何,在CPU需要進(jìn)行數(shù)據(jù)傳輸時(shí)就直接進(jìn)行。適用于外設(shè)各種動(dòng)作時(shí)間固定,且條件已知的場合下。目前已用的很少 查詢方式:適用于CPU和外設(shè)工作不同步的情況。由于外設(shè)和CPU的工作速度差別很大,所以大多數(shù)情況采用的是程序查詢傳送方式。 優(yōu)點(diǎn):可以用程序安排幾個(gè)輸入/輸出設(shè)備的先后優(yōu)先次序,最先查詢的設(shè)備,其工作的優(yōu)先級(jí)也最高。修改程序中的查詢次序,實(shí)際上也就修改了設(shè)備的優(yōu)先級(jí)。 缺點(diǎn):由于CPU需要不斷地執(zhí)行IN指令查詢外設(shè)工作狀態(tài),特別是外設(shè)的工作速度相對(duì)CPU來講都很慢,在CPU和外設(shè)之間進(jìn)行數(shù)據(jù)傳送過程中,CPU需要花費(fèi)大量時(shí)間等待,不能進(jìn)行其他

9、操作,這樣就浪費(fèi)了CPU的時(shí)間。,特點(diǎn):,中斷方式,外設(shè)準(zhǔn)備好時(shí),外設(shè)向CPU發(fā)出中斷請(qǐng)求,CPU轉(zhuǎn)入中斷處理程序,完成輸入輸出工作。 中斷傳送方式的最大特點(diǎn)是CPU與外設(shè)并行工作,即CPU啟動(dòng)外設(shè)后,不再等待外設(shè)工作的完成,而是執(zhí)行另一個(gè)程序。當(dāng)外設(shè)完成一次操作后,就向CPU發(fā)出中斷請(qǐng)求,CPU暫?,F(xiàn)行程序的執(zhí)行而轉(zhuǎn)去響應(yīng)外設(shè)的中斷請(qǐng)求,處理完后CPU恢復(fù)執(zhí)行原來被中斷的工作。,直接存儲(chǔ)器傳送(DMA)方式,由于高速外設(shè)(例如磁盤機(jī)等)準(zhǔn)備數(shù)據(jù)的時(shí)間短,要求傳送的數(shù)量較多,同時(shí)要求傳送的速度快等特點(diǎn),一般采用直接存儲(chǔ)器傳送方式,即DMA方式。 DMA方式傳送數(shù)據(jù)的一般過程是: 1)先把數(shù)據(jù)在

10、高速外設(shè)中存放的起始位置、數(shù)據(jù)在內(nèi)存中存放的起始地址、傳送數(shù)據(jù)長度等參數(shù)輸出到連接高速外設(shè)的接口(DMA控制器)。 2)啟動(dòng)高速外設(shè),設(shè)備準(zhǔn)備開始直接傳送數(shù)據(jù)。當(dāng)高速外設(shè)直接傳送準(zhǔn)備好后, DMA控制器向處理機(jī)發(fā)送總線請(qǐng)求信號(hào)。處理機(jī)響應(yīng)該請(qǐng)求信號(hào),并讓出總線控制權(quán),高速外設(shè)在DMA控制器控制下交換數(shù)據(jù)。 3)數(shù)據(jù)交換完畢后,由DMA控制器撤除總線請(qǐng)求信號(hào),交回總線控制權(quán)。,6.2 中斷基本概念,中斷的概念 8086的中斷源及其優(yōu)先級(jí) 中斷向量表 中斷指令及中斷返回指令 中斷處理程序的設(shè)計(jì),中斷基本概念,1、什么是中斷:當(dāng)CPU正在執(zhí)行某程序時(shí),由于外界臨時(shí)事件的發(fā)生,向CPU發(fā)出請(qǐng)求處理信號(hào)

11、, CPU暫停現(xiàn)行程序的執(zhí)行轉(zhuǎn)去處理臨時(shí)發(fā)生的事件,處理完后返回到被中斷程序的斷點(diǎn)處繼續(xù)執(zhí)行,這個(gè)過程就是中斷。 2、中斷源:向CPU發(fā)出請(qǐng)求信號(hào)的設(shè)備或部件(引起中斷的事件) 。 3、中斷服務(wù)程序:中斷過程中,執(zhí)行的事件處理程序 4、中斷系統(tǒng):實(shí)現(xiàn)中斷的硬件及軟件。 5、中斷系統(tǒng)的功能: 能實(shí)現(xiàn)優(yōu)先級(jí)排隊(duì) 能實(shí)現(xiàn)中斷嵌套,8086的中斷源及其優(yōu)先級(jí),中斷源,外部中斷:包括可屏蔽中斷INTR和不可屏蔽中斷NMI。 內(nèi)部中斷:包括除法錯(cuò)中斷、溢出中斷、軟中斷、斷點(diǎn)中斷和單步中斷等。,內(nèi)部中斷 內(nèi)部中斷簡稱內(nèi)中斷,又稱軟件中斷。它不需要外部硬件支持。并且不受中斷標(biāo)志位狀態(tài)的影響。8086/8088

12、內(nèi)部中斷有以下5種: l 除法錯(cuò)中斷類型0中斷 l 單步中斷類型1中斷 l 斷點(diǎn)中斷類型3中斷 l 溢出中斷類型4中斷 l 中斷指令指令I(lǐng)NT n中斷,除法錯(cuò)中斷 在執(zhí)行除法指令時(shí),若發(fā)現(xiàn)除數(shù)為0或商超過了寄存器所 能表達(dá)的范圍,則立即產(chǎn)生一個(gè)類型為0的中斷。 溢出中斷 如果溢出標(biāo)志OF置1,有一條指令I(lǐng)NTO中斷發(fā)生溢出的 算術(shù)操作。 例: ADD AX,VALUE INTO,單步中斷 當(dāng)標(biāo)志位TF置為1時(shí),每條指令執(zhí)行后,CPU自動(dòng)產(chǎn)生 一個(gè)類型號(hào)為1的中斷。 斷點(diǎn)中斷 通常調(diào)試程序時(shí)會(huì)在某個(gè)程序段后設(shè)置斷點(diǎn)以觀察程序 執(zhí)行到此處的結(jié)果。斷點(diǎn)可以設(shè)置在程序的任何地方, 設(shè)置斷點(diǎn)相當(dāng)于把一條

13、中斷指令I(lǐng)NT 3插入程序中, CPU每執(zhí)行到斷點(diǎn)處的INT 3指令就產(chǎn)生一個(gè)中斷。,由中斷指令I(lǐng)NT n引起的內(nèi)中斷 CPU執(zhí)行一條INT n指令后,會(huì)立即產(chǎn)生中斷,并且調(diào)用 系統(tǒng)中相應(yīng)的中斷處理程序來完成中斷處理功能,中斷 指令中的n指出中斷類型。 例: INT 21H,外部中斷,不可屏蔽中斷NMI:常用于緊急故障處理或緊迫事件處理中。它的中斷類型號(hào)為2。,可屏蔽中斷INTR:可屏蔽中斷的設(shè)置主要是為了實(shí)現(xiàn)多中斷的處理和中斷嵌套的應(yīng)用。它由鍵盤等外部設(shè)備產(chǎn)生。 這些外部設(shè)備通過8259A可編程控制器與CPU相連, 8259A可接收來自外設(shè)的中斷請(qǐng)求信號(hào),并把中斷源的中斷類型號(hào)送CPU,如果

14、CPU響應(yīng)該外設(shè)的中斷請(qǐng)求,就自動(dòng)轉(zhuǎn)入相應(yīng)的中斷處理程序。 從外設(shè)發(fā)出的中斷請(qǐng)求到CPU響應(yīng)中斷,有兩個(gè)控制條件: IMR: 8259A的中斷屏蔽寄存器。 IF:CPU的標(biāo)志狀態(tài)寄存器中的中斷允許位的狀態(tài)。,中斷控制器8259A與CPU的通信端口 中斷控制器8259A通過端口20H、21H與CPU通信。其中,端口20H對(duì)應(yīng)于中斷命令寄存器,端口21H對(duì)應(yīng)于中斷屏蔽寄存器。 中斷命令寄存器:當(dāng)某個(gè)硬件中斷發(fā)生后,中斷控制器8259A將屏蔽來自該硬件設(shè)備的中斷,直到接收到中斷服務(wù)程序發(fā)送的中斷結(jié)束命令為止。若不發(fā)送中斷結(jié)束命令,則中斷控制器不能再接收來自該設(shè)備以及更低級(jí)的中斷請(qǐng)求。發(fā)送中斷結(jié)束命令

15、的方法是向中斷命令寄存器輸出一個(gè)字節(jié)20H: mov al,20h out 20h,al 中斷屏蔽寄存器:中斷屏蔽寄存器的8位對(duì)應(yīng)于8個(gè)硬件中斷,即端口21H的第7位對(duì)應(yīng)于IRQ0 IRQ7。將某一位置,則禁止相應(yīng)的硬件中斷;某一位置,則允許相應(yīng)的硬件中斷。 例如:若系統(tǒng)只允許鍵盤中斷,則可執(zhí)行下列指令: mov al,11111101 out 21h,al,CPU對(duì)可屏蔽中斷的響應(yīng)條件:要使CPU響應(yīng)某個(gè)I/O設(shè)備發(fā)出的中斷請(qǐng)求,必須滿足下列條件: CPU允許中斷,即中斷標(biāo)志IF為 該設(shè)備相應(yīng)的中斷屏蔽位為,優(yōu)先級(jí)高 內(nèi)中斷(除法錯(cuò),INTO,INT n) 非屏蔽中斷(NMI) 可屏蔽中斷(

16、INTR) 低 單步中斷,三、中斷向量與中斷向量表 8086計(jì)算機(jī)系統(tǒng)共可處理256種不同的中斷,每種中斷對(duì)應(yīng) 0255(00FFH )之間惟一的一個(gè)編號(hào),稱為中斷類型號(hào)。每個(gè)中斷都對(duì)應(yīng)著一個(gè)與之對(duì)應(yīng)的中斷處理程序,中斷處理程序的起始地址稱為中斷入口地址(中斷向量),系統(tǒng)將各種中斷處理程序的入口地址放在一起形成一個(gè)地址表,稱為中斷向量表,如圖所示。固定存放在內(nèi)存的最低1K字節(jié)中。每一個(gè)中斷服務(wù)程序的入口地址在表中占4個(gè)字節(jié),其中前兩個(gè)單元存放中斷處理程序的偏移地址IP的值,后兩個(gè)單元存放中斷處理程序的段地址CS值。按中斷類型號(hào)順序存放。 中斷類型號(hào)與中斷向量地址間的關(guān)系: 中斷向量的地址中斷類

17、型號(hào)X4,中斷向量表,例如:報(bào)警中斷的中斷類型為4AH,它的中斷向量地址為4AH4=128H,即128H和129H兩字節(jié)存放的是報(bào)警中斷處理程序的偏移地址;12AH和12BH兩字節(jié)存放的是報(bào)警中斷處理程序的段地址。取出段地址和偏移地址放入CS和IP,CPU就可以轉(zhuǎn)入相應(yīng)的中斷處理程序。 下圖以BIOS中斷INT 4AH為例,表示出中斷操作的5個(gè)步驟:,(1) 取中斷類型號(hào); (2) 計(jì)算中斷向量地址; (3) 取中斷向量,偏移地址送IP,段地址送CS; (4) 轉(zhuǎn)入中斷處理程序; (5) 中斷返回到INT指令的下一條指令。,圖8.4 報(bào)警中斷操作步驟,表8-2 中斷向量表地址分配,采用中斷向量

18、的方法,大大加快了中斷處理的速度。因?yàn)橛?jì)算機(jī)可直接通過中斷向量表轉(zhuǎn)向相應(yīng)的處理程序,而不需要CPU去逐個(gè)檢測和確定中斷原因。 下表列出了80 x86各類型中斷在中斷向量表中的地址。,、中斷響應(yīng)過程: 中斷發(fā)生時(shí),中斷硬件機(jī)構(gòu)自動(dòng)完成如下響應(yīng)過程: (1) 取中斷類型號(hào)N; (2) 標(biāo)志寄存器(PSW)內(nèi)容壓棧; (3) 當(dāng)前代碼段寄存器(CS)內(nèi)容壓棧; (4) 當(dāng)前指令指針(IP)內(nèi)容壓棧; (5) 禁止外部中斷和單步中斷(置IF=0,TF=0); (6) 從中斷向量表中取4n的字內(nèi)容送IP,取4n2的字內(nèi)容送CS; (7) 轉(zhuǎn)中斷處理程序。,中斷發(fā)生的過程很像子程序調(diào)用,但有兩點(diǎn)不同: (1)在保護(hù)中斷現(xiàn)場時(shí),除了保護(hù)返回地址CS:IP之外,還保存標(biāo)志寄存器PSW的內(nèi)容。因?yàn)闃?biāo)志寄存器內(nèi)容記錄中斷發(fā)生時(shí)程序指令運(yùn)行的結(jié)果特征,當(dāng)CPU處理完中斷請(qǐng)求返回原程序時(shí),需要保證原程序工作的連續(xù)性和正確性,所以中斷發(fā)生時(shí)PSW的內(nèi)容也要保存起來。 (2)中斷發(fā)生時(shí)CPU自動(dòng)清除了IF和TF,目的是使CPU轉(zhuǎn)入中斷處理程序后,不允許再產(chǎn)生新的中斷。如果在執(zhí)行中斷處理程序中,還允許外部中斷,可以通過STI指令再把IF置1。,編寫中斷處理程序和編寫子程序一樣,所使用的匯編語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論