微機(jī)原理與接口第7章課件_第1頁(yè)
微機(jī)原理與接口第7章課件_第2頁(yè)
微機(jī)原理與接口第7章課件_第3頁(yè)
微機(jī)原理與接口第7章課件_第4頁(yè)
微機(jī)原理與接口第7章課件_第5頁(yè)
已閱讀5頁(yè),還剩261頁(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)介

第7章微機(jī)的中斷系統(tǒng)版權(quán)所有,2000(c)南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與工程紊提示本章是微機(jī)原理及接口課的一個(gè)重點(diǎn)和難點(diǎn)。

第7章微機(jī)的中斷系統(tǒng)版權(quán)所有,2000(c)南京航空1本章主要內(nèi)容基本知識(shí)

中斷與異常、中斷分類、實(shí)地址方式與

保護(hù)方式下的中斷*、中斷過(guò)程等可編程中斷控制器*

8259A的內(nèi)部結(jié)構(gòu)及工作原理*、8259A的引腳信號(hào)、8259A的工作方式*、8259A的編程方法*、高級(jí)中斷控制器中斷調(diào)用及其應(yīng)用本章主要內(nèi)容基本知識(shí)

中斷與異常、中斷分類、實(shí)地址方式與

保7.1中斷的基本知識(shí)一、中斷與異常二、中斷分類三、實(shí)方式與保護(hù)方式下的中斷四、中斷過(guò)程五、外部中斷源的管理7.1中斷的基本知識(shí)一、中斷與異常一、中斷與異常1.中斷2.異常3.中斷和異常的區(qū)別4.異常的類型一、中斷與異常1.中斷什么是中斷

所謂中斷,是指處理器在執(zhí)行正常程序過(guò)程中,當(dāng)出現(xiàn)某些異常情況或某個(gè)外部設(shè)備請(qǐng)求時(shí),處理器暫時(shí)中止正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行其特定的服務(wù)程序,并在執(zhí)行完服務(wù)程序后返回原來(lái)被中止的程序處繼續(xù)執(zhí)行的過(guò)程。返回什么是中斷所謂中斷,是指處理器在執(zhí)行正常程序過(guò)什么是異常?異常是指把因內(nèi)部意外條件而改變程序執(zhí)行流程以報(bào)告出錯(cuò)情況和非正常狀態(tài)的過(guò)程稱為異常中斷(簡(jiǎn)稱異常)。INTn也歸到異常之中

返回什么是異常?異常是指把因內(nèi)部意外條件而改變程序執(zhí)行流程以報(bào)告中斷和異常有什么區(qū)別?(1)中斷處理異步發(fā)生的外部事件。(各種外部設(shè)備數(shù)據(jù)傳送的請(qǐng)求及時(shí)鐘中斷)(2)異常處理同步發(fā)生的內(nèi)部事件。(處理指令失效)(3)硬件中斷是作為外部事件的結(jié)果而發(fā)生的。(可屏蔽中斷和不可屏蔽中斷)(4)中斷是在當(dāng)前指令執(zhí)行完后才去執(zhí)行服務(wù)程序的,在中斷處理程序完成中斷服務(wù)后,程序繼續(xù)執(zhí)行被中斷指令之后的指令。返回中斷和異常有什么區(qū)別?(1)中斷處理異步發(fā)生的外部事件。(各異常有哪幾種類型?(1)失效(2)陷井(3)終止異常有哪幾種類型?(1)失效什么是失效失效又稱為故障(Faults):是在引起異常的指令之前被檢測(cè)和處理。在執(zhí)行完失效對(duì)應(yīng)的服務(wù)程序后,會(huì)返回到該失效指令處,重新執(zhí)行該指令。例:在虛擬存儲(chǔ)器系統(tǒng)中,當(dāng)處理器涉及的頁(yè)或段不在物理存儲(chǔ)器中時(shí),就會(huì)產(chǎn)生一個(gè)失效異常。操作系統(tǒng)從盤(pán)上讀取這個(gè)頁(yè)或段,會(huì)重新啟動(dòng)指令。因此失效異??梢哉?zhí)行下去。

返回什么是失效失效又稱為故障(Faults):是在引起異常的指令什么是陷井?陷井(Traps)是在引起異常的指令執(zhí)行之后才被報(bào)告,且服務(wù)程序完成后,返回到原程序引起異常指令的下一條指令處繼續(xù)向下執(zhí)行。

