資源描述:
《第8章 中斷系統(tǒng)(南通大學(xué))(陳繼紅)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、第8章中斷系統(tǒng)8.1概述8.280X86中斷系統(tǒng)8.3中斷控制器8259A8.1概述8.1.1中斷的基本概念1.中斷和中斷源所謂“中斷”是指CPU中止正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行請求CPU為之服務(wù)的內(nèi)、外部事件的服務(wù)程序,待該服務(wù)程序執(zhí)行完后,又返回到被中止的程序中繼續(xù)運(yùn)行的過程。引起CPU中斷的事件稱為“中斷源”。常見的中斷源有:⑴外部設(shè)備的請求,如CRT終端、鍵盤、打印機(jī)等;⑵由硬件故障引起的,如電源掉電,硬件損壞等;⑶實(shí)時(shí)時(shí)鐘,如定時(shí)器芯片等;⑷由軟件引起的,如程序錯(cuò)、運(yùn)算錯(cuò)、為調(diào)試程序而設(shè)置的斷點(diǎn)等。8.1.2中斷處理過程1.中斷請求2.中斷判優(yōu)3.中斷響應(yīng)2.中斷系統(tǒng)的
2、功能:⑴能實(shí)現(xiàn)中斷響應(yīng)、中斷服務(wù)及中斷返回。⑵能實(shí)現(xiàn)中斷優(yōu)先權(quán)排隊(duì)⑶能實(shí)現(xiàn)中斷嵌套通常中斷響應(yīng)的操作過程應(yīng)包括(由硬件實(shí)現(xiàn)):保留斷點(diǎn)地址關(guān)閉中斷允許(關(guān)中斷)轉(zhuǎn)入中斷服務(wù)程序4.中斷處理(由中斷服務(wù)程序完成)開中斷*(弱允許中斷嵌套)保護(hù)現(xiàn)場完成中斷服務(wù)恢復(fù)現(xiàn)場5.中斷返回8.1.3中斷優(yōu)先級(jí)(優(yōu)先權(quán))1.軟件查詢方式2.鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)(菊花鏈法)3.可編程中斷控制器中斷控制器是集中斷請求、中斷屏蔽、中斷判優(yōu)、中斷源類型碼提供等功能于一身的專用大規(guī)模集成芯片。采用可編程中斷控制器是當(dāng)前微型計(jì)算機(jī)中解決中斷的最常用方案。Intel公司的8259A,就是具有上述功能的可編程中斷
3、控制器。8.280x86中斷系統(tǒng)80x86的中斷系統(tǒng)可處理256種個(gè)中斷源。這些中斷源可分為兩大類:外部中斷(硬件中斷)內(nèi)部中斷(軟件中斷)8.2.1外部中斷(硬件中斷)1、可屏蔽中斷INTR受CPU中斷允許標(biāo)志位IF的控制,即IF=1時(shí),CPU才能響應(yīng)INTR引腳上的中斷請求。復(fù)習(xí):CLI功能:IF0STIIF1當(dāng)可屏蔽中斷被響應(yīng),CPU需執(zhí)行7個(gè)總線周期,才轉(zhuǎn)入中斷服務(wù)程序。即:(1)在第一個(gè)總線周期內(nèi)通知外部中斷系統(tǒng)CPU已響應(yīng);(2)在第二個(gè)總線周期,從中斷源讀取中斷類型號(hào);(3)執(zhí)行一個(gè)總線寫周期,將標(biāo)志寄存器內(nèi)容壓棧,同時(shí)使IF為0,TF為0;(4)執(zhí)行一個(gè)總線寫
4、周期,把CS內(nèi)容壓棧;(5)執(zhí)行一個(gè)總線寫周期,把當(dāng)前IP內(nèi)容壓棧;;(6)執(zhí)行一個(gè)總線讀周期,從中斷向量表中讀取中斷服務(wù)程序的偏移地址并送IP;(7)執(zhí)行一個(gè)總線讀周期,從中斷向量表中讀取中斷服務(wù)程序的段地址并送CS。2、非屏蔽中斷非屏蔽中斷NMI信號(hào)連到CPU的NMI引腳,它不受CPU中斷允許標(biāo)志位IF的控制;中斷類型號(hào)為2;PC機(jī)系統(tǒng)中,NMI被用于檢查系統(tǒng)RAM的奇偶錯(cuò),或I/O通道中擴(kuò)展選件板上的奇偶校驗(yàn)錯(cuò)等。8.2.2內(nèi)部中斷(軟件中斷)除法錯(cuò)中斷:執(zhí)行除法指令時(shí),若除數(shù)為0或商超過寄存器所能表達(dá)的范圍,則CPU立即產(chǎn)生一個(gè)中斷類型號(hào)為0的中斷。溢出中斷:如果上一
5、條指令使溢出標(biāo)志位OF為1,則執(zhí)行INTO指令產(chǎn)生中斷,溢出中斷的中斷類型號(hào)為4。INTn指令中斷:在執(zhí)行中斷指令I(lǐng)NTn時(shí)產(chǎn)生的一個(gè)中斷類型號(hào)為n的內(nèi)部中斷。單步中斷:當(dāng)單步標(biāo)志(陷阱標(biāo)志)TF置“1”時(shí),80x86處于單步工作方式。在單步工作時(shí),每執(zhí)行完一條指令,CPU自動(dòng)產(chǎn)生中斷類型號(hào)為1的中斷。斷點(diǎn)中斷:斷點(diǎn)中斷是80x86提供的一種調(diào)試程序的手段。用于設(shè)置程序中的斷點(diǎn),中斷類型號(hào)為3。中斷優(yōu)先級(jí)(由高到低):除法錯(cuò)、溢出、INTn指令、斷點(diǎn)中斷非屏蔽中斷可屏蔽中斷INTR單步中斷8086CPU對中斷處理可用以下流程圖表示8086中斷響應(yīng)過程8.2.3中斷向量表中斷向
6、量表是存放中斷服務(wù)程序入口地址的表格。它存放于系統(tǒng)內(nèi)存的最低端,共1024個(gè)字節(jié),每4個(gè)字節(jié)存放一個(gè)中斷服務(wù)程序的入口地址。CPU響應(yīng)中斷后,將中斷類型號(hào)×4,在中斷向量表中“查表”得到中斷服務(wù)程序入口地址,分別送CS和IP,從而轉(zhuǎn)入中斷服務(wù)程序。中斷服務(wù)入口地址表(中斷向量表)INT類型物理地址邏輯地址INT00(除法錯(cuò))00000H0000:0000INT01(單步)00004H0000:0004INT02(NMI)00008H0000:0008INT03(斷點(diǎn))0000CH0000:000CINT04(溢出)00010H0000:0010INT0500014H0000:
7、0014………………INTFF003FCH0000:03FC設(shè)置中斷向量的方法:1、將中斷服務(wù)程序的入口地址直接寫入中斷向量表中的相應(yīng)單元MOVAX,0000HMOVDS,AXMOVSI,中斷類型號(hào)*4MOVAX,中斷服務(wù)程序偏移地址MOV[SI],AXMOVAX,中斷服務(wù)程序段地址MOV[SI+2],AX2、二是利用DOS功能調(diào)用完成中斷向量的設(shè)置中斷向量設(shè)置(DOS功能調(diào)用INT21H)功能號(hào):AH=25H入口參數(shù):AL=中斷類型號(hào),DS:DX=中斷向量(段地址:偏移地址)獲取中斷向量(DOS功能調(diào)