中斷調(diào)用和輸入輸出程序設(shè)計概要課件_第1頁
中斷調(diào)用和輸入輸出程序設(shè)計概要課件_第2頁
中斷調(diào)用和輸入輸出程序設(shè)計概要課件_第3頁
中斷調(diào)用和輸入輸出程序設(shè)計概要課件_第4頁
中斷調(diào)用和輸入輸出程序設(shè)計概要課件_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章中斷調(diào)用和輸入輸出程序設(shè)計7/28/20231第6章中斷調(diào)用和輸入輸出程序設(shè)計7/27/20231第六章中斷和輸入輸出

程序設(shè)計

本章重點:本章主要講述中斷類型、向量表、優(yōu)先級、處理過程、中斷程序設(shè)計以及BIOS/DOS中斷調(diào)用。6.1中斷概念 本節(jié)重點:本節(jié)對中斷中涉及到的基本概念進(jìn)行介紹,包括中斷的分類,中斷向量表的作用,中斷是如何處理的和各中斷的優(yōu)先級等。6.1.1中斷與中斷源1、中斷:當(dāng)一種特殊事件發(fā)生時,CPU停止正在運行的程序,而轉(zhuǎn)去執(zhí)行該事件的處理程序,處理完該事件后,再返回原程序繼續(xù)正確地執(zhí)行下去,這個過程就稱為中斷。2、中斷源:引起中斷的事件。

7/28/20232第六章中斷和輸入輸出

程序設(shè)計本章重點:本章主要講述非屏蔽中斷請求中斷邏輯INTn指令I(lǐng)NT0指令除法錯誤單步TF=1

IR08259AIR1可編程IR2中斷IR3控制器IR4

(PIC)IR5IR6IR7INTRNMICPUn410系統(tǒng)定時器鍵盤彩色/圖形接口保留(通信)串行通信接口保留(ALT打印機(jī))軟盤保留(打印機(jī))圖6.18086/8088中斷源08090A0B0C0D0E0F

8086/8088的中斷源如圖8.1所示。80286以后使用兩片8259級連結(jié)構(gòu),可管理15級中斷。

7/28/20233非屏蔽中斷請求中斷邏輯INTnINT0除法單步6.1.2中斷分類8086/8088的中斷可分為兩類;外部中斷和內(nèi)部中斷。1.外部中斷外部中斷又稱為硬中斷。它來自處理機(jī)的外部條件,如I/O設(shè)備或其他處理機(jī)等,以完全隨機(jī)的方式中斷現(xiàn)行程序而轉(zhuǎn)向中斷處理程序。外部中斷分為:非屏蔽中斷NMI和可屏蔽中斷INTR。NMI中斷:直接連在CPU上,CPU不能禁止NMI線上的中斷請求,即如果系統(tǒng)中發(fā)生了非屏蔽中斷,CPU必須做出響應(yīng)。所以NMI中斷主要用于一些緊急的故障處理,如電源掉電等。INTR中斷:用于外部設(shè)備的中斷請求,這些外設(shè)通過8259A可編程控制器與CPU相連。如:硬盤、鍵盤、顯示器、打印機(jī)等。7/28/202346.1.2中斷分類7/27/20234

可屏蔽中斷被CPU響應(yīng)的兩個條件:一是該外設(shè)的中斷請求是否被屏蔽。二是CPU是否允許響應(yīng)中斷。這兩個條件分別由8259A中的中斷屏蔽寄存器(IMR)和標(biāo)志寄存器(PSW)中的中斷允許位IF控制。在外部的中斷請求未被屏蔽的情況下,CPU是否響應(yīng)中斷與標(biāo)志寄存器中的IF位有關(guān)。若IF=0,CPU禁止響應(yīng)任何外設(shè)的中斷,若IF=1,CPU則響應(yīng)外設(shè)的中斷??捎弥噶頢TI和CLI來設(shè)置或清除IF位。2.內(nèi)部中斷

內(nèi)部中斷又稱為軟件中斷,它通常有三種情況引起:(1)由中斷指令I(lǐng)NT引起的中斷。

(2)處理CPU某些錯誤的中斷