★陷井與中斷處理方法一樣,但與失效不同.例:用戶定義的軟件中斷就是一種陷井。這與中斷引起的處理方法一樣返回什么是陷井?陷井(Traps)是在引起異常的指令執(zhí)行之后才被什么是終止?中止(Abort)是一種不能確定引起異常指令確切位置的異常(有時(shí)稱為夭折或失?。@?協(xié)處理器段溢出,原來(lái)的程序無(wú)法再執(zhí)行下去,因此服務(wù)程序往往重新啟動(dòng)操作系統(tǒng),運(yùn)行某些軟件時(shí),經(jīng)常會(huì)莫名其妙地自動(dòng)啟動(dòng)系統(tǒng),這就是所謂的中止異常引起的。

返回什么是終止?中止(Abort)是一種不能確定引起異常指令確切二、中斷分類(內(nèi)部中斷和外部中斷)返回二、中斷分類(內(nèi)部中斷和外部中斷)返回內(nèi)部中斷或異常1.失效異常2.陷井異常3.中止異常中斷分類圖內(nèi)部中斷或異常1.失效異常中斷分類圖主要失效異常除法出錯(cuò)、調(diào)試異常、界限檢查、無(wú)效操作碼、協(xié)處理器不存在、無(wú)效TSS、段不存在、堆棧段溢出、一般性保護(hù)錯(cuò)、頁(yè)面出錯(cuò)、協(xié)處理器錯(cuò)(僅80286)、機(jī)器檢查(Pentium~PentiumIII)等。返回主要失效異常除法出錯(cuò)、調(diào)試異常、界限檢查、無(wú)效操作碼、協(xié)處理主要陷井異常系統(tǒng)中的主要陷井異常包括單步陷井、斷點(diǎn)異常、溢出以及中斷指令I(lǐng)NTn等。中斷分類圖返回主要陷井異常系統(tǒng)中的主要陷井異常包括單步陷井、斷點(diǎn)異常、溢出主要中止異常系統(tǒng)中的主要中止異常包括雙重故障(在執(zhí)行一個(gè)異常處理程序中又出現(xiàn)另一個(gè)異常)、協(xié)處理器段溢出等。重新啟動(dòng)系統(tǒng),結(jié)束任務(wù)廣義上講,異常屬于內(nèi)部中斷

中斷分類圖返回主要中止異常系統(tǒng)中的主要中止異常包括雙重故障(在執(zhí)行一個(gè)異常外部中斷1.不可屏蔽中斷(NMI)2.可屏蔽中斷(INTR)3.中斷和異常功能表

中斷分類圖外部中斷1.不可屏蔽中斷(NMI)中斷分類圖不可屏蔽中斷含義:不能用軟件來(lái)控制是否允許中斷的一種外部中斷。常見(jiàn)NMI中斷(中斷類型號(hào)規(guī)定為2)有:

(1)電源掉電

(2)存儲(chǔ)器檢驗(yàn)出錯(cuò)

(3)總線奇偶錯(cuò)等。中斷分類圖返回見(jiàn)P271表不可屏蔽中斷含義:不能用軟件來(lái)控制是否允許中斷的一種外部中斷可屏蔽中斷含義:可用軟件控制是否允許中斷的外部中斷。即STI使IF=1,允許中斷;CLI使IF=0,禁止中斷。常見(jiàn)INTR中斷有:

所有外部設(shè)備中斷如鍵盤(pán)、鼠標(biāo)、打印機(jī)、顯示器、聲卡、CD-ROM等中斷分類圖返回可屏蔽中斷含義:可用軟件控制是否允許中斷的外部中斷。即STI中斷和異常功能表處理器對(duì)應(yīng)的中斷/異常類型及功能如Page271表7.1所示。表中列出了16位處理器8086~20286及32位處理器80386~Pentium4對(duì)應(yīng)的中斷或異常類型、

功能及在實(shí)地址方式下的中斷向量存放的內(nèi)存地址。

Intel保留了前32個(gè)(00H~20H)中斷向量供處理器使用,后面的20H~FFH供用戶使用。保留的中斷用于系統(tǒng)功能。對(duì)于80286~Pentium4處理器,異常1~6、7、9、16和17可用于實(shí)方式和保護(hù)方式,而其余異常僅適用于保護(hù)方式。

中斷和異常功能表處理器對(duì)應(yīng)的中斷/異常類型及功能如Page中斷和異常功能表對(duì)于某一個(gè)類型號(hào)而言(如08H~0FH),為區(qū)分是INTR引腳引起的外部中斷,還是內(nèi)部引起的異常,在處理之前,要判斷出錯(cuò)代碼中的EXT位,如果EXT=1則執(zhí)行外部中斷處理程序,EXT=0執(zhí)行異常處理程序。

中斷和異常功能表對(duì)于某一個(gè)類型號(hào)而言(如08H~0FH),為出錯(cuò)代碼對(duì)于內(nèi)部異常引起的中斷,系統(tǒng)引入了異常出錯(cuò)代碼,出錯(cuò)代碼在CPU響應(yīng)中斷或異常時(shí)隨斷點(diǎn)地址之后被壓入堆棧保護(hù)。異常出錯(cuò)代碼為32位(80386~Pentium4),只有低16位有效,最低位(D0)為EXT,為1時(shí)表示是外部中斷引起的,為0表示內(nèi)部異常引起的,次低位(D1)IDT為1時(shí)表示訪問(wèn)IDT表,為0表示訪問(wèn)GDT或LDT表,

D2位TI為1表示訪問(wèn)GDT表,為0表示訪問(wèn)LDT表,D15~D3為IDT、GDT或LDT的索引值(同選擇子中的索引),D31~D16未用。

返回出錯(cuò)代碼對(duì)于內(nèi)部異常引起的中斷,系統(tǒng)引入了異常出錯(cuò)代碼,出錯(cuò)三、實(shí)方式與保護(hù)方式下的中斷1.術(shù)語(yǔ)及概念2.實(shí)方式下中斷服務(wù)程序入口地址3.保護(hù)方式下中斷服務(wù)程序入口地址*4.保護(hù)方式與實(shí)方式中斷主要區(qū)別三、實(shí)方式與保護(hù)方式下的中斷1.術(shù)語(yǔ)及概念術(shù)語(yǔ)及概念中斷類型號(hào)中斷向量中斷向量表中斷描述符中斷描述符表術(shù)語(yǔ)及概念中斷類型號(hào)中斷類型號(hào)中斷類型號(hào):中斷類型的唯一編號(hào)。01H,05H…(與IRQ0~IRQ10中斷號(hào)不是一個(gè)意思)數(shù)量:256個(gè)。(包括外部中斷和內(nèi)部中斷或異常)

編號(hào):0~255。適用范圍:8086~Pentium4(各種工作方式)返回中斷類型號(hào)中斷類型號(hào):中斷類型的唯一編號(hào)。01H,05H…(中斷向量(實(shí)地址方式)含義:

中斷服務(wù)程序的入口地址(CS:IP)組成及格式:

共4個(gè)字節(jié),段地址及偏移地址各兩個(gè)字節(jié)。返回中斷向量(實(shí)地址方式)含義:

中斷服務(wù)程序的入口地址(CS:中斷向量表含義:存放256個(gè)中斷向量的內(nèi)存區(qū)域。即存放中斷服務(wù)程序入口地址的內(nèi)存區(qū)域稱為中斷向量表。中斷向量表大?。?KB(256X4字節(jié))中斷向量表地址范圍:00000H~003FFH。適用范圍:實(shí)地址方式。返回中斷向量表含義:存放256個(gè)中斷向量的內(nèi)存區(qū)域。即存放中斷服中斷向量組成及格式返回中斷向量組成及格式返回中斷描述符(保護(hù)方式)含義:描述某中斷對(duì)應(yīng)中斷服務(wù)程序的入口地址信息及其屬性,包括32位偏移地址和16位段選擇子。P為存在位,P=1表明中斷描述符在物理存儲(chǔ)器中;DPL為中斷描述符特權(quán)級(jí)兩位,共4級(jí),00,01,10,11,其中00為最高級(jí),11為最低級(jí)。

組成及格式:8個(gè)字節(jié)返回中斷描述符(保護(hù)方式)含義:描述某中斷對(duì)應(yīng)中斷服務(wù)程序的入口中斷描述符表含義:存放256個(gè)中斷描述符的內(nèi)存區(qū)域。中斷描述符表容量:2KB。(256x8字節(jié))適用范圍:保護(hù)方式和V86方式。返回中斷描述符表含義:存放256個(gè)中斷描述符的內(nèi)存區(qū)域。返回實(shí)方式下中斷服務(wù)程序入口地址中斷類型號(hào)n與其對(duì)應(yīng)的中斷向量存放起始地址之間的關(guān)系是:

起始地址=4×n;末地址=4×n+3

即中斷向量在4×n~4×n+3指示的內(nèi)存單元中示例返回實(shí)方式下中斷服務(wù)程序入口地址中斷類型號(hào)n與其對(duì)應(yīng)的中斷向量存實(shí)地址方式下的

中斷服務(wù)程序入口地址求法(例子)【例1】假設(shè)在實(shí)地址方式下,內(nèi)存單元00140H到00147H中存放的內(nèi)容如圖所示,求51H號(hào)中斷的中斷服務(wù)程序入口地址。

解:實(shí)地址方式下的

中斷服務(wù)程序入口地址求法(例子)【例1】假設(shè)例1求解(1)求中斷向量存放的首地址和末地址51H可知中斷向量存放首地址為51H×4=144H(左移兩位方法)

末地址=51H×4+3=147H(2)從首末地址對(duì)應(yīng)的4個(gè)單元找出中斷向量00144H到00147H中內(nèi)容就是51H號(hào)中斷的中斷向量。對(duì)照中斷向量組成及格式可知段地址=4540H,偏移地址=3430H,所以中斷服務(wù)程序入口地址為

段地址×16+偏移地址=45400H+3430H=48830H01010001*100=101000100返回例1求解(1)求中斷向量存放的首地址和末地址51H可知中斷保護(hù)方式下中斷服務(wù)程序入口地址(1)通過(guò)中斷類型號(hào)n從中斷描述符表IDT中找出中斷描述符。

中斷描述符首地址=中斷類型號(hào)碼n×8+IDT基地址

從該地址開(kāi)始取出8字節(jié)內(nèi)容就是中斷描述符。(2)通過(guò)中斷描述符中的選擇子第3位TI從GDT或LDT中找出或求出段描述符。(TI=0選中GDT,TI=1選中LDT)

(3)據(jù)段描述符提供的段基地址與中斷描述符提供的偏移地址合成物理地址。示例保護(hù)方式下中斷服務(wù)程序入口地址(1)通過(guò)中斷類型號(hào)n從中斷描保護(hù)方式下的

中斷服務(wù)程序入口地址求法(例子)【例2】已知保護(hù)方式下,內(nèi)存單元中有關(guān)單元存放的內(nèi)容如右圖所示,IDT的首地址為00280000H,GDT首地址為00500000H,求20H號(hào)中斷服務(wù)程序入口地址。解:保護(hù)方式下的

中斷服務(wù)程序入口地址求法(例子)【例2】已知保例2求解(1)求偏移地址先找中斷描述符,然后從中找出中斷服務(wù)程序,偏移地址由n=20H可知,中斷描述符存放在00280000H+20H×8=00280100H開(kāi)始的8個(gè)單元,所以中斷描述符為:0042

EE000013

2012H(2)求中斷服務(wù)程序所在段的段基地址

段選擇子為:0013H=0000000000010011B

TI=0,段描述符在GDT中,RPL=11為普通用戶程序請(qǐng)求,

索引值=0000000000010B所以中斷描述符所在段描述符在GDT中的位置為:索引值×8+GDT首地址=0000000000010000B+00500000H=00500010H因此,段描述符為:3918

40

423400

0096

H

段基地址=39423400H(3)合成物理地址服務(wù)程序入口地址=對(duì)應(yīng)段的段基地址+偏移地址=39423400H+00422012H=39845412H返回例2求解(1)求偏移地址返回保護(hù)方式與實(shí)方式中斷主要區(qū)別(1)表的大小不同中斷描述符表2KB;中斷向量表1KB(對(duì)于實(shí)地址方式,中斷描述符表就是中斷向量表。)

(2)表的位置不同保護(hù)方式下的中斷描述符表可位于內(nèi)存的任何位置,由中斷描述符寄存器(IDTR)決定;實(shí)地址方式下的中斷向量表只能固定在00000H~003FFH的最低內(nèi)存1KB的區(qū)域。(3)中斷服務(wù)程序存放位置不同保護(hù)方式下的中斷服務(wù)程序可以放到內(nèi)存的任何區(qū)域,而實(shí)地址方式下的中斷服務(wù)程序只能在存放的1MB以下的內(nèi)存區(qū)域。返回保護(hù)方式與實(shí)方式中斷主要區(qū)別(1)表的大小不同返回四、中斷過(guò)程1.中斷請(qǐng)求2.中斷判優(yōu)3.中斷響應(yīng)4.中斷服務(wù)(處理)5.中斷返回四、中斷過(guò)程1.中斷請(qǐng)求中斷請(qǐng)求含義:中斷源發(fā)出中斷請(qǐng)求信號(hào)外部中斷源主要有:

(1)I/O設(shè)備,如鍵盤(pán)、顯示器、打印機(jī)等。

(2)數(shù)據(jù)通道,如軟、硬磁盤(pán),磁帶等。

(3)實(shí)時(shí)鐘,如外部所需的定時(shí)電路等。

(4)故障源,如掉電、存儲(chǔ)器奇偶校錯(cuò)等。內(nèi)部中斷源主要包括:

(1)CPU指令產(chǎn)生異常,如被0除,溢出,單步等。

(2)程序執(zhí)行INT軟件中斷指令,如INT19H等。返回中斷請(qǐng)求含義:中斷源發(fā)出中斷請(qǐng)求信號(hào)返回中斷判優(yōu)由于中斷是隨機(jī)的,可能同時(shí)出現(xiàn)多個(gè)中斷源同時(shí)請(qǐng)求中斷時(shí),必須對(duì)申請(qǐng)中斷的中斷源進(jìn)行優(yōu)先級(jí)判別,這一階段稱為中斷判優(yōu)。返回中斷判優(yōu)由于中斷是隨機(jī)的,可能同時(shí)出現(xiàn)多個(gè)中斷源同時(shí)請(qǐng)求中斷中斷響應(yīng)中斷響應(yīng)過(guò)程:把從接到中斷請(qǐng)求到中斷處理之前,即從請(qǐng)求有效到轉(zhuǎn)中斷服務(wù)程序入口地址這一段時(shí)間。可屏蔽中斷的響應(yīng)過(guò)程返回中斷響應(yīng)中斷響應(yīng)過(guò)程:把從接到中斷請(qǐng)求到中斷處理之前,即從請(qǐng)可屏蔽中斷的響應(yīng)過(guò)程(1)處理器接到中斷申請(qǐng),處理完當(dāng)前指令即進(jìn)入響應(yīng)周期。(2)第二階段即中斷響應(yīng)周期,在其間CPU向外部中斷控制器發(fā)送兩個(gè)響應(yīng)脈沖信號(hào)INTA。第一個(gè)響應(yīng)脈沖通知中斷控制器,已經(jīng)響應(yīng)外部中斷請(qǐng)求,讓中斷控制器提供中斷類型號(hào)。第二個(gè)響應(yīng)脈沖,CPU取走中斷類型號(hào)。(3)將標(biāo)志寄存器中的內(nèi)容壓入堆棧保護(hù),然后清IF和TF標(biāo)志,以禁止INTR引腳以及陷阱和單步中斷。(4)將斷點(diǎn)地址壓入堆棧(CS:EIP或CS:IP)。斷點(diǎn)地址:指中斷時(shí)CPU待執(zhí)行的下一條指令對(duì)應(yīng)的邏輯地址。

順序:先壓入斷點(diǎn)地址的CS,后壓入偏移地址EIP(或IP)。(5)CPU得到中斷類型號(hào)碼n后,通過(guò)中斷類型號(hào)與中斷服務(wù)程序入口地址的關(guān)系找出該類型對(duì)應(yīng)的段基地址和偏移地址,從而轉(zhuǎn)入中斷服務(wù)程序入口地址。完成中斷響應(yīng)任務(wù)。返回可屏蔽中斷的響應(yīng)過(guò)程(1)處理器接到中斷申請(qǐng),處理完當(dāng)前指不可屏蔽中斷或內(nèi)部中斷對(duì)于不可屏蔽中斷或內(nèi)部中斷(或異常),由于類型是確定的,因此它們的中斷響應(yīng)過(guò)程無(wú)需(2)步,而(5)中取類型號(hào)不通過(guò)中斷控制器。對(duì)于異常在斷點(diǎn)地址壓入堆棧后,還要將引起異常的出錯(cuò)代碼壓入堆棧。

返回不可屏蔽中斷或內(nèi)部中斷對(duì)于不可屏蔽中斷或內(nèi)部中斷(或異常),中斷服務(wù)(處理)1.保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)實(shí)質(zhì):將重要信息壓入堆棧。(PUSH)2.開(kāi)中斷目的:開(kāi)放所有可屏蔽中斷,以允許高級(jí)中斷嵌套。(STI)3.執(zhí)行中斷服務(wù)程序4.關(guān)中斷目的:使用關(guān)中斷指令CLI關(guān)中斷以確??煽坑行У鼗謴?fù)現(xiàn)場(chǎng)。(CLI)5.恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)實(shí)質(zhì):將原來(lái)壓入堆棧中的內(nèi)容彈出來(lái)?;謴?fù)現(xiàn)場(chǎng)的指令是POP。在恢復(fù)現(xiàn)場(chǎng)時(shí)必須注意堆棧操作的原則:先進(jìn)后出(FILO)。返回中斷服務(wù)(處理)1.保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)實(shí)質(zhì):將重要信息壓入堆棧中斷返回中斷服務(wù)程序的最后一條指令都無(wú)一例外地使用中斷返回指令(如IRET/IRETD)。中斷返回的目的:使原來(lái)在中斷響應(yīng)過(guò)程中的斷點(diǎn)地址和標(biāo)志寄存器中的內(nèi)容,依次從堆棧中彈出,以便繼續(xù)執(zhí)行原來(lái)的程序。返回中斷返回中斷服務(wù)程序的最后一條指令都無(wú)一例外地使用中斷返回指五、外部中斷源的管理問(wèn)題的引出:多個(gè)外部中斷源同時(shí)請(qǐng)求中斷,而CPU僅一個(gè)INTR引腳,如何處理?解決方法:對(duì)中斷控制器硬件編程實(shí)現(xiàn)中斷管理。中斷源管理的任務(wù):區(qū)別中斷源、識(shí)別中斷源優(yōu)先級(jí)以及處理多級(jí)中斷嵌套問(wèn)題。五、外部中斷源的管理問(wèn)題的引出:多個(gè)外部中斷源同時(shí)請(qǐng)求中斷,中斷優(yōu)先級(jí)識(shí)別中斷優(yōu)先級(jí)排隊(duì):把多個(gè)中斷源按輕重緩急優(yōu)先處理權(quán)由高到低的順序排列起來(lái)。排隊(duì)方法:軟件排隊(duì)和硬件排隊(duì)。p275在8086~Pentium4系統(tǒng)中,中斷優(yōu)先級(jí)從高到低依次為:

