已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章 中斷系統(tǒng),第一節(jié) 基本概念,一、中斷 1、中斷的定義 當(dāng)CPU正常運(yùn)行時(shí),由于隨機(jī)事件(內(nèi)部或外部)引 起CPU暫時(shí)中止正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行請(qǐng)求中斷的外 設(shè)(或內(nèi)部事件)的中斷服務(wù)程序,中斷服務(wù)程序結(jié)束后 再返回被中止的程序,這一過(guò)程稱為中斷。 2、中斷源和中斷請(qǐng)求 能夠向CPU發(fā)出中斷請(qǐng)求的中斷來(lái)源稱為中斷源。I/O設(shè)備(CRT、打印機(jī)等)、數(shù)據(jù)設(shè)備(磁盤、磁帶等)、實(shí)時(shí)時(shí)鐘、故障信號(hào)、軟件中斷等都是中斷源。 中斷源能發(fā)出中斷請(qǐng)求信號(hào)到CPU,所以中斷源中一般 要求有中斷請(qǐng)求觸發(fā)器,請(qǐng)求信號(hào)有邊沿請(qǐng)求和電平請(qǐng)求 兩種。,3、中斷系統(tǒng)的目的 維持系統(tǒng)正常工作,提高系統(tǒng)效率; 實(shí)時(shí)處理; 為故障處理作準(zhǔn)備。 4、中斷分類 中斷分外部中斷和內(nèi)部中斷兩大類;其中外部 中斷分為兩類: 可屏蔽中斷INTR,由標(biāo)志寄存器中的 IF位 控制; 不可屏蔽中斷NMI,不受IF位控制。 5、中斷系統(tǒng)功能 中斷處理:發(fā)現(xiàn)中斷請(qǐng)求、響應(yīng)中斷請(qǐng)求、 執(zhí)行中斷服務(wù)程序、中斷返回。, 中斷控制:中斷優(yōu)先權(quán)排隊(duì)、中斷嵌套 當(dāng)系統(tǒng)中有多個(gè)中斷時(shí),有可能出現(xiàn)兩個(gè)或兩個(gè)以上的中斷源同時(shí)提出中斷請(qǐng)求,這時(shí)要求CPU根據(jù)中斷優(yōu)先權(quán)由高到低依次處理。 中斷嵌套如圖6.1所示。假定有兩個(gè)中斷源A和B,A的級(jí)別高于B,當(dāng)CPU正在處理B中斷時(shí),允許A能中斷B的中斷處理,轉(zhuǎn)去執(zhí)行A的中斷服務(wù)程序,在高級(jí)中斷A處理完后,返回到原來(lái)打斷處,繼續(xù)處理B的中斷服務(wù)程序。圖中為兩級(jí)中斷,還可以進(jìn)行多級(jí)中斷。,圖6.1中斷嵌套示意圖,二、中斷處理過(guò)程 1、中斷檢測(cè) 中斷源向CPU發(fā)中斷請(qǐng)求是隨機(jī)的,大多數(shù)CPU在現(xiàn) 行指令周期結(jié)束時(shí)檢測(cè)有無(wú)中斷請(qǐng)求。8086CPU在每條指 令的最后一個(gè)機(jī)器周期的最后一個(gè)時(shí)鐘周期檢測(cè)中斷請(qǐng)求 信號(hào)輸入線INTR。 2、CPU響應(yīng)中斷的條件 CPU檢測(cè)到INTR上有中斷請(qǐng)求,要響應(yīng)它需滿足以下 條件: CPU開(kāi)放中斷,即CPU內(nèi)部設(shè)置的中斷允許觸發(fā)器IF=1,此觸發(fā)器可用開(kāi)中斷指令(STI)置1,用關(guān)中斷指令(CLI)清0。實(shí)際上就是標(biāo)志寄存器中的IF位=1,表示開(kāi)放可屏蔽中斷。參見(jiàn)圖6.2。 CPU在現(xiàn)行指令結(jié)束后響應(yīng)中斷,圖6.2 CPU內(nèi)設(shè)置中斷允許觸發(fā)器IFF 3、中斷請(qǐng)求與中斷屏蔽觸發(fā)器 圖6.3是具有中斷請(qǐng)求與中斷屏蔽的接口電路。每一個(gè)中斷源都有一個(gè)中斷請(qǐng)求觸發(fā)器和一個(gè)中斷屏蔽觸發(fā)器。只有當(dāng)該中斷源不屏蔽時(shí),它的中斷請(qǐng)求信號(hào)才能發(fā)給CPU。,圖6.3 具有中斷請(qǐng)求與中斷屏蔽的接口電路,3、CPU響應(yīng)中斷及處理過(guò)程 滿足上述條件后,CPU響應(yīng)中斷,轉(zhuǎn)入中斷周期,完 成以下操作,其時(shí)序如圖6.4所示。 關(guān)中斷:CPU響應(yīng)中斷時(shí),發(fā)出中斷響應(yīng)信號(hào)INTA ,同時(shí)內(nèi)部自動(dòng)地關(guān)中斷(IF=0),以禁止接受其他的中 斷請(qǐng)求,以免破壞當(dāng)前中斷服務(wù)的現(xiàn)場(chǎng)。 保留斷點(diǎn):把斷點(diǎn)處的指令指針I(yè)P值和CS值壓入堆 棧,以便中斷處理完成后正確地返回主程序斷點(diǎn)。 識(shí)別中斷源:識(shí)別中斷源一般有查詢和向量中斷(類 型號(hào))兩種方法。 保護(hù)現(xiàn)場(chǎng):把斷點(diǎn)處的有關(guān)寄存器內(nèi)容壓入堆棧。 中斷服務(wù):執(zhí)行中斷服務(wù)程序,圖6.4 中斷時(shí)序流程圖,圖6.5 中斷響應(yīng)服務(wù) 及返回流程圖, 恢復(fù)現(xiàn)場(chǎng):將壓入堆棧的有關(guān)寄存器的內(nèi)容彈出。 開(kāi)中斷:在中斷服務(wù)的最后要開(kāi)中斷,以便CPU能 響應(yīng)新的中斷請(qǐng)求。 如果實(shí)現(xiàn)中斷嵌套,可以在中斷服務(wù)程序中,在適當(dāng) 時(shí)候重新開(kāi)放中斷,以便允許響應(yīng)較高級(jí)的中斷。 中斷返回:將堆棧內(nèi)的斷點(diǎn)值彈出。上述過(guò)程如圖 6.5所示。 三、中斷優(yōu)先級(jí)和中斷嵌套 1、中斷優(yōu)先級(jí):中斷優(yōu)先級(jí)一般采用軟件查詢或硬件 中斷優(yōu)先級(jí)編碼電路。 2、中斷嵌套:當(dāng)CPU執(zhí)行優(yōu)先級(jí)較低的中斷服務(wù)時(shí), 而允許響應(yīng)比它優(yōu)先級(jí)高的中斷請(qǐng)求,而將正在處理的 中斷暫時(shí)掛起,這就是中斷嵌套。,第二節(jié) 8086/8088的中斷系統(tǒng),一、中斷分類 8086/8088的中斷系統(tǒng)如圖6.6所示。 1、外部中斷 8086/8088CPU有兩條引腳提供外部中斷源請(qǐng)求中斷:一 條是高電平有效的可屏蔽中斷INTR;另一條是正跳變有效 的非屏蔽中斷NMI。外部中斷又稱硬件中斷。 可屏蔽中斷:可屏蔽中斷是由用戶定義的外部硬件中斷 ,受中斷標(biāo)志位IF的控制。 非屏蔽中斷:不受中斷標(biāo)志位IF的控制。,圖6.6 8086/8088的中斷系統(tǒng),TF=1,硬件中斷,軟件中斷,2、內(nèi)部中斷 內(nèi)部中斷又稱軟件中斷,主要來(lái)自CPU內(nèi)部的軟 件中斷。 圖6.6中,上部是外部的硬件中斷;下部是內(nèi)部 的軟件中斷。 二、中斷向量表 1、中斷向量的定義 所謂中斷向量實(shí)際上就是中斷服務(wù)程序的入口地 址。每個(gè)中斷類型號(hào)對(duì)應(yīng)一個(gè)中斷向量。中斷向量 占4個(gè)字節(jié)存儲(chǔ)單元,其中前兩個(gè)字節(jié)放中斷向量 的偏移地址(IP),且低字節(jié)在前,高字節(jié)在后;后 兩個(gè)字節(jié)放中斷向量的段地址(CS),也是低字節(jié) 在前,高字節(jié)在后。,2、中斷向量表 存放中斷向量的存儲(chǔ)區(qū)稱為中斷向量表。通 常在存儲(chǔ)器的低地址區(qū)。 3、8086/8088的中斷向量表 8086/8088有256種中斷類型,類型號(hào)為0-255(或0-FFH),共有256個(gè)中斷向量,每個(gè)占4個(gè)存儲(chǔ)單元,所以需要1024個(gè)字節(jié),在存儲(chǔ)器的最低端,地址從00000H-003FFH,這塊地址空間就是中斷向量表。 如圖6.7所示。,圖6. 7 8086/8088中斷向量表,從表中,知道了中斷類型號(hào),便可計(jì)算出相應(yīng)的中斷向量 在表中存放的位置,稱為中斷向量表地址,或稱為中斷向量 指針。從中斷向量表地址中取出中斷向量,便得到了該中斷 類型號(hào)的中斷服務(wù)程序入口地址。即 中斷類型號(hào)4 = 中斷向量指針的低地址 中斷類型號(hào)4+2 = 中斷向量指針的高地址 (中斷向量指針的低地址) (IP) (中斷向量指針的高地址) (CS) 例1:中斷類型號(hào)為27H 則中斷向量指針的低地址= 27H 4= 9CH 中斷向量指針的高地址= 27H 4+2= 9EH 即該中斷向量存放在0000H:009CH開(kāi)始的4個(gè)連續(xù)單元中。 如果這4個(gè)單元中的內(nèi)容如下:,0000:009C 2AH 0000:009D 43H 0000:009E 65H 0000:009F 87H 則該中斷類型號(hào)27H的中斷向量(中斷服務(wù)程序 入口地址)的邏輯地址是8765H:432AH,即 (CS)=8765H,(IP)=432AH;物理地址是8B97AH。 4、8086/8088中斷的分類 前5個(gè)是專用中斷(類型0-4) 類型0:除數(shù)為0中斷 類型1:?jiǎn)尾街袛?類型2:NMI中斷,類型3:斷點(diǎn)中斷 類型4:溢出中斷 保留的中斷(類型號(hào)05-3FH):這是Intel公司為軟件、硬件開(kāi)發(fā)保留的中斷類型,大部分用于系統(tǒng)中斷,如20H-3FH為DOS中斷調(diào)用。 供用戶定義的中斷(類型號(hào)40H-FFH):使用用戶自己定義的中斷,用戶必須把該中斷的中斷向量填寫到中斷向量表中。 填寫方法有兩種: 用指令填寫,例2:為中斷類型N設(shè)置中斷向量,該中斷的中斷服務(wù)程 序的符號(hào)地址是INTHAND。 mov ax, 0 mov es, ax ;中斷向量表的段地址 mov bx, N*4 ;中斷向量表的偏移地址 mov ax, offset INTHAND ;得到INTHAND的偏 移地址 mov ES:word PTRbx, ax ;放到中斷向量表中 mov ax, seg INTHAND ;得到INTHAND的段 地址 mov ES:word PTRbx+2, ax;放到中斷向量表中 INTHAND: ;中斷服務(wù)處理程序 IRET, 用DOS功能調(diào)用來(lái)設(shè)置中斷向量 、設(shè)置中斷向量 入口參數(shù): AH=25H AL=類型號(hào) DS:DX=中斷向量 執(zhí)行 INT 21H 、取中斷向量 入口參數(shù): AH=35H AL=類型號(hào) 執(zhí)行 INT 21H 返回時(shí)ES:BX=中斷向量,例3:使用DOS功能調(diào)用存取中斷向量 mov al, N mov ah, 35H ;取原中斷向量 int 21H push es ;保存原中斷向量的段地址 push bx ;保存原中斷向量的偏移地址 push ds mov ax, seg INTHAND ;得到INTHAND的段地址 mov ds, ax mov dx, offset INTHAND;得到INTHAND的偏移地址 mov al, N ;類型號(hào),mov ah, 25H ;設(shè)置中斷向量 int 21H pop ds pop dx ;恢復(fù)原中斷向量 pop ds ; mov al, N ;將原中斷向量寫回去 mov ah, 25H ; int 21H ret INTHAND: iret,三、外部中斷 1、非屏蔽中斷(NMI):不受中斷標(biāo)志位的控制,中 斷類型號(hào)為2,所以中斷向量放在0000:0008開(kāi)始的4個(gè) 單元中。NMI中斷一般用于緊急情況的處理。 2、可屏蔽中斷(INTR):受中斷標(biāo)志位的控制,IF=1,CPU才能響應(yīng)INTR中斷。CPU響應(yīng)INTR中斷時(shí),往INTA引腳上發(fā)兩個(gè)負(fù)脈沖,外設(shè)接到第二個(gè)負(fù)脈沖后,立即往數(shù)據(jù)總線上送出中斷類型碼,供CPU讀取。 中斷響應(yīng)需要兩個(gè)機(jī)器周期,參見(jiàn)圖6.9。 四、內(nèi)部中斷 內(nèi)部中斷即軟件中斷,它不受IF標(biāo)志的控制,但單步中斷受TF標(biāo)志的控制。8086/8088的中斷如下表6.1所示:,8086/8088中斷響應(yīng)需要兩個(gè)總線周期,圖6.9 8086/8088中斷響應(yīng)總線周期,表6.1 8086/8088的中斷優(yōu)先級(jí),五、中斷響應(yīng)和中斷處理過(guò)程 參見(jiàn)圖6.8所示。從圖中可知,可屏蔽中斷要多兩個(gè)步驟,即 要先判斷IF是否為1,若IF=1則進(jìn)入中斷響應(yīng),此時(shí)CPU要讀 取中斷類型碼,然后進(jìn)入所有中斷都要做的事。 將標(biāo)志寄存器FR的內(nèi)容壓入堆棧,TF送TEMP保存 將中斷允許標(biāo)志IF和單步標(biāo)志TF清零 將斷點(diǎn)保護(hù)到堆棧中。所謂斷點(diǎn)就是指響應(yīng)中斷時(shí),主程 序中當(dāng)前指令下面的一條指令的段寄存器CS的值和指令指針寄 存器IP的值壓入堆棧,先壓CS,再壓IP的值。 根據(jù)當(dāng)前中斷的中斷類型碼查中斷向量表,得到中斷向量 (中斷服務(wù)程序入口地址)分別裝入CS和IP,從而轉(zhuǎn)到相應(yīng)的 中斷服務(wù)程序。 執(zhí)行中斷服務(wù)程序,結(jié)束后恢復(fù)斷點(diǎn),從而繼續(xù)執(zhí)行原來(lái) 的程序。, 圖中在得到中斷服務(wù)程序入口地址后,查看NMI是否有,接 著查看TEMP,若TEMP=1,則在中斷前CPU已處于單步方式, 就和NMI一樣重新保護(hù)現(xiàn)場(chǎng)和斷點(diǎn),轉(zhuǎn)入單步中斷服務(wù)程序。 若TEMP=0,即中斷前CPU處于非單步方式,則CPU轉(zhuǎn)去執(zhí)行最先引起中斷的中斷服務(wù)程序。 最后舉一個(gè)例說(shuō)明中斷操作過(guò)程。 例4:某中斷類型號(hào)為72H,圖6.10示出了中斷操作過(guò)程。 取中斷類型號(hào)72H; 計(jì)算中斷向量地址72H4=1C8H; 72H4+2=1CAH; 取中斷服務(wù)程序入口地址的偏移量送IP,IP=2050H, 段地址送CS,CS=A000H; 轉(zhuǎn)入中斷服務(wù)程序A000H:2050H; 中斷返回到INT 72H指令的下一條指令MOV AX , BX。,六、可屏蔽中斷的過(guò)程 1、INTR中斷的全過(guò)程 首先中斷請(qǐng)求信號(hào)INTR由外部設(shè)備產(chǎn)生,并送到8086的INTR 引腳上。 如果IF=1,則在CPU完成正在執(zhí)行的指令后,便開(kāi)始響應(yīng)中 斷,步驟如下: CPU讀取中斷類型號(hào)n。CPU 通過(guò)INTA發(fā)中斷響應(yīng)信號(hào)給接口,并啟動(dòng)中斷過(guò)程。這個(gè)響應(yīng)信號(hào)將使發(fā)中斷請(qǐng)求的接口把一個(gè)字節(jié)的中斷類型號(hào)通過(guò)數(shù)據(jù)總線送給CPU; 按先后順序把PSW(即FR)、CS和IP壓入堆棧; 清除IF和TF標(biāo)志; 把4n +2的字存儲(chǔ)單元中的內(nèi)容讀入 CS中,把4n 的字存儲(chǔ)單元中的內(nèi)容讀入 IP中,即得到中斷向量; CPU 從新的CS:IP值開(kāi)始執(zhí)行中斷服務(wù)程序,,若允許中斷嵌套,則一般在中斷服務(wù)程序中保存寄存器 后,就安排一條STI指令,以便響應(yīng)優(yōu)先權(quán)較高的中斷。 在中斷服務(wù)程序末尾安排一條IRET返回指令。 至于不可屏蔽NMI中斷,與上述操作基本類似,只是不需 要讀取中斷類型碼,因?yàn)樗闹袛囝愋痛a由CPU內(nèi)部自動(dòng)產(chǎn) 生。 2、中斷類型號(hào)的獲得 除法錯(cuò)誤,單步中斷,非屏蔽中斷。斷點(diǎn)中斷和溢出中斷分別由CPU內(nèi)部自動(dòng)提供中斷類型號(hào)(0-4)。 軟件中斷則是從指令流中,即在第2個(gè)字節(jié)中讀得中斷 類型號(hào)。 外部中斷INTR可以用不同的方法獲得中斷類型號(hào),通 常由硬件提供,如8259A芯片可以將中斷類型號(hào)送到數(shù)據(jù)總 線上,由CPU讀取而獲得。,七、中斷服務(wù)子程序的設(shè)計(jì) 設(shè)計(jì)中斷服務(wù)子程序的步驟如下: (1)選擇一個(gè)中斷矢量。如果是硬件中斷,則要使用硬件 決定的中斷矢量。如果是采用軟件中斷,即用INT n指令的方 式,則可在系統(tǒng)保留給用戶的中斷矢量號(hào)中選一個(gè)中斷矢量。 例如選50H號(hào)中斷矢量。 (2)將中斷子程序的入口地址置入中斷矢量表的相應(yīng)表項(xiàng) 中,其置入方法有兩種: 一種是用數(shù)據(jù)傳送指令將中斷服務(wù)子程序的入口的偏移地 址放在中斷矢量表4 n的字單元中,將中斷服務(wù)子程序的入口的段地址放在中斷矢量表4 n+2的字單元中。 二是采用DOS功能調(diào)用,這在前面已講過(guò)。 (3)編寫中斷服務(wù)子程序,第三節(jié) 可編程中斷控制器8259A,8259A是一個(gè)可編程中斷控制器,能控制8級(jí)向量中斷, 通過(guò)級(jí)聯(lián)方式(用9片8259A),最多可構(gòu)成64級(jí)向量中 斷系統(tǒng)。在8259A中能判斷一個(gè)中斷請(qǐng)求輸入是否有效, 是否被屏蔽和進(jìn)行優(yōu)先級(jí)判決,并在CPU響應(yīng)中斷后, 將中斷類型碼發(fā)給CPU。 一、 8259A的引腳 如圖6.11所示,它有28個(gè)引腳,為標(biāo)準(zhǔn)芯片,即左下角為地,右上角為電源。,二、8259A的內(nèi)部結(jié)構(gòu),1、數(shù)據(jù)總線緩沖器 2、讀寫控制電路,一片8259A只占用兩個(gè)端口地址,由 A0來(lái)選擇,其它高位地址譯碼輸出作為片選信號(hào)CS。WR RD分別為寫信號(hào)和讀信號(hào)。 、級(jí)聯(lián)緩沖器/比較器,擴(kuò)充中斷用。 、中斷請(qǐng)求寄存器IRR,位寄存器,每一位對(duì)應(yīng)IR0- IR7,某根線上有中斷請(qǐng)求,則IRR中對(duì)應(yīng)位置。 、中斷服務(wù)寄存器ISR,CPU當(dāng)前正處理的IRi中斷請(qǐng)求 時(shí),該寄存器i位置1(i = 0- 7)。 6、中斷屏蔽寄存器IMR,當(dāng)IMR的第i位為1時(shí),禁止IRi來(lái) 的中斷請(qǐng)求。 7、優(yōu)先級(jí)判別器PR,當(dāng)有多個(gè)中斷同時(shí)請(qǐng)求中斷時(shí),判 別當(dāng)前優(yōu)先級(jí)最高的中斷請(qǐng)求進(jìn)入系統(tǒng)。 8、控制電路,控制芯片內(nèi)個(gè)部件協(xié)調(diào)一致地工作。,三、8259A的工作方式 1、中斷觸發(fā)方式,電平觸發(fā)方式或邊沿觸發(fā)方式(由 低到高的正跳變),利用初始化命令字ICW1來(lái)設(shè)置。 2、中斷結(jié)束方式,中斷請(qǐng)求處理結(jié)束時(shí),需將ISR中 相應(yīng)位清零。 自動(dòng)中斷結(jié)束方式(自動(dòng)EOI方式),中斷處理結(jié)束 時(shí)自動(dòng)將ISR中相應(yīng)位清零,只需將初始化命令字ICW4 中的AEOI置為1即可實(shí)現(xiàn)這種方式。 普通中斷結(jié)束方式( 普通EOI方式) ,用在8259A的全嵌套方式下,即在CPU處理完一個(gè)中斷請(qǐng)求時(shí)需8259A發(fā)送一個(gè)EOI命令,8259A收到EOI后,將ISR中最高優(yōu)先級(jí)的置1位清零(即當(dāng)前正在處理的中斷)。用操作命令字OCW2中的EOI=1, SL=0, R=0的設(shè)置來(lái)實(shí)現(xiàn)。, 特殊中斷結(jié)束方式,在非全嵌套方式下,通過(guò)向8259A發(fā)一條特殊中斷結(jié)束命令來(lái)判斷要清除ISR中置1位中的哪一位。用操作命令字OCW2中的EOI=1, SL=1, R=0的設(shè)置來(lái)實(shí)現(xiàn),此時(shí)OCW2中的L2、L1、L0這3位指出了到底要清除ISR中的哪一位。 3、優(yōu)先級(jí)管理方式 全嵌套方式:全嵌套方式是8259A初始化后自動(dòng)進(jìn)入的基本工作方式。此時(shí)優(yōu)先級(jí)從IR0到IR7依次降低。當(dāng)某一中斷處理時(shí),可響應(yīng)比它高的中斷,但禁止比它低的或同級(jí)中斷進(jìn)入。當(dāng)某一中斷請(qǐng)求處理結(jié)束時(shí),CPU向8259A發(fā)送中斷結(jié)束命令EOI,以使ISR中相應(yīng)位清零。 特殊全嵌套方式:與的普通全嵌套方式差不多,,區(qū)別是CPU處理某一中斷時(shí),允許比它高的和與它同級(jí) 的中斷請(qǐng)求進(jìn)入,而只禁止比它低的中斷請(qǐng)求。 自動(dòng)循環(huán)方式(普通EOI循環(huán)方式) 在這種方式下,任何一級(jí)中斷請(qǐng)求被處理完后, CPU 向8259A發(fā)送中斷結(jié)束命令EOI,以使ISR中優(yōu)先級(jí)最高 的置1位清零,并重新賦給它最低優(yōu)先級(jí),而將最高優(yōu)先 級(jí)賦給比它低一級(jí)的中斷請(qǐng)求,其它中斷請(qǐng)求的優(yōu)先級(jí) 則以循環(huán)方式類推。 特殊EOI循環(huán)方式,用戶根據(jù)要求用置優(yōu)先級(jí)命令指 定最低優(yōu)先級(jí),例如設(shè)置IRi為最低優(yōu)先級(jí),則最高優(yōu)先 級(jí)為IRi+1,其它各級(jí)按循環(huán)方式類推。 例1:普通EOI循環(huán)方式舉例,參見(jiàn)6.2. 某系統(tǒng)中原來(lái)定義的是IR0為最高級(jí), IR7為最低級(jí),當(dāng),前正在處理IR2和IR6引入的中斷請(qǐng)求,因此ISR寄存器中第2 位和第6位置1,待第2級(jí)中斷處理完,CPU向8259A發(fā)回普通 EOI命令,ISR中級(jí)別高的第2位清0,并將優(yōu)先級(jí)由原定義的 第2級(jí)改為最低級(jí)(第7級(jí)),而將最高級(jí)(第0級(jí))賦給原來(lái) 的第3級(jí)(IR3),其它級(jí)的優(yōu)先權(quán)按循環(huán)方式依次改變級(jí)別。 待第6級(jí)中斷處理完后也如此處理。,例2:特殊EOI循環(huán)方式舉例,參見(jiàn)表6.3。 當(dāng)前正在處理第2級(jí)和第6級(jí)中斷,它們以嵌套方式引入 系統(tǒng)。如果當(dāng)前CPU正在執(zhí)行優(yōu)先級(jí)高的第2級(jí)中斷服務(wù) 程序,用戶在該中斷服務(wù)程序中安排了一條優(yōu)先權(quán)置位 命令,將最低級(jí)優(yōu)先權(quán)賦給IR4,那么待這條指令執(zhí)行完,,各中斷源的優(yōu)先級(jí)便發(fā)生變化,IR4具有最低優(yōu)先級(jí) ,但這時(shí)第2級(jí)中斷服務(wù)程序并沒(méi)有結(jié)束,因此ISR寄存 器中仍保持第2位和第6位置1,只是它們的優(yōu)先級(jí)別已經(jīng)分別被改變?yōu)榈?級(jí)和第1級(jí),上述變化過(guò)程如表6.3所示。 4、中斷屏蔽方式 普通屏蔽方式,將IMR中某一位或幾位置1,則其對(duì) 應(yīng)的中斷被屏蔽(即這些中斷被禁止)。 特殊屏蔽方式 一般情況處理一個(gè)中斷時(shí),禁止同級(jí)或低級(jí)中斷進(jìn)入, 但有些場(chǎng)合,在處理某個(gè)中斷時(shí),僅希望對(duì)本級(jí)屏蔽, 可以響應(yīng)高級(jí)或低級(jí)中斷,此時(shí)采用這種方式。 特殊屏蔽方式通過(guò)操作命令字OCW3中的ESMM和SMM同時(shí)置為1,并將IMR對(duì)應(yīng)于本級(jí)中斷的位置1來(lái)實(shí)現(xiàn)。,四、8259A的級(jí)聯(lián)使用 如圖6.13所示,一片8259A為主片(SP/EN=1),其余8片8259A為從片(圖中從片只畫出了兩片),從片的 SP/EN=0。主片與從片的CAS0-CAS2相連。每片從片的INT接到主片相應(yīng)的IRi上,主片的INT則與CPU相連。8259A在級(jí)聯(lián)方式下的中斷響應(yīng)時(shí)序如圖6. 14所示。 第一個(gè)INTA周期,主8259A將響應(yīng)中斷的級(jí)聯(lián)地址從 CAS0-CAS2發(fā)給所有的從8259A。第二個(gè)INTA周期,與該 級(jí)聯(lián)地址相符的從8259A向CPU發(fā)送中斷類型碼n。 當(dāng)從片8259A的中斷請(qǐng)求處理結(jié)束時(shí),CPU應(yīng)發(fā)送兩 個(gè)EOI命令分別給主片和從片。,圖6.13 8259A的級(jí)聯(lián)使用,INT,去CPU,五、 8259A的控制字及編程使用 1、初始化命令字,有四個(gè),設(shè)置次序依次為: ICW1、ICW2、ICW3和ICW4。 ICW1 (A0=0,偶 地址端口) A5-A7,8086/8088中不用;在8085中作中斷向量字 D4=1,是ICW1的標(biāo)志; 地址 初始化命令字,IC4=0,表示不寫ICW4,=1表示要寫ICW4; SNGL=0,級(jí)聯(lián),=1單片,不寫ICW3; ADI, 8086/8088中不用; LTIM=0,邊沿觸發(fā),=1,電平觸發(fā)。 ICW2(A0=1,奇地址端口) T7-T3是中斷類型碼的高5位,中斷類型碼的低3位由中 斷進(jìn)入的引腳決定(IR0-IR7依次為000-111); D2-D0位不用。,例如:ICW2=20H,則8259A的IR0-IR7的中斷類型碼依次 為20H、21H、27H。 ICW3, (A0=1,奇地址端口)只在級(jí)聯(lián)方式時(shí)用。 對(duì)于主8259A, ICW3表示哪些IRi引腳接有從8259A, 接有從8259A的相應(yīng)Si位置1,否則置0。 對(duì)于從8259A,ID2-ID0表示本8259A(即從8259A)接在主8259A那一根IRi引腳上。 下圖中包括一個(gè)主芯片和兩個(gè)從芯片,共提供了22個(gè) 中斷等級(jí)。,主8259A,8259A 從片A,8259A 從片B,例3:圖6.14A中主片的IR3和IR6兩個(gè)輸入端分別連接了 從片A和B的INT。所以主片的ICW3 = 01001000B = 48H MOV AL,48H ;主片的ICW3 OUT 21H,AL 例4:圖中從片A和B的請(qǐng)求線INT分別連到主片的IR3和 IR6 ,所以從片A的ICW3=00000011B=03H 從片B的ICW3=00000110B=06H 設(shè)從片A的端口地址為A1H(奇地址),則 MOV AL,03H ;從片A的ICW3 OUT 0A1H,AL 設(shè)從片B的端口地址為B1H (奇地址) ,則 MOV AL,06H ;從片B的ICW3 OUT 0B1H,AL, ICW4 , (A0=1,奇地址端口) PM=0,是8080/8085,=1是8088/8086; AEOI=0,為普通EOI方式,=1為自動(dòng)EOI方式; BUF=1,緩沖方式,= 0為非緩沖方式; M/S,緩沖方式下規(guī)定本8259A是主片還是從片 = 0,是從片,=1,是主片; 在非緩沖方式下,該位無(wú)效; SFNM,中斷嵌套方式選擇,= 0,是全嵌套,=1,是特殊全嵌套。,2、操作命令字,有三個(gè)OCW1-OCW3,設(shè)置次序沒(méi)有 規(guī)定先后,這點(diǎn)與ICW設(shè)置不同。 OCW1, (A0=1,奇地址端口) OCW1是中斷屏蔽操作命令字,直接寫入中斷屏蔽寄存器IMR。M0-M7對(duì)應(yīng)IR0-IR7,其中Mi位=1,則該IRi位屏蔽,即IRi線上的中斷不被接收。 OCW2,用于設(shè)置優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式。,D4、D3 = 00是OCW2的標(biāo)志位; R=1循環(huán)方式優(yōu)先級(jí),= 0為非循環(huán)方式,即優(yōu)先級(jí)固定; SL=1表示L2L1L0有效,=0表示這三位無(wú)效; EOI,中斷結(jié)束命令位。 L2、L1、L0,在SL=1時(shí),配合R,SL,EOI的設(shè)置,用來(lái)確定一個(gè)中斷優(yōu)先級(jí)的編碼。 L2、L1、L0的8種編碼000-111分別與IR0-IR7對(duì)應(yīng)。 由R,SL,EOI三位可以定義多種不同的中斷結(jié)束命令或優(yōu) 先級(jí)循環(huán)方式,其意義如表6.4所示。 OCW3 (A0 = 0,偶 地址端口) 其中D4、D3=01是OCW3的標(biāo)志位。 ESMM是特殊屏蔽方式允許位,SMM是特殊屏蔽方式位。,ESMM SMM 功 能 0 無(wú)效 1 0 特殊屏蔽方式復(fù)位 1 1 特殊屏蔽方式置位,P,查詢標(biāo)志,=1查詢8259A狀態(tài),=0不查詢。當(dāng)P=1時(shí)查詢當(dāng)前是否有中斷請(qǐng)求,以及在有中斷時(shí),當(dāng)前正在請(qǐng)求的中斷最高優(yōu)先級(jí)是哪一級(jí)。查詢的中斷狀態(tài)字(偶地址)格式如下: IR=0,無(wú)中斷請(qǐng)求,=1有中斷請(qǐng)求; W2、W1、W0表示當(dāng)前正在請(qǐng)求的中斷IRi是最高優(yōu)先級(jí), W2、W1、W0的編碼是000-111對(duì)應(yīng)IR0-IR7。 RR和RIS位在P= 0時(shí)才有效。 RR位是讀寄存器命令,RIS位用于為讀寄存器命令確定 讀取的對(duì)象。,P RR RIS 功 能 0 0 無(wú)效 0 1 0 下條讀指令時(shí),讀取IRR(用偶地址) 0 1 1 下條讀指令時(shí),讀取ISR(用偶地址 如果CPU要讀取IMR寄存器的內(nèi)容,可隨時(shí)通過(guò)讀指令 從奇地址端口讀取,不需設(shè)置RR和RIS的狀態(tài)。 例5:在BIOS中讀取ISR寄存器的程序段是: MOV AL,0BH ; OCW3表示要讀ISR OUT 20H,AL ; OCW3口地址為20H NOP IN AL,20H ;讀ISR寄存器內(nèi)容 MOV AH,AL ;保存ISR內(nèi)容到AH OR AL,AH ;是否為全0? JNZ AW-INT ;否,轉(zhuǎn)硬件中斷程序,六、8259A應(yīng)用舉例,例5:中斷硬件實(shí)驗(yàn)(8259A),直接用手動(dòng)開(kāi)關(guān)產(chǎn)生單次脈沖作為中斷請(qǐng)求信號(hào),要求每按一次開(kāi)關(guān) 產(chǎn)生一次中斷,在屏幕上顯示一次“THIS IS A IRQ7 INTERRUPT!”,中斷10次后返回。IRQ7的中斷類型碼是0FH。,參考程序: DATA SEGMENT MESS DB THIS IS A IRQ7 INTERRUPT!,0AH,0DH, $ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: mov ax, cs ;置DS與CS一樣,為什么? mov ds, ax ;將中斷服務(wù)程序的段地址送ds mov dx, offset INT7 ;中斷服務(wù)程序的偏移地址送dx mov al, 0fH ;0f是類型號(hào) mov ah, 25H ;置中斷向量 int 21H in al, 21H ;讀中斷屏蔽 and al, 7fH ;開(kāi)放IRQ7中斷 out 21H, al mov cx, 10 ;中斷次數(shù) LL: jmp LL ;循環(huán)等待,中斷服務(wù)參考程序: INT7: mov ax, data mov ds, ax mov dx, offset MESS mov ah, 09 ;顯示提示信息 int 21H mov al, 20H ;發(fā)出普通EOI命令 out 20H, al loop next ;次數(shù)減1 in al, 21H ;讀中斷屏蔽 or al, 80H ;關(guān)閉IRQ7中斷 out 21H, al sti ;開(kāi)中斷 mov ah, 4cH ;返回DOS int 21H NEXT: iret CODE ENDS END START,例6:如圖6.15所示,已知當(dāng)前主8259A 上IR0和IR5引入 兩個(gè)中斷請(qǐng)求,類型碼為40H和45H;從8259A的IR2和 IR3上也引入兩個(gè)中斷請(qǐng)求,類型碼為32H和33H。 已知類型碼為40H和45H的中斷服務(wù)程序在同一段中,段 基址為1000H,偏移地址分別為1050H和2060H;類型碼 為32H和33H的中斷服務(wù)程序也在同一段中,段基址為 2000H,偏移地址分別為5440H和3620H。已知主8259A 的端口地址為E8H和E9H,從8259A的端口地址為F
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年駕校與學(xué)員簽訂的二零二五年度駕駛培訓(xùn)學(xué)員心理輔導(dǎo)合同
- 二零二五年度股權(quán)贈(zèng)與合同:公司股東權(quán)益轉(zhuǎn)讓與股權(quán)激勵(lì)實(shí)施及戰(zhàn)略調(diào)整
- 二零二五版智能隔層施工與設(shè)備安裝合同規(guī)范2篇
- 二零二五版石材鋼架施工項(xiàng)目施工圖紙與技術(shù)交底合同2篇
- 二零二五版玫瑰花產(chǎn)業(yè)投資基金合作協(xié)議4篇
- 2025年度注冊(cè)化工工藝工程師合作協(xié)議(化工工藝優(yōu)化)2篇
- 二零二五年度酒店管理公司合作協(xié)議3篇
- 2025年度個(gè)人健康保險(xiǎn)產(chǎn)品銷售合同范本4篇
- 2024系統(tǒng)維護(hù)服務(wù)合同模板
- 2025年度鋁合金門窗行業(yè)論壇策劃勞務(wù)分包服務(wù)合同4篇
- 醫(yī)院三基考核試題(康復(fù)理療科)
- 2024-2030年中國(guó)招標(biāo)代理行業(yè)深度分析及發(fā)展前景與發(fā)展戰(zhàn)略研究報(bào)告
- 醫(yī)師定期考核 (公共衛(wèi)生)試題庫(kù)500題(含答案)
- 基因突變和基因重組(第1課時(shí))高一下學(xué)期生物人教版(2019)必修2
- 內(nèi)科學(xué)(醫(yī)學(xué)高級(jí)):風(fēng)濕性疾病試題及答案(強(qiáng)化練習(xí))
- 音樂(lè)劇好看智慧樹(shù)知到期末考試答案2024年
- 辦公設(shè)備(電腦、一體機(jī)、投影機(jī)等)采購(gòu) 投標(biāo)方案(技術(shù)方案)
- 案卷評(píng)查培訓(xùn)課件模板
- 2024年江蘇省樣卷五年級(jí)數(shù)學(xué)上冊(cè)期末試卷及答案
- 人教版初中英語(yǔ)七八九全部單詞(打印版)
- 波浪理論要點(diǎn)圖解完美版
評(píng)論
0/150
提交評(píng)論