(3)調(diào)試程序(DEBUG)設(shè)置的中斷

7/28/20235可屏蔽中斷被CPU響應(yīng)的兩個條件:7/27/202356.1.3中斷向量表

每個中斷源都對應(yīng)著一個中斷處理程序,中斷處理程序的起始地址稱為中斷入口地址,系統(tǒng)將各種中斷處理程序的入口地址放在一起形成一個地址表,稱為中斷向量表。如圖8.3。

表中每四個單元的內(nèi)容構(gòu)成一個中斷處理程序的入口地址(中斷向量),其中前兩個單元存放中斷處理程序的偏移地址IP的值,后兩個單元存放中斷處理程序的段地址CS值。系統(tǒng)共可處理256種不同的中斷。每種中斷對應(yīng)著一個編號,稱為中斷類型號,其編號范圍為0~0FFH。 硬中斷的類型號由硬件產(chǎn)生,其他中斷的類型號由軟件中斷指令I(lǐng)NTn中的操作數(shù)n指出,根據(jù)中斷類型號可以很容易的得到中斷向量。8086/8088的中斷向量表的起始地址位于內(nèi)存絕對地址00000H到003FFH處,故每個中斷向量的地址可由中斷類型號乘以4計算出來。

即:中斷向量地址=中斷類型號*47/28/202366.1.3中斷向量表7/27/202366.1.4中斷過程

中斷發(fā)生時,硬件自動完成的動作如下:

(1)取中斷類型號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)從中斷向量表中取4×n地址的內(nèi)容送IP,取4×n+2地址中內(nèi)容送CS

(7)轉(zhuǎn)中斷處理程序 中斷處理程序返回時使用IRET指令。

7/28/202376.1.4中斷過程7/27/202376.1.5中斷優(yōu)先級1.中斷優(yōu)先級

當(dāng)系統(tǒng)中有多個中斷源同時向CPU請求中斷時,CPU應(yīng)如何處理呢?8086~Pentium微處理機(jī)為各中斷類型規(guī)定了一個中斷優(yōu)先級次序。當(dāng)多個中斷源同時申請中斷時,CPU按優(yōu)先級從高到低的次序依次處理各中斷源的請求。

優(yōu)先級從高到低的次序為:

優(yōu)先級高

非屏蔽中斷(NMI)

內(nèi)部中斷

可屏蔽中斷(INTR)

優(yōu)先級低

單步中斷

可屏蔽中斷的優(yōu)先級又分為八級,在正常的優(yōu)先級方式下,優(yōu)先級次序是: IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7

7/28/202386.1.5中斷優(yōu)先級7/27/202382.中斷嵌套

正在運行的中斷處理程序,又被其他中斷源中斷,這種情況叫做中斷嵌套。8086~Pentium沒有規(guī)定中斷嵌套的層數(shù),但在實際使用時,多層中斷嵌套要受到堆棧容量的限制。6.1.6中斷指令外中斷是由外設(shè)發(fā)出中斷信號引起的,沒有中斷指令。1.軟中斷指令I(lǐng)NT指令格式:INTn

指令功能:轉(zhuǎn)到相應(yīng)中斷處理程序執(zhí)行,n為中斷類型號。在轉(zhuǎn)移過程中,系統(tǒng)首先會保護(hù)現(xiàn)場,將CS和IP內(nèi)容壓棧后從中斷向量表相應(yīng)單元取出中斷向量,送入CS和IP,完成轉(zhuǎn)移。7/28/202392.中斷嵌套7/27/202392.中斷返回指令I(lǐng)RET

指令格式:IRET

指令功能:從中斷服務(wù)程序返回主程序。主要是恢復(fù)中斷前的CS和IP的內(nèi)容。本節(jié)小結(jié):本節(jié)對中斷的來源和處理進(jìn)行了簡要介紹,通過本節(jié)的學(xué)習(xí)應(yīng)該對中斷的處理有一個整體的認(rèn)識。

7/28/2023102.中斷返回指令I(lǐng)RET7/27/2023106.2中斷處理程序設(shè)計本節(jié)重點:本節(jié)著重講述了如何利用中斷向量表中保留的中斷類型號編寫自己所需的中斷處理程序。