內(nèi)部異常中斷(除單步)>INTn>NMI>INTR>單步中斷中斷優(yōu)先級(jí)識(shí)別中斷優(yōu)先級(jí)排隊(duì):把多個(gè)中斷源按輕重緩急優(yōu)先處理多級(jí)中斷嵌套含義:在低級(jí)中斷中斷正在處理時(shí)高一級(jí)中斷請(qǐng)求,則進(jìn)入高級(jí)中斷處理程序,處理完高級(jí)再返回低級(jí)中斷處理程序。示意圖多級(jí)中斷嵌套含義:在低級(jí)中斷中斷正在處理時(shí)高一級(jí)中斷請(qǐng)求,則7.2可編程中斷控制器8259A基本情況:(1)8位可編程中斷控制器,又稱優(yōu)先級(jí)控制器(2)處理8級(jí)向量?jī)?yōu)先級(jí)中斷(3)具有單一+5V供電(4)8259A芯片級(jí)聯(lián)組成強(qiáng)大的中斷管理系統(tǒng)(多至64級(jí)外部中斷)。(5)優(yōu)先級(jí)方式可編程(6)多級(jí)中斷管理7.2可編程中斷控制器8259A基本情況:可編程中斷控制器8259A一、內(nèi)部結(jié)構(gòu)及工作原理二、引腳信號(hào)三、工作方式四、編程方法可編程中斷控制器8259A一、內(nèi)部結(jié)構(gòu)及工作原理一、內(nèi)部結(jié)構(gòu)及工作原理返回一、內(nèi)部結(jié)構(gòu)及工作原理返回?cái)?shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是一個(gè)三態(tài)、雙向的8位緩沖器,是8259A與CPU系統(tǒng)數(shù)據(jù)總線的接口。數(shù)據(jù)總線緩沖器的主要功能有:

(1)通過(guò)數(shù)據(jù)總線緩沖器,CPU向8259A內(nèi)部發(fā)送命令。

(2)CPU接收8259A狀態(tài)信息。

(3)在中斷響應(yīng)周期,CPU從中獲得中斷類型號(hào)。返回?cái)?shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是一個(gè)三態(tài)、雙向的8位緩沖器,是讀/寫(xiě)邏輯接收CPU送來(lái)的讀/寫(xiě)控制信號(hào)、片選信號(hào)以及地址選擇信號(hào),以對(duì)內(nèi)部控制邏輯編者編程以確定工作方式。它可將8259A內(nèi)部的狀態(tài)信息傳送到數(shù)據(jù)總線上,供CPU讀取.返回讀/寫(xiě)邏輯接收CPU送來(lái)的讀/寫(xiě)控制信號(hào)、片選信號(hào)以及地址選級(jí)聯(lián)緩沖/比較器級(jí)聯(lián)緩沖/比較器在級(jí)聯(lián)方式的主從結(jié)構(gòu)中(兩個(gè)以上的8259A組成的系統(tǒng)),用來(lái)存放和比較系統(tǒng)中各8259A的從設(shè)備標(biāo)志(ID)。返回級(jí)聯(lián)緩沖/比較器級(jí)聯(lián)緩沖/比較器在級(jí)聯(lián)方式的主從結(jié)構(gòu)中(兩個(gè)控制邏輯控制邏輯是控制8259A內(nèi)部各部件的主要邏輯電路。主要功能包括:

(1)根據(jù)CPU對(duì)8259A編程設(shè)定的工作方式來(lái)產(chǎn)生內(nèi)部控制信號(hào)。

(2)如果中斷請(qǐng)求寄存器IRR有未被屏蔽的位,則控制邏輯對(duì)應(yīng)于當(dāng)時(shí)最高優(yōu)先的中斷源,向CPU發(fā)中斷請(qǐng)求信號(hào)INT。

(3)接收CPU送來(lái)的中斷響應(yīng)信號(hào),并允許中斷服務(wù)寄存器ISR的相應(yīng)位(ISRi)置位。(4)控制發(fā)出相應(yīng)的中斷類型號(hào),通過(guò)數(shù)據(jù)總線緩沖器輸出到系統(tǒng)總線上。返回控制邏輯控制邏輯是控制8259A內(nèi)部各部件的主要邏輯電路。返中斷請(qǐng)求寄存器IRRIRR是一個(gè)專門(mén)用于記錄外部中斷源的中斷申請(qǐng)的8位寄存器。IRR的8個(gè)輸入端分別可接8個(gè)中斷源,只要有中斷請(qǐng)求即IRR的某端(IRRi)由低電平變高電平時(shí),則相應(yīng)的IRR位置1(IRRi=1),直到中斷服務(wù)寄存器相應(yīng)位置1,IRR相應(yīng)位才復(fù)位。返回中斷請(qǐng)求寄存器IRRIRR是一個(gè)專門(mén)用于記錄外部中斷源的中斷中斷優(yōu)先權(quán)分辨器PR優(yōu)先權(quán)分辨器PR用來(lái)確定存放在IRR中各個(gè)中斷請(qǐng)求信號(hào)對(duì)應(yīng)中斷源的優(yōu)先級(jí)。

并總是選出當(dāng)前最高優(yōu)先中斷源的中斷申請(qǐng)通知控制邏輯,以便控制邏輯發(fā)送中斷請(qǐng)求信號(hào)INT。返回中斷優(yōu)先權(quán)分辨器PR優(yōu)先權(quán)分辨器PR用來(lái)確定存放在IRR中各中斷服務(wù)寄存器ISRISR為用于記錄正在被CPU處理(服務(wù))的中斷級(jí)的8位寄存器。當(dāng)有中斷請(qǐng)求并被CPU響應(yīng)時(shí),即在CPU響應(yīng)中斷后發(fā)來(lái)第一個(gè)中斷響應(yīng)脈沖時(shí),將對(duì)應(yīng)的中斷服務(wù)寄存器相應(yīng)位置1,直到結(jié)束中斷或有中斷結(jié)束命令才復(fù)位。返回中斷服務(wù)寄存器ISRISR為用于記錄正在被CPU處理(服務(wù))中斷屏蔽寄存器IMRIMR是8位的用于從硬件上屏蔽中斷源的寄存器。如果IMR相應(yīng)位為1,則對(duì)應(yīng)中斷源的中斷請(qǐng)求被屏蔽。只有相應(yīng)位為0且IF=1,CPU才有可能響應(yīng)可屏幕中斷。返回中斷屏蔽寄存器IMRIMR是8位的用于從硬件上屏蔽中斷源的寄二、引腳信號(hào)D7~D0為8位雙向的數(shù)據(jù)線INT:中斷請(qǐng)求輸出信號(hào)INTA:中斷響應(yīng)輸入信號(hào)RD和WR:讀/寫(xiě)控制信號(hào)CS:片選信號(hào)A0:端口選擇信號(hào)(兩個(gè)端口地址)IRRi:8個(gè)中斷源中斷請(qǐng)求端SP/EN:級(jí)聯(lián)控制

主:=1,從=0返回二、引腳信號(hào)D7~D0為8位雙向的數(shù)據(jù)線返回三、工作方式優(yōu)先級(jí)的方式屏蔽中斷源的方式結(jié)束中斷處理的方式連接系統(tǒng)總線的方式中斷請(qǐng)求信號(hào)方式返回三、工作方式優(yōu)先級(jí)的方式返回優(yōu)先級(jí)的方式全嵌套方式特殊全嵌套方式優(yōu)先級(jí)自動(dòng)循環(huán)方式優(yōu)先級(jí)特殊循環(huán)方式返回優(yōu)先級(jí)的方式全嵌套方式返回全嵌套方式僅允許高一級(jí)中斷進(jìn)入嵌套。從高到低優(yōu)先級(jí)依次為IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。返回全嵌套方式僅允許高一級(jí)中斷進(jìn)入嵌套。返回特殊全嵌套方式允許高一級(jí),也允許同級(jí)中斷進(jìn)入嵌套。從高到低優(yōu)先級(jí)依次為IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。返回特殊全嵌套方式允許高一級(jí),也允許同級(jí)中斷進(jìn)入嵌套。返回優(yōu)先級(jí)自動(dòng)循環(huán)方式在這種方式下,中斷源的優(yōu)先級(jí)是變化的,當(dāng)一個(gè)設(shè)備得到中斷服務(wù)以后,它的優(yōu)先級(jí)自動(dòng)降為最低優(yōu)先。在初始狀態(tài)下的優(yōu)先級(jí)為IR0>IR1>...>IR7,下一次優(yōu)先級(jí)為IR1>IR2>>IR6>IR7>IR0,依次類推。返回優(yōu)先級(jí)自動(dòng)循環(huán)方式在這種方式下,中斷源的優(yōu)先級(jí)是變化的,當(dāng)一優(yōu)先級(jí)特殊循環(huán)方式與優(yōu)先級(jí)自動(dòng)循環(huán)方式只有一點(diǎn)區(qū)別:初始最優(yōu)者可由程序設(shè)定,可任意指定一個(gè)初始最高優(yōu)先級(jí),以后再循環(huán)優(yōu)先。返回優(yōu)先級(jí)特殊循環(huán)方式與優(yōu)先級(jí)自動(dòng)循環(huán)方式只有一點(diǎn)區(qū)別:初始最優(yōu)屏蔽中斷源的方式普通屏蔽方式:設(shè)置8259A內(nèi)部中斷屏蔽寄存器IMR的相應(yīng)位為1(通過(guò)OCW1),即可屏蔽對(duì)應(yīng)中斷源的中斷申請(qǐng)。特殊屏蔽方式:先寫(xiě)入特殊屏蔽命令字OCW3,然后再寫(xiě)屏蔽命令字OCW1。使當(dāng)前中斷服務(wù)寄存器ISR的相應(yīng)位自動(dòng)復(fù)位。這就只屏蔽了當(dāng)前正在處理的這級(jí)中斷。返回屏蔽中斷源的方式普通屏蔽方式:設(shè)置8259A內(nèi)部中斷屏蔽寄存結(jié)束中斷處理的方式自動(dòng)結(jié)束方式:系統(tǒng)一旦進(jìn)入中斷服務(wù)程序,8259A就自動(dòng)將當(dāng)前中斷服務(wù)寄存器相應(yīng)位清0。(在第二個(gè)中斷響應(yīng)脈沖)非自動(dòng)結(jié)束方式:在中斷服務(wù)程序結(jié)束,返回主程序之前發(fā)一條中斷結(jié)束命令,使8259A的當(dāng)前最高優(yōu)先級(jí)的中斷對(duì)應(yīng)的ISR復(fù)位。返回結(jié)束中斷處理的方式自動(dòng)結(jié)束方式:系統(tǒng)一旦進(jìn)入中斷服務(wù)程序,8連接系統(tǒng)總線的方式緩沖方式:

一般在多片8259A級(jí)聯(lián)系統(tǒng)中,8259A通過(guò)總線驅(qū)動(dòng)器與系統(tǒng)總線相連,而不是8259A直接與系統(tǒng)總線相連,這就是緩沖方式。非緩沖方式:

當(dāng)系統(tǒng)只有一片8259A或少量幾片8259A時(shí),一般將它直接與數(shù)據(jù)總線相連。這就是所謂的非緩沖方式。返回連接系統(tǒng)總線的方式緩沖方式:

一般在多片8259A級(jí)聯(lián)系統(tǒng)中中斷請(qǐng)求信號(hào)方式邊沿觸發(fā)方式:

在邊沿觸發(fā)方式下,8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào),且該信號(hào)可以一直保持為高電平。為了防止干擾,其高電平也應(yīng)有一定的寬度。電平觸發(fā)方式:

8259A把中斷請(qǐng)求輸入端出現(xiàn)的高電平作為中斷請(qǐng)求信號(hào)。但應(yīng)注意的是,當(dāng)中斷請(qǐng)求被響應(yīng)后,輸入端必須立即撤消高電平,以免引起再一次中斷。返回中斷請(qǐng)求信號(hào)方式邊沿觸發(fā)方式:

在邊沿觸發(fā)方式下,8259A四、編程方法一般原則:先進(jìn)行初始化編程,再進(jìn)行控制命令編程8259A的初始化編程8259A操作命令字的編程返回四、編程方法一般原則:先進(jìn)行初始化編程,再進(jìn)行控制命令編程返8259A的

初始化編程對(duì)8259A進(jìn)行初始化編程就是向8259A寫(xiě)入兩到四個(gè)初始化命令字。流程如圖。初始化編程任務(wù):

●設(shè)定中斷請(qǐng)求信號(hào)的有效形式。

●設(shè)定8259A是單片還是多片級(jí)聯(lián)方式。

●設(shè)置中斷類型號(hào)。

●設(shè)置優(yōu)先排隊(duì)規(guī)則。

●設(shè)定中斷結(jié)束時(shí)的操作原則。編程示例:返回8259A的

初始化編程對(duì)8259A進(jìn)行初始化編程就是向82芯片初始化命令字ICW1在寫(xiě)入初始化命令字后,自動(dòng)啟動(dòng)初始化程序,除完成ICW1格式規(guī)定的功能外,隱含的功能有清除IMR(8259A開(kāi)放所有中斷)、默認(rèn)的中斷優(yōu)先級(jí)為IR0>IR1>...>IR7,即自動(dòng)進(jìn)入全嵌套方式、清除特殊屏蔽方式、設(shè)置讀IRR方式。

返回芯片初始化命令字ICW1在寫(xiě)入初始化命令字后,自動(dòng)啟動(dòng)初始化中斷類型初始化命令字ICW2要寫(xiě)入8259A的A0=1的端口T7到T3為決定中斷類型號(hào)的關(guān)鍵位

D2到D0根據(jù)IRi的組合編碼置相應(yīng)的值

返回如ICW2=01100101B,則IR5(低三位為101)的中斷類型號(hào)為65H,同樣可推算出IR0到IR4的中斷類型號(hào)為60H到64H,IR6、IR7的中斷類型號(hào)為66H和67H。中斷類型初始化命令字ICW2要寫(xiě)入8259A的A0=1的端口主/從片初始化命令字ICW3

——主片ICW3主要任務(wù)就是確定主片8259A的哪個(gè)中斷輸入引腳(IRi)接從片(ICW1的SGNL位=0之后,表明有級(jí)聯(lián)才需要設(shè)置ICW3)

要寫(xiě)入8259A的A0=1的端口IRi=1,指示IRRi處接一從片例:如ICW3=01010100B=54H,則說(shuō)明主片8259的IR2、IR4和IR6接了8259。在PC機(jī)中,主片ICW3=04H,即主片的IR2接一個(gè)從片主/從片初始化命令字ICW3

——主片ICW3主要任務(wù)就是確主/從片初始化命令字ICW3

——從片ICW3要寫(xiě)入8259A的A0=1的端口ID2,ID1,ID0編碼決定從片INT接主片的IRRi用三個(gè)標(biāo)識(shí)符(ID2~I(xiàn)D0)來(lái)確定從片中斷請(qǐng)求輸出端接主片的哪個(gè)輸入引腳。

返回例:如從片的ICW3=00000110B,表明從片接主片的IR6(低三位為110)。在PC機(jī)中,從片的ICW3=02H,即從片接主片的IR2。主/從片初始化命令字ICW3

——從片ICW3要寫(xiě)入8259控制初始化命令字ICW4只有在ICW1的最低位IC4設(shè)置了1之后,才需要設(shè)置ICW4

要寫(xiě)入8259A的A0=1的端口各位含義:

μPM:CPU類型,0=8080/8085,1=80X86。

AEOI:自動(dòng)結(jié)束中斷方式,AEOI=1自動(dòng)中斷結(jié)束方式。M/S:主/從片選擇,1=主片,0=從片。BUF:緩沖方式。BUF=1工作在緩沖方式。SFNM:特殊全嵌套方式。SFNM=1,特殊全嵌套方式。返回控制初始化命令字ICW4只有在ICW1的最低位IC4設(shè)置了18259A初始化編程實(shí)例系統(tǒng)對(duì)主片8259A初始化的要求是:(如圖所示)