6.2.1中斷處理程序的編寫

CPU響應(yīng)中斷后,自動根據(jù)中斷類型取中斷向量,并轉(zhuǎn)入中斷處理程序。具體的工作由中斷處理程序完成,外中斷和軟中斷程序設(shè)計不盡相同。7/28/2023116.2中斷處理程序設(shè)計7/27/2023111.外中斷處理程序

外設(shè)中斷是隨機(jī)發(fā)生的,在中斷處理程序設(shè)計時必須考慮這一點。外中斷處理程序的

主要步驟如下:

(1)保護(hù)現(xiàn)場。主要指各通用寄存器內(nèi)容和除CS外代碼段寄存器的內(nèi)容。保護(hù)方法一般是壓棧。

(2)盡快完成中斷處理,以免影響其他外設(shè)中斷請求。

(3)恢復(fù)現(xiàn)場。

(4)中斷返回。用IRET指令返回。

7/28/2023121.外中斷處理程序7/27/2023122.軟中斷處理程序

軟中斷處理程序的步驟如下:

(1)考慮切換堆棧。

(2)及時開中斷。

(3)應(yīng)該保護(hù)現(xiàn)場。

(4)完成中斷處理。

(5)恢復(fù)現(xiàn)場。(6)堆棧切換。(7)一般利用IRET指令實現(xiàn)中斷返回。7/28/2023132.軟中斷處理程序7/27/2023136.2.2設(shè)置和獲取中斷向量

在系統(tǒng)程序或應(yīng)用程序由于某種需要而提供新的中斷處理程序時,就要設(shè)置對應(yīng)的中斷向量,使其指向新的中斷處理程序。1.設(shè)置中斷向量

設(shè)置中斷向量一般有兩種方法:直接寫入法和使用DOS調(diào)用法。方法1:直接寫入法

用MOV指令將中斷向量直接寫入中斷向量表,下面是一個直接寫入法的例子。

例使用直接寫入法設(shè)置中斷向量。

CLIMOVWORDPTR[BX],OFFSETINTHANDMOVWORDPTR[BX+2],SEGINTHAND STIMOVAX,0MOVDS,AXMOVBX,n*47/28/2023146.2.2設(shè)置和獲取中斷向量CLIMOVAX,07方法2:使用DOS功能調(diào)用法

使用25H號DOS功能調(diào)用可以設(shè)置中斷向量,出口參數(shù)如下:

預(yù)置:AH=25HAL=中斷類型號DS∶DX=中斷向量

執(zhí)行:INT21H

功能:將指定的中斷向量寫入中斷向量表。例使用DOS功能調(diào)用設(shè)置中斷向量。

INTHAND: MOVAX,SEGINTHANDMOVDS,AXMOVDX,OFFSETINTHANDMOVAH,25HMOVAL,nINT21H

7/28/202315方法2:使用DOS功能調(diào)用法使用25H號DOS功能調(diào)用可2.獲取中斷向量

獲取中斷向量也有兩種常用方法:直接讀取法和使用DOS功能調(diào)用法。方法1:直接讀取法

利用MOV指令直接讀取中斷向量。例利用直接讀取法讀取n號中斷向量,并保存在雙字變量OLDVECTOR中:XORAX,AXMOVES,AXMOVAX,ES∶[n*4]MOVWORDPTROLDVECTOR,AXMOVAX,ES∶[n*4+2]MOVWORDPTROLDVECTOR+2,AX7/28/2023162.獲取中斷向量7/27/202316方法2:使用DOS功能調(diào)用法

利用35H號DOS功能調(diào)用可以取得指定中斷號的中斷向量,其出入口參數(shù)如下:預(yù)置:AL=中斷類型號執(zhí)行:INT21H功能:讀取指定中斷的中斷向量,其中:ES=中斷處理程序的段地址BX=中斷處理程序的偏移地址

例7-4使用DOS功能調(diào)用取得n號中斷的中斷向量 MOVAH,35HMOVAL,n INT21HMOVWORDPTROLDVECTOR,ESMOVWORDPTROLDVECTOR,BX7/28/202317方法2:使用DOS功能調(diào)用法利用35H號DOS功6.3BIOS中斷調(diào)用本節(jié)重點:理解BIOS在計算機(jī)中的地位,會應(yīng)用BIOS中斷調(diào)用。6.3.1BIOS概述