●主片的IR2接從片的INT端。

●主片中斷信號(hào)為邊沿觸發(fā)方式。

●級(jí)聯(lián)但無(wú)緩沖。

●起始中斷類型號(hào)為08H(IR0)。

●正常的中斷結(jié)束,不選擇特殊的全嵌套方式。

● 級(jí)聯(lián)方式要ICW3和ICW4。對(duì)從片8259A的要求是:

●從片的INT接主片的IR2。

●從片起始中斷類型號(hào)為70H。

●級(jí)聯(lián)方式要ICW3和ICW4。8259A初始化編程實(shí)例系統(tǒng)對(duì)主片8259A初始化的要求是:實(shí)例系統(tǒng)圖返回實(shí)例系統(tǒng)圖返回典型微機(jī)系統(tǒng)中的主/從8259返回典型微機(jī)系統(tǒng)中的主/從8259返回編程實(shí)例解(主片)主片初始化程序段:

MOVAL,00010001B ;ICW1:邊沿,ICW4,ICW3

OUT20H,AL ;寫(xiě)入ICW1

MOVAL,00001000B ;ICW2:IR0中斷類型號(hào)為08H

OUT21H,AL ;寫(xiě)入ICW2

MOVAL,00000100B ;ICW3:主片IR2接從片INT

OUT21H,AL ;寫(xiě)入ICW3

MOVAL,00000101B ;ICW4:非緩沖,正常中斷結(jié)束, 非特殊全嵌套方式

OUT21H,AL ;寫(xiě)入ICW4返回編程實(shí)例解(主片)主片初始化程序段:

MOVAL,000編程實(shí)例解(從片)從片初始化程序段:

MOVAL,00010001B ;ICW1:邊沿,ICW4,ICW3

OUT0A0H,AL ;寫(xiě)入ICW1

MOVAL,01110000B ;ICW2:IR0中斷類型號(hào)為70H

OUT0A1H,AL ;寫(xiě)入ICW2

MOVAL,00000010B ;ICW3:從片接主片的IR2

OUT0A1H,AL ;寫(xiě)入ICW3

MOVAL,00000001B ;ICW4:非緩沖,正常結(jié)束, 非特殊全嵌套方式

OUT0A1H,AL ;寫(xiě)入ICW4返回編程實(shí)例解(從片)從片初始化程序段:

MOVAL,0008259A操作命令字的編程中斷屏蔽命令字OCW1控制中斷和優(yōu)先級(jí)循環(huán)的操作命令字OCW2屏蔽查詢狀態(tài)命令字OCW38259A操作命令字的編程中斷屏蔽命令字OCW1中斷屏蔽命令字OCW1

向中斷屏蔽寄存器IMR寫(xiě)入屏蔽信息

Mi=1表示對(duì)應(yīng)的IRi中斷源被屏蔽,Mi=0則取消屏蔽(i=0,1,2,3,4,5,6,7)。要求寫(xiě)入8259A的A0=1的端口中斷屏蔽命令字OCW1向中斷屏蔽寄存器IMR寫(xiě)入屏蔽信息控制中斷和優(yōu)先級(jí)循環(huán)的操作命令字OCW2

控制中斷結(jié)束以及確定優(yōu)先級(jí)循環(huán)方式

R:優(yōu)先級(jí)循環(huán)位,R=1為循環(huán)優(yōu)先。SL:指定IRi級(jí)別位.SL=1時(shí)L2~L0有效。L2~L0:編碼指定IRRiEOI=1則表示中斷結(jié)束命令,EOI=0則不起作用。要求寫(xiě)入8259A的A0=0的端口,D4D3=00為OCW2的標(biāo)識(shí)符

控制中斷和優(yōu)先級(jí)循環(huán)的操作命令字OCW2控制中斷結(jié)束以及確R,SL及EOI的組合功能R,SL及EOI的組合功能屏蔽查詢狀態(tài)命令字OCW3

管理特殊的屏蔽方式和查詢方式并可以用該命令字讀取8259A狀態(tài)寄存器中的內(nèi)容。ESMM:特殊屏蔽允許,SMM:特殊屏蔽位。P:管理查詢方式:當(dāng)P=1時(shí)可用作查詢方式, P=0為非查詢方式。

RR=1讀寄存器IRR和ISR,RR=0禁止讀這兩個(gè)寄存器的內(nèi)容。RIS:寄存器選擇位,RR=1時(shí)且RIS=0讀IRR寄存器,RIS=1讀ISR寄存器的內(nèi)容。要寫(xiě)入8259A的A0=0的端口,D4D3=01為OCW3的標(biāo)識(shí)位屏蔽查詢狀態(tài)命令字OCW3管理特殊的屏蔽方式和查詢方式并可狀態(tài)寄存器說(shuō)明當(dāng)ESMM=1且SMM=1時(shí):只要微處理器內(nèi)部IF位為1,系統(tǒng)就可以響應(yīng)任何可屏蔽中斷請(qǐng)求,此時(shí)就象優(yōu)先級(jí)規(guī)則不起作用一樣,而當(dāng)再一次寫(xiě)入OCW3使ESMM=1且SMM=0時(shí),系統(tǒng)又恢復(fù)原來(lái)的優(yōu)先級(jí)方式。P管理查詢方式:當(dāng)P=1時(shí)可用作查詢方式,即查詢決定優(yōu)先級(jí)次序;P=0為非查詢方式。P=1時(shí)用作查詢命令,下一條對(duì)同一地址(8259的A0=0)的讀指令(IN)起中斷識(shí)別作用。具體操作是:如果當(dāng)時(shí)有中斷請(qǐng)求,將識(shí)別出優(yōu)先級(jí)最高的請(qǐng)求,把ISR相應(yīng)位置1,同時(shí)傳輸一個(gè)字節(jié)的信息進(jìn)入微處理器的AL中,該字節(jié)的格式如下:I=1表示有中斷請(qǐng)求,I=0表示沒(méi)有中斷請(qǐng)求,I=1時(shí)W2、W1和W0才有意義,它們指示請(qǐng)求中斷的最高優(yōu)先級(jí)。

D7D6D5D4D3D2D1D0I----W2W1W0狀態(tài)寄存器說(shuō)明當(dāng)ESMM=1且SMM=1時(shí):只要微處理器內(nèi)部操作命令編程實(shí)例MOVAL,11110000B;主片OCW1,屏蔽主片的 IR7,IR6,IR5和IR4

OUT21H,AL ;寫(xiě)入主片的OCW1MOVAL,10000001B;從片OCW1:屏蔽從片 8259A的IR0和IR7

OUT0A1H,AL ;寫(xiě)入從片的OCW1

MOVAL,00100000B;OCW2:結(jié)束最高中斷,清 ISR相應(yīng)位,發(fā)普通中斷結(jié) 束命令

OUT0A0H,AL ;先向從片發(fā)中斷結(jié)束命令

OUT20H,AL ;后向主片發(fā)中斷結(jié)束命操作命令編程實(shí)例MOVAL,11110000B;主片8259A狀態(tài)的讀取中斷屏蔽寄存器IMR的讀取

讀取IMR只需用一條IN指令

IN AL,21H ;A0=1的偶地址端口中斷請(qǐng)求寄存器IRR的讀取

MOVAL,0AH;發(fā)讀取IRR的OCW3命令字OUT20H,AL;寫(xiě)入A=0的偶地址端口

IN AL,20H ;讀IRR內(nèi)容到AL中中斷服務(wù)寄存器ISR的讀取

MOVAL,0BH ;發(fā)讀取ISR的OCW3命令字 OUT20H,AL ;命令字寫(xiě)入A0=0的端口

IN AL,20H ;讀ISR內(nèi)容到AL中8259A狀態(tài)的讀取中斷屏蔽寄存器IMR的讀取

讀取IMR只高級(jí)中斷控制器

不同的處理器采用不同的中斷控制器8086/80286:使用8259A80386/80486:使用82380P5以后使用不同的南橋芯片(內(nèi)含中斷控制器)例:在815EP(支持PIII)芯片組中的南橋芯片82801BA(B,C,D,E,F,H),在865EP(支持P4)南橋芯片82801EB就集成了兩個(gè)級(jí)聯(lián)的8259A提供15級(jí)中斷向量。(ICH2--ICH5)(MCH)所有的高級(jí)中斷控制器在地址和控制字符方面都與8259A兼容。高級(jí)中斷控制器不同的處理器采用不同的中斷控制器高級(jí)可編程中斷控制器APIC從Pentium開(kāi)始,引入了高級(jí)可編程中斷控制器APIC(AdvancedProgrammableInterruptController)。APIC主要是面向多處理器環(huán)境的,它可以發(fā)送一個(gè)中斷到一個(gè)或一組處理器,并可動(dòng)態(tài)執(zhí)行優(yōu)先權(quán)判決。APIC保持與8259的兼容性。典型的APIC主要由LocalAPIC、I/OAPIC及APIC總線三部分構(gòu)成。支持24個(gè)可編程源,其中包括13個(gè)ISA中斷、4個(gè)PCI中斷、1個(gè)(系統(tǒng)管理)中斷、兩個(gè)主板中斷、1個(gè)INTR(可屏蔽中斷)以及3個(gè)通用中斷。高級(jí)可編程中斷控制器APIC從Pentium開(kāi)始,引入了高APIC系統(tǒng)的工作過(guò)程分為三個(gè)階段請(qǐng)求遞交階段:由于中斷類型號(hào)共有256個(gè)(0~255),0~15保留,因此APIC只使用16~255中斷類型。當(dāng)I/OAPIC模塊的中斷輸入引腳INTINi(i=0~23)收到有效的電平觸發(fā)信號(hào)后,則使中斷請(qǐng)求寄存器的相應(yīng)位IRRi置位,然后啟動(dòng)一個(gè)APIC總線消息傳輸周期,將此系統(tǒng)中斷請(qǐng)求的有關(guān)信息傳遞給指定處理器的LocalAPIC模塊處理。中斷優(yōu)先權(quán)判斷階段:收到中斷請(qǐng)求后,LocalAPIC模塊將當(dāng)前最高優(yōu)先的中斷請(qǐng)求交給處理器核心進(jìn)行處理。此時(shí)同8259的工作過(guò)程類似,得到中斷類型后,將中斷服務(wù)寄存器中的相應(yīng)位ISRi置位,同時(shí)清除IRRi位。通過(guò)中斷類型號(hào)從中斷向量表或中斷描述符表中找出相應(yīng)的中斷服務(wù)程序入口地址,從而執(zhí)行相應(yīng)服務(wù)程序。中斷結(jié)束階段:在中斷返回之前,向LocalAPIC模塊發(fā)中斷結(jié)束命令(EOI),這樣使當(dāng)前最高優(yōu)先的ISRi復(fù)位。APIC系統(tǒng)的工作過(guò)程分為三個(gè)階段請(qǐng)求遞交階段:由于中斷類型Intel965芯片組Intel965芯片組中斷調(diào)用及中斷程序設(shè)計(jì)版權(quán)所有,南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與工程系討論中斷控制的程序設(shè)計(jì)方法

中斷調(diào)用及中斷程序設(shè)計(jì)版權(quán)所有,南京航空航天大學(xué)計(jì)算機(jī)95理解中斷調(diào)用指令的執(zhí)行過(guò)程INTn指令I(lǐng)RET指令理解中斷調(diào)用指令的執(zhí)行過(guò)程INTn指令I(lǐng)NTn指令的執(zhí)行過(guò)程(1)SP=SP-2

(2)PSW(FLAGS)入棧

(3)SP=SP-2

(4)斷點(diǎn)地址(INTn的下一條指令)的CS入棧

(5)SP=SP-2

(6)斷點(diǎn)地址的IP入棧

(7)IP=[0000:n*4]

(8)CS=[0000:n*4+2]INTn指令的執(zhí)行過(guò)程(1)SP=SP-2

(2)PSWIRET指令的執(zhí)行過(guò)程(1)IP=[SS:SP]

(2)SP=SP+2

(3)CS=[SS:SP]

(4)SP=SP+2

(6)PSW=[SS:SP]

(7)SP=SP+2IRET指令的執(zhí)行過(guò)程(1)IP=[SS:SP]

(2)S中斷調(diào)用BIOS功能調(diào)用

供助于存于系統(tǒng)板ROM中的BIOS程序?qū)崿F(xiàn)功能調(diào)用,它是最直接控制硬件的系統(tǒng)程序,是其它程序(OS,用戶程序等)與硬件的接口程序。DOS功能調(diào)用(類型碼20H~3FH)

供助于DOS操作系統(tǒng)提供的處理程序?qū)崿F(xiàn)功能調(diào)用。中斷調(diào)用BIOS功能調(diào)用

供助于存于系統(tǒng)板ROM中的BIOSBIOS中斷調(diào)用BIOS中斷類型BIOS調(diào)用方法BIOS調(diào)用示例BIOS中斷調(diào)用BIOS中斷類型BIOS中斷類型返回BIOS中斷類型返回BIOS調(diào)用方法在AH寄存器中設(shè)置調(diào)用子程序的功能號(hào)根據(jù)要求設(shè)置入口參數(shù)使用INTn指令轉(zhuǎn)入BIOS程序入口,其中n為中斷類型號(hào)程序運(yùn)行完畢后,如果有出口參數(shù),則按規(guī)定取得出口參數(shù)返回BIOS調(diào)用方法在AH寄存器中設(shè)置調(diào)用子程序的功能號(hào)返回BIOS調(diào)用示例顯示功能日期和時(shí)間鍵盤(pán)服務(wù)返回BIOS調(diào)用示例顯示功能返回BIOS顯示功能調(diào)用10H示例在當(dāng)前光標(biāo)處顯示一個(gè)字符‘$’,光標(biāo)自動(dòng)后移,功能號(hào)AH=0EH入口參數(shù):要顯示的字符在AL中調(diào)用方法:MOVAH,0EH

MOVAL,’$’

INT10HBIOS顯示功能調(diào)用10H示例在當(dāng)前光標(biāo)處顯示一個(gè)字符‘$’利用BIOS日期調(diào)用讀取日期讀系統(tǒng)日期,功能號(hào)04H入口參數(shù):無(wú)出口參數(shù):CX=年(帶世紀(jì)),DH=月,DL=日調(diào)用方法:MOVAH,04

INT1AH利用BIOS日期調(diào)用讀取日期讀系統(tǒng)日期,功能號(hào)04H利用BIOS日期調(diào)用設(shè)置日期讀系統(tǒng)日期,功能號(hào)05H入口參數(shù):CX=年(帶世紀(jì)),DH=月,DL=日出口參數(shù):無(wú)調(diào)用方法:MOVCX,2002H;2002年

MOVDX,0512H;5月12日

MOVAH,05

INT1AH利用BIOS日期調(diào)用設(shè)置日期讀系統(tǒng)日期,功能號(hào)05H利用BIOS時(shí)間調(diào)用讀取時(shí)間讀系統(tǒng)時(shí)間,功能號(hào)02H入口參數(shù):無(wú)出口參數(shù):CH=時(shí),CL=分,DH=秒調(diào)用方法:MOVAH,02

INT1AH利用BIOS時(shí)間調(diào)用讀取時(shí)間讀系統(tǒng)時(shí)間,功能號(hào)02H利用BIOS時(shí)間調(diào)用設(shè)置時(shí)間讀系統(tǒng)時(shí)間,功能號(hào)03H入口參數(shù):CH=時(shí),CL=分,DH=秒出口參數(shù):無(wú)調(diào)用方法:MOVAH,03

MOVCX,1209H;12:09

MOVDH,0

INT1AH利用BIOS時(shí)間調(diào)用設(shè)置時(shí)間讀系統(tǒng)時(shí)間,功能號(hào)03HBIOS鍵盤(pán)服務(wù)調(diào)用16H示例從鍵盤(pán)緩沖區(qū)讀取字符入口參數(shù):AH=1出口參數(shù):ZF=0,AH=鍵盤(pán)掃描碼,

AL=ACII碼字符

ZF=1,無(wú)鍵按下調(diào)用方法:MOVAH,1

INT16HBIOS鍵盤(pán)服務(wù)調(diào)用16H示例從鍵盤(pán)緩沖區(qū)讀取字符DOS中斷調(diào)用DOS中斷類型DOS調(diào)用方法DOS調(diào)用示例DOS中斷調(diào)用DOS中斷類型DOS中斷類型(20H~3FH)DOS中斷類型(20H~3FH)DOS調(diào)用方法同BIOSDOS系統(tǒng)功能調(diào)用指的是,使用INT21H軟中斷所完成的各項(xiàng)功能,這些功能共有80多種,大致可分為設(shè)備管理、文件管理和目錄管理等幾種類型,調(diào)用方法如下:

1.在AH寄存器中設(shè)置調(diào)用子程序的功能號(hào)2.根據(jù)要求設(shè)置入口參數(shù)3.使用INT21H指令轉(zhuǎn)入DOS程序入口4.程序運(yùn)行完畢后,如果有出口參數(shù),則按規(guī)定取得出口參數(shù)DOS調(diào)用方法同BIOSDOS系統(tǒng)功能調(diào)用指的是,使用INTDOS中斷調(diào)用21H示例顯示功能日期和時(shí)間鍵盤(pán)服務(wù)DOS中斷調(diào)用21H示例顯示功能DOS顯示功能調(diào)用示例在當(dāng)前光標(biāo)處顯示一個(gè)字符‘$’,光標(biāo)自動(dòng)后移,功能號(hào)AH=02H入口參數(shù):要顯示的字符在DL中調(diào)用方法:MOVAH,02H

MOVDL,’$’

INT21H與BIOS功能兩點(diǎn)不同:一是中斷類型號(hào)和功能號(hào)不同,二是要顯示的字符存放寄存器不同DOS顯示功能調(diào)用示例在當(dāng)前光標(biāo)處顯示一個(gè)字符‘$’,光標(biāo)自利用DOS日期調(diào)用2AH讀取日期讀系統(tǒng)日期,功能號(hào)2AH入口參數(shù):無(wú)

出口參數(shù):CX=年(帶世紀(jì)),DH=月,DL=日,AL=星期(0-星期一,….)調(diào)用方法:MOVAH,2AH

INT21H利用DOS日期調(diào)用2AH讀取日期讀系統(tǒng)日期,功能號(hào)2AH利用DOS日期調(diào)用2BH設(shè)置日期讀系統(tǒng)日期,功能號(hào)2BH入口參數(shù):CX=年(帶世紀(jì)),DH=月,DL=日出口參數(shù):成功,AL=0;失敗,AL=0FFH調(diào)用方法:MOVCX,2010H;2002年

MOVDX,0321H;3月21日

MOVAH,2BH

INT21H利用DOS日期調(diào)用2BH設(shè)置日期讀系統(tǒng)日期,功能號(hào)2BHDOS鍵盤(pán)服務(wù)調(diào)用示例從鍵盤(pán)讀字符并回示入口參數(shù):AH=1出口參數(shù):AL=ACII碼字符調(diào)用方法:MOVAH,1

INT21HDOS鍵盤(pán)服務(wù)調(diào)用示例從鍵盤(pán)讀字符并回示中斷程序設(shè)計(jì)的任務(wù)加載程序:1.設(shè)置中斷向量2.初始化中斷控制器3.利用DOS功能調(diào)用駐留中斷服務(wù)程序中斷服務(wù)程序設(shè)計(jì):1.保護(hù)現(xiàn)場(chǎng),將相關(guān)寄存器的內(nèi)容壓入堆棧中;2.用戶中斷處理程序,若在此期間允許中斷嵌套,則應(yīng)該事先執(zhí)行開(kāi)中斷指令,并在中斷處理程序執(zhí)行完畢后執(zhí)行關(guān)中斷指令,以免影響恢復(fù)現(xiàn)場(chǎng)操作;3.恢復(fù)現(xiàn)場(chǎng),發(fā)中斷結(jié)束命令(EOI)4.中斷返回(若為獨(dú)立的中斷程序,直接用IRET指令返回;若是擴(kuò)充原中斷服務(wù)程序的功能,可用段間無(wú)條件轉(zhuǎn)移指令轉(zhuǎn)移到原中斷服務(wù)程序的入口)。