BIOS(BasicInput/OutputSysterm)是固化在ROM中的程序,包含了主要I/O設(shè)備的處理程序和許多常用例行程序,它們一般以中斷處理程序的形式存在。

BIOS程序直接建立在硬件基礎(chǔ)上,磁盤操作系統(tǒng)(DOS)建立在BIOS基礎(chǔ)上。通常應(yīng)用程序可以調(diào)用DOS提供的系統(tǒng)功能完成輸入輸出或其他操作,這樣做用戶可以少考慮硬件,實現(xiàn)起來容易。

7/28/2023186.3BIOS中斷調(diào)用7/27/202318 BIOS中斷程序處于DOS功能調(diào)用和硬件環(huán)境之間,和DOS功能調(diào)用相比其優(yōu)點是效率高,缺點是編程相對復(fù)雜;和直接對硬件編程相比,優(yōu)點是實現(xiàn)相對容易,缺點是效率相對低。6.3.2BIOS中斷調(diào)用方法1.BIOS中斷調(diào)用方法BIOS調(diào)用方法很簡單,基本步驟為:

⑴置入口參數(shù)

⑵使用中斷語句INTn,其中n為中斷號。

例如:MOVAH,0 INT1AH7/28/202319 BIOS中斷程序處于DOS功能調(diào)用和硬件環(huán)境之間,和DOS例:BIOS鍵盤中斷(INT16H)AH功能返回參數(shù)

0從鍵盤讀一字符AL=字符碼,AH=掃描碼1讀鍵盤緩沖區(qū)的字符如ZF=0,AL=字符碼,AH=掃描碼如ZF=1,緩沖區(qū)空2取鍵盤狀態(tài)字節(jié)AL=鍵盤狀態(tài)字節(jié)字符數(shù)字鍵字符碼為ASCII碼功能鍵、控制鍵字符碼為0對應(yīng)一個掃描碼本節(jié)小結(jié):概括的介紹了BIOS及其中斷調(diào)用方法,要求掌握BIOS中斷的使用。7/28/202320例:BIOS鍵盤中斷(INT16H)AH6.4DOS功能調(diào)用

本節(jié)重點:DOS基本I/O功能調(diào)用。6.4.1DOS功能調(diào)用概述1.什么是DOS功能調(diào)用

DOS系統(tǒng)內(nèi)包含了許多涉及設(shè)備驅(qū)動和文件管理等方面的子程序,DOS的各種命令就是通過適當(dāng)?shù)卣{(diào)用這些子程序?qū)崿F(xiàn)的。為了方便程序員使用,把這些子程序編寫成相對獨立的程序模塊而且編上號。這些編了號的可由程序員調(diào)用的子程序就稱為DOS的功能調(diào)用或稱為系統(tǒng)調(diào)用。

DOS功能調(diào)用主要包括三方面的子程序:設(shè)備驅(qū)動(基本I/O)、文件管理和其他(包括內(nèi)存管理、置取時間、置取終端向量、終止程序等)。

7/28/2023216.4DOS功能調(diào)用 7/27/2023212.調(diào)用方法可按如下方法調(diào)用DOS功能調(diào)用:(1)設(shè)置入口參數(shù)。有部分功能調(diào)用是不需要入口參數(shù)的,但大部分功能調(diào)用需要入口參數(shù),在調(diào)用前應(yīng)按要求準(zhǔn)備好入口參數(shù)。(2)功能調(diào)用號送AH寄存器。(3)發(fā)軟中斷指令“INT21H”。7/28/2023222.調(diào)用方法7/27/2023226.4.2基本I/O功能調(diào)用1.帶回顯鍵盤輸入(1號功能調(diào)用)

能:從標(biāo)準(zhǔn)輸入設(shè)備上讀入一字符,并將該字符回顯在標(biāo)準(zhǔn)輸出設(shè)備上。通常情況下,標(biāo)準(zhǔn)輸入設(shè)備就是

溫馨提示

  • 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

提交評論