中斷程序設(shè)計(jì)的任務(wù)加載程序:1.設(shè)置中斷向量2.初始化中斷控中斷向量設(shè)置直接裝入方法

直接利用中斷向量與存放地址關(guān)系存入內(nèi)存,例如:使用數(shù)據(jù)傳送指令或串操作指令把用戶的中斷服務(wù)程序入口地址填入向量表中的適當(dāng)單元。

利用DOS中斷裝入方法INT21H

入口:AH=25,AL=中斷類型號(hào),DS:DX=中斷向量,出口:無(wú)利用DOS中斷讀取中斷向量INT21H

入口:AH=35,AL=中斷類型號(hào);出口:ES:BX=中斷向量中斷向量設(shè)置直接裝入方法

直接利用中斷向量與存放地址關(guān)系存入直接裝入中斷向量方法

XOR

AX,AX

MOVEX,AX;指向0段

MOVDI,60H*4;類型號(hào)60H

MOVAX,OFFSETINTRS;取偏移地址

MOV

ES:[DI],AX;寫(xiě)入向量表

MOV

AX,SEGINTRS;取段地址

MOV

ES:[DI+2],AX;寫(xiě)入向量表

INTRS:….

…. IRET返回直接裝入中斷向量方法XORAX,AX

利用DOS中斷裝入中斷向量方法

MOVBX,SEGINTRS;取段地址

MOV

DS,BX

MOVDX,OFFSETINTRS;取偏移地址

MOV

AL,60H;60H為中斷類型

MOVAH,25H

INT21H

INTRS:….

…. IRET返回見(jiàn)P418利用DOS中斷裝入中斷向量方法MOV利用DOS中斷獲取中斷向量方法

MOV

AL,09H;09H為中斷類型號(hào)

MOVAH,35HINT21H

;中斷向量為ES:BX,即中斷向量的段地址在ES中,偏移地址在BX中返回見(jiàn)P419利用DOS中斷獲取中斷向量方法MOVAL,中斷服務(wù)程序駐留內(nèi)存方法利用INT27H駐留內(nèi)存方法(限64KB)

入口:駐留內(nèi)存中程序的長(zhǎng)度在CS:DX中利用INT21H中的31H功能駐留方法

入口:AL返回碼,AH=31H,DX=駐留內(nèi)存程序的大?。ㄒ怨?jié)-16個(gè)字節(jié)為單位)

方法:MOVAL,0;返回碼0

MOVDX,1000H;大小1000H節(jié)

MOVAH,31H

INT21H

中斷服務(wù)程序駐留內(nèi)存方法利用INT27H駐留內(nèi)存方法(限6中斷程序設(shè)計(jì)舉例【例1】用中斷方法設(shè)計(jì)一個(gè)用戶鍵盤(pán)模擬程序,其功能是直接從數(shù)據(jù)端口(鍵盤(pán)數(shù)據(jù)端口地址為60H)讀取鍵盤(pán)的掃描碼,再通過(guò)XLAT指令將掃描碼轉(zhuǎn)換為ASCII字符顯示在屏幕上。當(dāng)程序運(yùn)行后,鍵入ESC鍵,可使鍵盤(pán)的管理在用戶鍵盤(pán)模擬程序和系統(tǒng)鍵盤(pán)管理程序(INT09H)之間切換.這是一個(gè)比較典型的,由用戶自行設(shè)計(jì)的中斷程序。程序的代碼段中,標(biāo)號(hào)為INSTALL的程序用于加載中斷服務(wù)程序,KBINT中斷服務(wù)程序用于處理用戶從鍵盤(pán)輸入的字符,并把若干可顯示字符在屏幕上顯示出來(lái)。中斷程序設(shè)計(jì)舉例【例1】用中斷方法設(shè)計(jì)一個(gè)用戶鍵盤(pán)模擬程序程序的代碼程序的代碼XLAT指令

這是一條專門(mén)用于AL和字節(jié)表中某一存儲(chǔ)單元之間執(zhí)行數(shù)據(jù)傳送的指令。表的首地址在BX中,根據(jù)AL設(shè)置的偏移地址,可以將該單元的內(nèi)容傳送到AL累加器中,從而達(dá)到將一種代碼翻譯(Translate)成另一種代碼之目的。如圖所示,若(BX)=0100H,(AL)=05H,執(zhí)行XLAT指令后,(AL)=2CH。注意,由于AL只有8位,所以表的長(zhǎng)度不能超過(guò)256字節(jié)。

XLAT指令這是一條專門(mén)用于AL和字節(jié)表中某一存儲(chǔ)單元之間條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令TEST測(cè)試指令TEST是一條雙操作數(shù)的測(cè)試指令,它對(duì)二操作數(shù)進(jìn)行“與”操作,并根據(jù)結(jié)果設(shè)置狀態(tài)標(biāo)志位,但不改變二操作數(shù)的值。該指令常用于檢測(cè)某種條件是否滿足,但又不希望改變?cè)僮鲾?shù)的情況。例如:

TESTAL,01H;檢查AL寄存器第0位的狀態(tài)

JNZTHERE;若AL寄存器的第0位非0,則轉(zhuǎn)移到THERE執(zhí)行

…THERE:

TEST測(cè)試指令TEST是一條雙操作數(shù)的測(cè)試指令,它對(duì)二操作CMP指令該指令用于二操作數(shù)的比較,其方法是用目的操作數(shù)減去源操作數(shù),結(jié)果不送回目的操作數(shù),二操作數(shù)保持原值不變,只是標(biāo)志位作相應(yīng)改變,其余同SUB指令。這條指令后面一般跟條件轉(zhuǎn)移指令,以判斷二操作數(shù)是否滿足某種關(guān)系。例如:

CMPAX,0JZL1其中第一條指令將AX的內(nèi)容與0比較,第二條指令根據(jù)第一條指令的比較結(jié)果確定轉(zhuǎn)移方向。如果比較指令執(zhí)行前(AX)=0,則JZ指令轉(zhuǎn)向目標(biāo)地址L1處繼續(xù)執(zhí)行,否則順序向下執(zhí)行。CMP指令該指令用于二操作數(shù)的比較,其方法是用目的操作數(shù)減去完第七章完第七章130問(wèn)題11.中斷和異常的區(qū)別是什么?2.異常的種類有那幾種?3.說(shuō)出可屏蔽中斷的響應(yīng)過(guò)程.4.說(shuō)出實(shí)地址方式的中斷向量表的大小和位置.中斷服務(wù)程序的位置.5.說(shuō)出保護(hù)方式下的中斷描述符表的大小和位置.中斷服務(wù)程序的位置.問(wèn)題11.中斷和異常的區(qū)別是什么?問(wèn)題21.中斷優(yōu)選級(jí)排隊(duì)有那幾種方法?2.8259A中有4組8位寄存器,講出其名稱和作用各是什么?3.解釋特殊全嵌套方式的含義是什么?4.8259A初始化需要至少寫(xiě)入幾個(gè)初始化命令字?最多寫(xiě)入幾個(gè)初始化命令字?5.中斷請(qǐng)求信號(hào)的方式有幾種?6.初始化時(shí),主片初始化字ICW3和從片初始化字ICW3的含義是否一樣?問(wèn)題21.中斷優(yōu)選級(jí)排隊(duì)有那幾種方法?DOS系統(tǒng)功能調(diào)用(中斷)在DOS系統(tǒng)功能調(diào)用(INT21H)中,有兩個(gè)功能專門(mén)用于中斷向量表的設(shè)置和檢查,如下:

寫(xiě)中斷向量輸入?yún)?shù):AH=25HAL=中斷類型號(hào)

DS:DX=中斷服務(wù)程序入口地址返回參數(shù):無(wú)

讀中斷向量輸入?yún)?shù):AH=35HAL=中斷類型號(hào)返回參數(shù):ES:BX=原中斷服務(wù)程序入口地址

注意:如用戶需要用自己的中斷服務(wù)程序代替系統(tǒng)中原來(lái)的中斷服務(wù)程序,必須保存原中斷服務(wù)程序的入口地址,以便在程序結(jié)束時(shí)能返回原系統(tǒng)中斷向量。

DOS系統(tǒng)功能調(diào)用(中斷)在DOS系統(tǒng)功能調(diào)用(INT2第7章微機(jī)的中斷系統(tǒng)版權(quán)所有,2000(c)南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與工程紊提示本章是微機(jī)原理及接口課的一個(gè)重點(diǎn)和難點(diǎn)。

第7章微機(jī)的中斷系統(tǒng)版權(quán)所有,2000(c)南京航空134本章主要內(nèi)容基本知識(shí)

中斷與異常、中斷分類、實(shí)地址方式與

保護(hù)方式下的中斷*、中斷過(guò)程等可編程中斷控制器*

8259A的內(nèi)部結(jié)構(gòu)及工作原理*、8259A的引腳信號(hào)、8259A的工作方式*、8259A的編程方法*、高級(jí)中斷控制器中斷調(diào)用及其應(yīng)用本章主要內(nèi)容基本知識(shí)

中斷與異常、中斷分類、實(shí)地址方式與

保7.1中斷的基本知識(shí)一、中斷與異常二、中斷分類三、實(shí)方式與保護(hù)方式下的中斷四、中斷過(guò)程五、外部中斷源的管理7.1中斷的基本知識(shí)一、中斷與異常一、中斷與異常1.中斷2.異常3.中斷和異常的區(qū)別4.異常的類型一、中斷與異常1.中斷什么是中斷

所謂中斷,是指處理器在執(zhí)行正常程序過(guò)程中,當(dāng)出現(xiàn)某些異常情況或某個(gè)外部設(shè)備請(qǐng)求時(shí),處理器暫時(shí)中止正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行其特定的服務(wù)程序,并在執(zhí)行完服務(wù)程序后返回原來(lái)被中止的程序處繼續(xù)執(zhí)行的過(guò)程。返回什么是中斷所謂中斷,是指處理器在執(zhí)行正常程序過(guò)什么是異常?異常是指把因內(nèi)部意外條件而改變程序執(zhí)行流程以報(bào)告出錯(cuò)情況和非正常狀態(tài)的過(guò)程稱為異常中斷(簡(jiǎn)稱異常)。INTn也歸到異常之中

返回什么是異常?異常是指把因內(nèi)部意外條件而改變程序執(zhí)行流程以報(bào)告中斷和異常有什么區(qū)別?(1)中斷處理異步發(fā)生的外部事件。(各種外部設(shè)備數(shù)據(jù)傳送的請(qǐng)求及時(shí)鐘中斷)(2)異常處理同步發(fā)生的內(nèi)部事件。(處理指令失效)(3)硬件中斷是作為外部事件的結(jié)果而發(fā)生的。(可屏蔽中斷和不可屏蔽中斷)(4)中斷是在當(dāng)前指令執(zhí)行完后才去執(zhí)行服務(wù)程序的,在中斷處理程序完成中斷服務(wù)后,程序繼續(xù)執(zhí)行被中斷指令之后的指令。返回中斷和異常有什么區(qū)別?(1)中斷處理異步發(fā)生的外部事件。(各異常有哪幾種類型?(1)失效(2)陷井(3)終止異常有哪幾種類型?(1)失效什么是失效失效又稱為故障(Faults):是在引起異常的指令之前被檢測(cè)和處理。在執(zhí)行完失效對(duì)應(yīng)的服務(wù)程序后,會(huì)返回到該失效指令處,重新執(zhí)行該指令。例:在虛擬存儲(chǔ)器系統(tǒng)中,當(dāng)處理器涉及的頁(yè)或段不在物理存儲(chǔ)器中時(shí),就會(huì)產(chǎn)生一個(gè)失效異常。操作系統(tǒng)從盤(pán)上讀取這個(gè)頁(yè)或段,會(huì)重新啟動(dòng)指令。因此失效異??梢哉?zhí)行下去。

返回什么是失效失效又稱為故障(Faults):是在引起異常的指令什么是陷井?陷井(Traps)是在引起異常的指令執(zhí)行之后才被報(bào)告,且服務(wù)程序完成后,返回到原程序引起異常指令的下一條指令處繼續(xù)向下執(zhí)行。

★陷井與中斷處理方法一樣,但與失效不同.例:用戶定義的軟件中斷就是一種陷井。這與中斷引起的處理方法一樣返回什么是陷井?陷井(Traps)是在引起異常的指令執(zhí)行之后才被什么是終止?中止(Abort)是一種不能確定引起異常指令確切位置的異常(有時(shí)稱為夭折或失?。?。例:協(xié)處理器段溢出,原來(lái)的程序無(wú)法再執(zhí)行下去,因此服務(wù)程序往往重新啟動(dòng)操作系統(tǒng),運(yùn)行某些軟件時(shí),經(jīng)常會(huì)莫名其妙地自動(dòng)啟動(dòng)系統(tǒng),這就是所謂的中止異常引起的。

返回什么是終止?中止(Abort)是一種不能確定引起異常指令確切二、中斷分類(內(nèi)部中斷和外部中斷)返回二、中斷分類(內(nèi)部中斷和外部中斷)返回內(nèi)部中斷或異常1.失效異常2.陷井異常3.中止異常中斷分類圖內(nèi)部中斷或異常1.失效異常中斷分類圖主要失效異常除法出錯(cuò)、調(diào)試異常、界限檢查、無(wú)效操作碼、協(xié)處理器不存在、無(wú)效TSS、段不存在、堆棧段溢出、一般性保護(hù)錯(cuò)、頁(yè)面出錯(cuò)、協(xié)處理器錯(cuò)(僅80286)、機(jī)器檢查(Pentium~PentiumIII)等。返回主要失效異常除法出錯(cuò)、調(diào)試異常、界限檢查、無(wú)效操作碼、協(xié)處理主要陷井異常系統(tǒng)中的主要陷井異常包括單步陷井、斷點(diǎn)異常、溢出以及中斷指令I(lǐng)NTn等。中斷分類圖返回主要陷井異常系統(tǒng)中的主要陷井異常包括單步陷井、斷點(diǎn)異常、溢出主要中止異常系統(tǒng)中的主要中止異常包括雙重故障(在執(zhí)行一個(gè)異常處理程序中又出現(xiàn)另一個(gè)異常)、協(xié)處理器段溢出等。重新啟動(dòng)系統(tǒng),結(jié)束任務(wù)廣義上講,異常屬于內(nèi)部中斷

中斷分類圖返回主要中止異常系統(tǒng)中的主要中止異常包括雙重故障(在執(zhí)行一個(gè)異常外部中斷1.不可屏蔽中斷(NMI)2.可屏蔽中斷(INTR)3.中斷和異常功能表

中斷分類圖外部中斷1.不可屏蔽中斷(NMI)中斷分類圖不可屏蔽中斷含義:不能用軟件來(lái)控制是否允許中斷的一種外部中斷。常見(jiàn)NMI中斷(中斷類型號(hào)規(guī)定為2)有:

(1)電源掉電

(2)存儲(chǔ)器檢驗(yàn)出錯(cuò)

(3)總線奇偶錯(cuò)等。中斷分類圖返回見(jiàn)P271表不可屏蔽中斷含義:不能用軟件來(lái)控制是否允許中斷的一種外部中斷可屏蔽中斷含義:可用軟件控制是否允許中斷的外部中斷。即STI使IF=1,允許中斷;CLI使IF=0,禁止中斷。常見(jiàn)INTR中斷有:

所有外部設(shè)備中斷如鍵盤(pán)、鼠標(biāo)、打印機(jī)、顯示器、聲卡、CD-ROM等中斷分類圖返回可屏蔽中斷含義:可用軟件控制是否允許中斷的外部中斷。即STI中斷和異常功能表處理器對(duì)應(yīng)的中斷/異常類型及功能如Page271表7.1所示。表中列出了16位處理器8086~20286及32位處理器80386~Pentium4對(duì)應(yīng)的中斷或異常類型、

功能及在實(shí)地址方式下的中斷向量存放的內(nèi)存地址。

Intel保留了前32個(gè)(00H~20H)中斷向量供處理器使用,后面的20H~FFH供用戶使用。保留的中斷用于系統(tǒng)功能。對(duì)于80286~Pentium4處理器,異常1~6、7、9、16和17可用于實(shí)方式和保護(hù)方式,而其余異常僅適用于保護(hù)方式。

中斷和異常功能表處理器對(duì)應(yīng)的中斷/異常類型及功能如Page中斷和異常功能表對(duì)于某一個(gè)類型號(hào)而言(如08H~0FH),為區(qū)分是INTR引腳引起的外部中斷,還是內(nèi)部引起的異常,在處理之前,要判斷出錯(cuò)代碼中的EXT位,如果EXT=1則執(zhí)行外部中斷處理程序,EXT=0執(zhí)行異常處理程序。

中斷和異常功能表對(duì)于某一個(gè)類型號(hào)而言(如08H~0FH),為出錯(cuò)代碼對(duì)于內(nèi)部異常引起的中斷,系統(tǒng)引入了異常出錯(cuò)代碼,出錯(cuò)代碼在CPU響應(yīng)中斷或異常時(shí)隨斷點(diǎn)地址之后被壓入堆棧保護(hù)。異常出錯(cuò)代碼為32位(80386~Pentium4),只有低16位有效,最低位(D0)為EXT,為1時(shí)表示是外部中斷引起的,為0表示內(nèi)部異常引起的,次低位(D1)IDT為1時(shí)表示訪問(wèn)IDT表,為0表示訪問(wèn)GDT或LDT表,

D2位TI為1表示訪問(wèn)GDT表,為0表示訪問(wèn)LDT表,D15~D3為IDT、GDT或LDT的索引值(同選擇子中的索引),D31~D16未用。

返回出錯(cuò)代碼對(duì)于內(nèi)部異常引起的中斷,系統(tǒng)引入了異常出錯(cuò)代碼,出錯(cuò)三、實(shí)方式與保護(hù)方式下的中斷1.術(shù)語(yǔ)及概念2.實(shí)方式下中斷服務(wù)程序入口地址3.保護(hù)方式下中斷服務(wù)程序入口地址*4.保護(hù)方式與實(shí)方式中斷主要區(qū)別三、實(shí)方式與保護(hù)方式下的中斷1.術(shù)語(yǔ)及概念術(shù)語(yǔ)及概念中斷類型號(hào)中斷向量中斷向量表中斷描述符中斷描述符表術(shù)語(yǔ)及概念中斷類型號(hào)中斷類型號(hào)中斷類型號(hào):中斷類型的唯一編號(hào)。01H,05H…(與IRQ0~IRQ10中斷號(hào)不是一個(gè)意思)數(shù)量:256個(gè)。(包括外部中斷和內(nèi)部中斷或異常)

編號(hào):0~255。適用范圍:8086~Pentium4(各種工作方式)返回中斷類型號(hào)中斷類型號(hào):中斷類型的唯一編號(hào)。01H,05H…(中斷向量(實(shí)地址方式)含義:

中斷服務(wù)程序的入口地址(CS:IP)組成及格式:

共4個(gè)字節(jié),段地址及偏移地址各兩個(gè)字節(jié)。返回中斷向量(實(shí)地址方式)含義:

中斷服務(wù)程序的入口地址(CS:中斷向量表含義:存放256個(gè)中斷向量的內(nèi)存區(qū)域。即存放

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論