版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章中斷和異常7.1概述
7.2中斷
7.3異常
7.4中斷及異常的暫時(shí)屏蔽
7.5中斷及異常的優(yōu)先級(jí)
7.6實(shí)方式下的中斷
7.7保護(hù)方式下的中斷和異常
7.8中斷優(yōu)先級(jí)管理器8259APIC7.1概述圖7.1中斷過(guò)程圖7.2微處理器3種中斷技術(shù)示意圖(a)單線中斷;(b)多級(jí)中斷;(c)矢量中斷
在單線中斷技術(shù)中,多個(gè)外設(shè)的中斷請(qǐng)求必須用“或”邏輯連接在一起,共同接到微處理器的一條中斷請(qǐng)求線上。由于共用一條中斷請(qǐng)求線,以下幾個(gè)問(wèn)題須予以解決:
(1)中斷源的識(shí)別。所謂中斷源是指引起中斷的原因或發(fā)出中斷申請(qǐng)的來(lái)源。當(dāng)中斷請(qǐng)求信號(hào)INTR有效時(shí),CPU必須判斷是哪一個(gè)中斷源發(fā)出的中斷請(qǐng)求,這就是中斷源的識(shí)別問(wèn)題。
(2)中斷請(qǐng)求的優(yōu)先權(quán)排隊(duì)問(wèn)題。當(dāng)有多個(gè)中斷源同時(shí)請(qǐng)求中斷時(shí),需根據(jù)輕重緩急先后次序予以處理,這就是優(yōu)先權(quán)排隊(duì)問(wèn)題。
(3)中斷的多級(jí)嵌套。在優(yōu)先權(quán)級(jí)別較低的中斷源被服務(wù)時(shí),允許比它優(yōu)先級(jí)別高的中斷源請(qǐng)求中斷。
在多級(jí)中斷技術(shù)中,微處理器有幾條優(yōu)先級(jí)別不同的中斷請(qǐng)求線,若每一個(gè)中斷源都有其對(duì)應(yīng)的一條中斷請(qǐng)求線,則發(fā)生中斷時(shí),微處理器就能識(shí)別中斷源及其優(yōu)先級(jí)別。這種中斷技術(shù)的中斷響應(yīng)速度快,結(jié)構(gòu)簡(jiǎn)單,但受微處理器封裝引腳數(shù)的限制,通常為2~3條,最多也不過(guò)5~6條。例如8085-CPU有5條中斷請(qǐng)求線,而80X86系列CPU有2條中斷請(qǐng)求線。在矢量(亦稱向量)中斷技術(shù)中,由每個(gè)中斷源(經(jīng)接口)向CPU提供中斷源的設(shè)備標(biāo)志碼,將程序轉(zhuǎn)向相應(yīng)中斷源設(shè)備的中斷處理程序,或中斷源提供中斷處理程序的入口地址。由于矢量中斷不需要查詢中斷源,故中斷處理速度較快。
異常是在指令執(zhí)行期間檢測(cè)到的不正常的或非法的狀態(tài),使指令不能成功執(zhí)行。它與所執(zhí)行指令有直接的聯(lián)系。例如指令執(zhí)行期間檢測(cè)到段異?;蝽?yè)異常時(shí),指令便不能執(zhí)行下去。異常的發(fā)生源于微處理器內(nèi)部,且總是與微處理器操作同步。因而,通常將軟中斷指令I(lǐng)NTn及INT0等也歸類于異常。此外,排錯(cuò)機(jī)制也是異常的一個(gè)例子。處理器對(duì)中斷和異常的處理通常在兩條指令之間進(jìn)行。當(dāng)執(zhí)行一條帶重復(fù)前綴的串操作指令時(shí),為保證處理器對(duì)中斷的及時(shí)響應(yīng),80386等設(shè)計(jì)成每條串指令都允許在每次重復(fù)操作后響應(yīng)中斷,且重復(fù)的串指令也允許報(bào)告一個(gè)異常,而不丟失已完成各步的結(jié)果。例如,一條帶重復(fù)前綴的查找指令,需要在300個(gè)字節(jié)中查找一個(gè)字符,在查找到250個(gè)字節(jié)時(shí),仍未找到給定字符,且產(chǎn)生異常。這時(shí)第250步是該指令成功執(zhí)行的最后一個(gè)執(zhí)行步。因而,產(chǎn)生異常時(shí),處理器將保存第250執(zhí)行步的指針及計(jì)數(shù)值。異常原因排除之后,便可恢復(fù)該指令的執(zhí)行,完成最后50個(gè)字節(jié)的查找操作80386、80486中,采用矢量中斷技術(shù),每種中斷或異常都有它自己的中斷矢量,用8位二進(jìn)制數(shù)表示。矢量號(hào)(或稱中斷類型號(hào))用來(lái)從中斷描述符表(保護(hù)虛地址方式時(shí))或中斷矢量表(實(shí)地址方式時(shí))中選擇給定中斷的處理程序首地址。80386及80486已將矢量號(hào)0~31分配給異常;中斷及軟中斷指令的矢量號(hào)可在0~255范圍內(nèi)選擇,但為避免與異常矢量號(hào)沖突,最好在32~255的范圍內(nèi)選擇。7.2中斷7.2.1可屏蔽中斷經(jīng)由INTR信號(hào)(高電平有效)請(qǐng)求的中斷稱為可屏蔽中斷。它受中斷允許標(biāo)志位IF的影響和控制。當(dāng)IF被軟件采用STI指令置1時(shí),表明可屏蔽中斷被允許,CPU響應(yīng)可屏蔽中斷。當(dāng)IF被軟件采用CLI指令置0時(shí),表明可屏蔽中斷被禁止,CPU不響應(yīng)可屏蔽中斷,并將該中斷信號(hào)掛起,直到IF被置位或外部事件撤消中斷請(qǐng)求為止。IF位可禁止可屏蔽中斷的這一特性可用來(lái)在程序代碼的某一特定區(qū)域(常稱為程序的臨界區(qū))設(shè)置成禁止中斷,以保證該區(qū)域內(nèi)程序段的可靠執(zhí)行。80X86系統(tǒng)中,可屏蔽中斷源產(chǎn)生的中斷請(qǐng)求信號(hào),通常通過(guò)8259A可編程中斷控制器進(jìn)行優(yōu)選權(quán)控制后,由8259A向CPU送中斷請(qǐng)求信號(hào)INTR和中斷標(biāo)識(shí)碼(中斷矢量)。采用9個(gè)8259A芯片,可支持64個(gè)中斷源,給每個(gè)中斷源分配不同的中斷矢量,并可對(duì)每個(gè)中斷源分配和判斷它們的中斷優(yōu)先級(jí)。7.2.2非屏蔽中斷經(jīng)由NMI信號(hào)線(邊沿觸發(fā))請(qǐng)求的中斷稱為非屏蔽中斷。它是不被IF禁止的中斷。非屏蔽中斷被響應(yīng)時(shí),其中斷矢量號(hào)不由外部中斷源提供,而是由系統(tǒng)固定分配。80X86系統(tǒng)中,非屏蔽中斷的矢量號(hào)為2,它的優(yōu)先級(jí)別高于可屏蔽中斷,但當(dāng)正執(zhí)行加載SS寄存器指令時(shí)產(chǎn)生NMI信號(hào),則中斷要等其后的指令執(zhí)行完才能識(shí)別和響應(yīng)。非屏蔽中斷通常用來(lái)處理應(yīng)急事件,如總線奇偶錯(cuò)、電源故障或電網(wǎng)掉電等。7.3異常7.3.1異常分類產(chǎn)生異常后,系統(tǒng)根據(jù)引起異常的程序是否可被恢復(fù)這一原則,進(jìn)一步又把異常分為故障(Fault)、陷阱(Trap)和中止(Abort)3類。故障是引起該故障的程序可被恢復(fù)執(zhí)行的異常,它也是在引起故障的指令執(zhí)行之前就報(bào)告給系統(tǒng)的一種異常。對(duì)故障的檢測(cè),既可在引起故障的指令之前進(jìn)行,也可在微處理器恢復(fù)成故障指令執(zhí)行之前的狀態(tài)時(shí)進(jìn)行。一旦故障被檢測(cè)出,便在保護(hù)斷點(diǎn)地址(指向引起故障的指令)后,將程序轉(zhuǎn)入故障處理程序。故障處理程序執(zhí)行完,故障也排除了,這樣由IRET指令將程序返回有故障的程序時(shí),引起故障的指令便得以正確執(zhí)行。
陷阱是在指令執(zhí)行期間被檢測(cè)到的,并在引起異常的指令執(zhí)行之后向系統(tǒng)報(bào)告的一種異常。陷阱產(chǎn)生后,程序轉(zhuǎn)向異常處理程序,這時(shí),保存的斷點(diǎn)地址指向引起陷阱的指令的下一條應(yīng)該執(zhí)行的指令。這里,下一條應(yīng)該執(zhí)行的指令不一定就是下一條指令。例如,若一個(gè)陷阱在一條轉(zhuǎn)移類指令執(zhí)行期間檢測(cè)到,則保存在棧中的斷點(diǎn)地址將指向要轉(zhuǎn)移到的地址,而不是轉(zhuǎn)移類指令之后的下一條指令的地址。
特別需要指出,軟件中斷指令I(lǐng)NTn屬于陷阱指令。該指令執(zhí)行后使程序轉(zhuǎn)入陷阱處理程序,斷點(diǎn)地址指向下一條指令。中止是微處理器面臨嚴(yán)重錯(cuò)誤時(shí)產(chǎn)生的異常。例如,系統(tǒng)出現(xiàn)硬件錯(cuò)誤或系統(tǒng)表中出現(xiàn)非法值或不一致的值時(shí),便產(chǎn)生中止異常。引起中止的指令無(wú)法確定,產(chǎn)生中止時(shí),正執(zhí)行的程序不能被恢復(fù)。因而,產(chǎn)生中止異常后,系統(tǒng)需重建各種系統(tǒng)表格,或需重新啟動(dòng)操作系統(tǒng)。7.3.2異常錯(cuò)誤碼圖7.3異常錯(cuò)誤碼格式
錯(cuò)誤碼的格式類似于選擇器格式,區(qū)別僅在于選擇器中的RPL域在此被兩個(gè)1位域替代了。其中位0定義為EXT域,EXT=1,表示錯(cuò)誤由程序的外部事件(如硬件中斷)引起;EXT=0,表示異常由程序引起。位1定義為IDT域,IDT=1,表明錯(cuò)誤碼索引域引出的描述符屬于中斷描述符中的門描述符;IDT=0,表明索引域的意義取決于TI域。位2定義為表索引域TI,TI=1,表明索引域指向局部描述符表LDT;TI=0,表明索引域指向全局描述符表GDT。位3~位15為索引域。索引域與TI組合成一個(gè)14位指針,指向與異常相關(guān)的表項(xiàng)。
80386、80486產(chǎn)生頁(yè)交換異常時(shí),采用不同格式的錯(cuò)誤碼。7.3.3處理器定義的異常
所謂處理器定義的異常是80X86處理器中保留自用的異常,共有16個(gè)。
1.異常0
異常0定義為除法出錯(cuò)異常,是一種故障型異常。當(dāng)微處理器執(zhí)行除法指令時(shí),若商太大使目的寄存器容納不下,或是以零作除數(shù),便產(chǎn)生該故障異常。異常0產(chǎn)生時(shí),將除法指令(包括任何前綴)第一字節(jié)地址壓入棧中,除數(shù)和被除數(shù)為除法指令執(zhí)行前的值,并允許除法操作在故障處理程序執(zhí)行完后重新啟動(dòng)。除法出錯(cuò)不提供出錯(cuò)碼。
2.異常1
異常1定義為排錯(cuò)異?;蚍Q調(diào)試異常。排錯(cuò)異常有故障類的也有陷阱類的,其中的單步異常為陷阱。若TF=1,則微處理器處于單步方式。當(dāng)一個(gè)調(diào)試異常產(chǎn)生時(shí),微處理器設(shè)置調(diào)試狀態(tài)寄存器DR6的相應(yīng)位,以便反映異常的類型或引起異常的斷點(diǎn)。位于0特權(quán)級(jí)的排錯(cuò)處理程序可以訪問(wèn)DR6。在一條指令中,可以檢測(cè)不止一個(gè)排錯(cuò)異常并使DR6中同時(shí)有幾個(gè)位置1。排錯(cuò)異常不提供出錯(cuò)碼。3.異常3
異常3為斷點(diǎn)中斷,是一個(gè)采用單字節(jié)指令I(lǐng)NT3的軟件中斷,微處理器將作為一個(gè)陷阱異常來(lái)處理。排錯(cuò)程序用INT3來(lái)支持程序斷點(diǎn),并在轉(zhuǎn)入斷點(diǎn)處理程序時(shí),壓入棧中的CS及EIP值指向緊跟在INT3指令的一條指令。INT3陷阱不提供出錯(cuò)碼。4.異常4
異常4定義為溢出陷阱。溢出陷阱由INTO指令通過(guò)矢量4提供一個(gè)條件陷阱。若EFLAGS中的OF=1,則INTO指令產(chǎn)生陷阱;若OF=0,則不產(chǎn)生陷阱,繼續(xù)執(zhí)行INT0后邊的指令。當(dāng)溢出陷阱產(chǎn)生,轉(zhuǎn)入溢出處理程序時(shí),壓入棧中的CS及EIP值指向INT0的下一條指令。溢出陷阱不提供出錯(cuò)碼。5.異常5
異常5定義為邊界檢查故障。若傳送給BOUND指令的操作數(shù)表明給定的索引指針要落到可能的數(shù)組邊界以外時(shí),便發(fā)生邊界檢查故障。在轉(zhuǎn)入故障處理程序時(shí),壓入棧中的CS及EIP值指向發(fā)生故障的BOOND指令。邊界檢查故障不提供出錯(cuò)碼。6.異常6
異常6定義為無(wú)效操作碼故障。從當(dāng)前CS及EIP所指定的位置開始,若連續(xù)一個(gè)字節(jié)或多個(gè)字節(jié)所包含的內(nèi)容不是80386(或80486等)指令系統(tǒng)中的任何一條指令,便發(fā)生無(wú)效操作碼故障。無(wú)效操作碼故障發(fā)生在試圖執(zhí)行該操作碼時(shí),而不是預(yù)取時(shí)。引起該故障的原因有3種:①操作碼字段的內(nèi)容不是一個(gè)合法的指令代碼;②指令要求使用存儲(chǔ)器操作數(shù)時(shí),卻使用了寄存器操作數(shù);③不能加鎖的指令使用了LOCK前綴。
7.異常7
異常7定義為協(xié)處理器無(wú)效故障。80386、80486微處理器中,如果在一條ESC指令執(zhí)行期間,控制寄存器CR0中的模擬位EM(Emulate)被置位,便會(huì)發(fā)生該故障;如果WAIT或ESC指令執(zhí)行時(shí),CR0中的監(jiān)控處理器擴(kuò)展位MP或任務(wù)轉(zhuǎn)換位TS置位,也會(huì)產(chǎn)生異常7。協(xié)處理無(wú)效故障也不提供錯(cuò)誤碼。8.異常8
異常8定義為雙重故障。雙重故障屬中止異常。當(dāng)轉(zhuǎn)入雙重故障處理程序時(shí),壓入棧中的CS及EIP值不可能指向引起雙重故障的指令,而且指令的重新啟動(dòng)不支持雙重故障。雙重故障出現(xiàn)在系統(tǒng)出現(xiàn)嚴(yán)重問(wèn)題時(shí),如段描述符表、頁(yè)表或中斷描述符表出現(xiàn)問(wèn)題等。如果正通知給系統(tǒng)一個(gè)段或頁(yè)故障時(shí),又檢測(cè)到一個(gè)段故障;或者正通知給系統(tǒng)一個(gè)頁(yè)故障時(shí)又檢測(cè)到一個(gè)段或頁(yè)故障,兩種情況都會(huì)引起雙重故障。然而,若正通知給系統(tǒng)一個(gè)段故障時(shí)又檢測(cè)到一個(gè)頁(yè)故障,這時(shí)通知給系統(tǒng)的是頁(yè)故障而不是雙重故障。如果正通知系統(tǒng)一個(gè)雙重故障,又檢測(cè)到一個(gè)段或頁(yè)故障,則處理機(jī)暫停指令的執(zhí)行,進(jìn)入關(guān)機(jī)方式。這時(shí)好像執(zhí)行了一條HLT指令,使微處理器空轉(zhuǎn),直到一個(gè)非屏蔽中斷發(fā)生或微處理器重新啟動(dòng)為止。關(guān)機(jī)方式下,微處理器不響應(yīng)INTR中斷,雙重故障不提供錯(cuò)誤碼。
9.異常9
異常9定義為協(xié)處理器段越界異常,屬于中止類異常,發(fā)生在浮點(diǎn)指令數(shù)超出段界限時(shí)。當(dāng)轉(zhuǎn)入異常處理程序時(shí),壓入棧中的CS及EIP指向被中止的指令。然而,由于引起協(xié)處理器段越界指令不能被重新啟動(dòng),即每次執(zhí)行該指令總得到同樣結(jié)果,故該異常是一種中止類異常。但是這種中止僅指正執(zhí)行的程序的中止,而非系統(tǒng)的中止。協(xié)處理器段越界異常不提供錯(cuò)誤碼。80486中該異常未用,而用異常13取而代之。10.異常10
異常10定義為無(wú)效TSS故障。任務(wù)切換期間,如果新任務(wù)的TSS是一個(gè)非法的任務(wù)狀態(tài)段(即發(fā)生除不存在異常以外的段異常時(shí)),便會(huì)產(chǎn)生無(wú)效TSS故障。該異常提供一個(gè)出錯(cuò)碼,以便指明引起異常的段的選擇子。出錯(cuò)碼中的EXT位用來(lái)表示異常是否由不受程序控制的外部事件引起。例如,一個(gè)外部中斷通過(guò)任務(wù)門進(jìn)行任務(wù)切換時(shí),可能產(chǎn)生非法TSS故障。當(dāng)無(wú)效TSS故障發(fā)生,轉(zhuǎn)入故障處理程序時(shí),壓入棧中的CS及EIP值指向引起這一故障的指令;而當(dāng)該故障作為任務(wù)切換的一部分發(fā)生時(shí),則指向任務(wù)切換的第一條指令。11.異常11
異常11定義為段不存在異常,屬故障類型。微處理器訪問(wèn)除SS以外的其它有效的段描述符時(shí),若發(fā)現(xiàn)描述符中存在位P=0,便產(chǎn)生段不存在異常。該異常提供一個(gè)出錯(cuò)碼,以便指明引起異常的段的選擇子。如果該異常由外部事件引起,錯(cuò)誤碼中的EXT位置1;如果錯(cuò)誤碼涉及中斷描述符表項(xiàng),則IDT位置1。當(dāng)段不存在故障發(fā)生,轉(zhuǎn)入故障處理程序時(shí),壓入棧中的CS及EIP值指向引起這一故障的指令,或當(dāng)該故障作為任務(wù)切換的一部分發(fā)生時(shí),指向任務(wù)切換的第一條指令。12.異常12
異常12定義為棧段故障。棧段故障產(chǎn)生的主要原因是,棧上溢或下溢,或在任務(wù)間或級(jí)別間變換時(shí)訪問(wèn)一個(gè)存在位P=0的棧段。任何明顯或不明顯的訪問(wèn)棧的操作都可能引起該故障。例如,PUSH、POP、ENTER、LEAVE及MOVSI,[BP+6]等指令執(zhí)行時(shí),均有可能產(chǎn)生棧段故障。棧段故障提供一個(gè)錯(cuò)誤碼壓入故障處理程序的棧中。若故障由棧段不存在或級(jí)間調(diào)用時(shí)新棧的溢出引起,出錯(cuò)碼將指明引起故障的選擇器,并由故障處理程序檢查出錯(cuò)碼提供的選擇子所對(duì)應(yīng)的描述符的存在位來(lái)區(qū)分二者。若存在位P=1,則表明是新棧溢出引起的故障;若存在位P=0,則表明是棧段不存在引起的故障。對(duì)除此之外的其它棧段故障源均給出錯(cuò)誤碼0。13.異常13
異常13定義為通用保護(hù)故障。它是一種沒(méi)有預(yù)先分類的段異常,包含除已定義異常之外的所有異常。保護(hù)方式下產(chǎn)生的這種故障的情況舉例如下:①使用CS、DS、ES、FS、GS段寄存器時(shí)或是訪問(wèn)描述符時(shí)超出段的界限。②采用DS、ES、FS、GS段寄存器訪問(wèn)內(nèi)存時(shí),段寄存器中含有空選擇子。③用系統(tǒng)段或一個(gè)可執(zhí)行但不可讀的段的描述符來(lái)加載DS、ES、FS或GS段寄存器。④用一個(gè)只讀、可執(zhí)行段或系統(tǒng)段的描述符加載SS(但若失效選擇子來(lái)自任務(wù)切換時(shí)的TSS,則將產(chǎn)生異常10)。⑤試圖對(duì)只讀代碼段或數(shù)據(jù)段進(jìn)行寫操作,或?qū)χ粓?zhí)行段進(jìn)行讀操作,或?qū)Σ豢蓤?zhí)行段進(jìn)行執(zhí)行操作。⑥采用DS、ES、FS、GS段寄存器訪問(wèn)內(nèi)存時(shí),被訪問(wèn)內(nèi)存數(shù)據(jù)段的特權(quán)級(jí)高于當(dāng)前特權(quán)級(jí)。⑦切換到正忙的任務(wù)。⑧PG=1(頁(yè)交換允許)和PE=0(保護(hù)禁止)時(shí),加載CR0(僅對(duì)80386和80486)。⑨超出處理器指令長(zhǎng)度限制。14.異常14
異常14定義為頁(yè)故障。對(duì)80386/80486微處理器來(lái)說(shuō),若從線性地址到物理地址的轉(zhuǎn)換過(guò)程中,檢測(cè)到錯(cuò)誤,便產(chǎn)生頁(yè)故障。當(dāng)CR0中PG=1,允許分頁(yè)時(shí),如果需要地址變換的頁(yè)目錄或頁(yè)表項(xiàng)中的存在位P=0,或當(dāng)前任務(wù)的特權(quán)級(jí)別不足以存取指定的頁(yè),或用不適當(dāng)?shù)脑L問(wèn)類型訪問(wèn)一內(nèi)存頁(yè),都會(huì)產(chǎn)生頁(yè)故障。圖7.4頁(yè)交換失效錯(cuò)誤碼15.異常16
異常16定義為協(xié)處理器出錯(cuò)故障。當(dāng)CR0中EM位=0(協(xié)處理器未被模擬),且協(xié)處理器發(fā)生了未被屏蔽的數(shù)字錯(cuò)誤(如上溢或下溢)時(shí),便會(huì)產(chǎn)生協(xié)處理器出錯(cuò)故障。把協(xié)處理器出錯(cuò)故障通知給系統(tǒng),是在引起故障的浮點(diǎn)指令之后的下一條ESC協(xié)處理器指令或WAIT指令執(zhí)行時(shí)進(jìn)行。協(xié)處理器出錯(cuò)故障發(fā)生,轉(zhuǎn)入故障處理程序時(shí),壓入棧中的CS和EIP值指向引起錯(cuò)誤的ESC或WAIT指令的第一字節(jié)。該故障不提供出錯(cuò)碼,引起故障的指令的地址由協(xié)處理器保存。表7.1異常一覽表7.4中斷及異常的暫時(shí)屏蔽
中斷及排錯(cuò)異常在某些條件下可被忽略或屏蔽。這時(shí),被屏蔽的各種中斷保持懸掛,而排錯(cuò)異常則被廢棄。引起中斷和排錯(cuò)異常忽略及屏蔽的條件如下:①EFLAGS中的IF=0,屏蔽外部可屏蔽中斷。②IF=0時(shí),執(zhí)行STI指令,則在STI指令及下面一條指令執(zhí)行期間,屏蔽外部可屏蔽中斷。這是因?yàn)橐粋€(gè)過(guò)程執(zhí)行完返回主程序前執(zhí)行一條STI指令,允許可屏蔽中斷發(fā)生,但希望在IRET指令執(zhí)行完返回主程序后再響應(yīng)中斷。否則,若在IRET指令執(zhí)行前響應(yīng)中斷,就會(huì)使過(guò)程不能返回,且過(guò)多占用堆棧。③EFLAGS中的RF=1,屏蔽排錯(cuò)故障。④系統(tǒng)正處理一個(gè)非屏蔽外部中斷,則屏蔽任何新的非屏蔽中斷。⑤執(zhí)行以SS為目的寄存器的MOV及POP指令時(shí),將在該指令及下面一條指令(常是以ESP為目的寄存器的MOV及POP指令)執(zhí)行期間屏蔽各種中斷及排錯(cuò)異常。這樣便可安全完整地更新一個(gè)棧指針。⑥在指令前綴LOCK及被鎖定的指令之間不允許中斷。7.5中斷及異常的優(yōu)先級(jí)表7.2中斷/異常的優(yōu)先級(jí)7.6實(shí)方式下的中斷圖7.5實(shí)方式的中斷向量表圖7.6可屏蔽中斷的響應(yīng)和處理過(guò)程(1)CPU要響應(yīng)可屏蔽中斷請(qǐng)求,必須滿足一定的條件,即中斷允許標(biāo)志置1(IF=1),沒(méi)有異常,沒(méi)有非屏蔽中斷(NMI=0),沒(méi)有總線請(qǐng)求。
(2)當(dāng)某一外部設(shè)備通過(guò)其接口電路中斷控制器8259A發(fā)出中斷請(qǐng)求信號(hào)時(shí),經(jīng)8259A處理后,得到相應(yīng)的中斷矢量號(hào),并同時(shí)向CPU申請(qǐng)中斷(INT=1)。(3)如果現(xiàn)行指令不是HLT或WAIT指令,則CPU執(zhí)行完當(dāng)前指令后便向8259A發(fā)出中斷響應(yīng)信號(hào)(INTA=0),表明CPU響應(yīng)該可屏蔽中斷請(qǐng)求。若現(xiàn)行指令為HLT,則中斷請(qǐng)求信號(hào)INTR的產(chǎn)生使處理器退出暫停狀態(tài),響應(yīng)中斷,進(jìn)入中斷處理程序。若現(xiàn)行指令為WAIT指令,且TEST引腳加入低電平信號(hào),則中斷請(qǐng)求信號(hào)INTR產(chǎn)生后,便使處理器脫離等待狀態(tài),響應(yīng)中斷,進(jìn)入中斷處理程序。此外,對(duì)于加有前綴的指令,則在前綴與指令之間CPU不識(shí)別中斷請(qǐng)求;對(duì)于目標(biāo)地址是SS段寄存器的MOV和POP指令,則CPU在這些指令之后的一條指令執(zhí)行后方響應(yīng)中斷。(4)8259A連續(xù)兩次(2個(gè)總線周期)接收到INTA=0的中斷響應(yīng)信號(hào)后,便通過(guò)總線將中斷矢量號(hào)送CPU。
(5)保護(hù)斷點(diǎn)。將標(biāo)志寄存器內(nèi)容、當(dāng)前CS內(nèi)容及當(dāng)前EIP內(nèi)容壓入堆棧:(SP)←(SP)-2((SP)+1∶(SP))←(PSW)(SP)←(SP)-2((SP+1∶(SP))←(CS)(SP)←(SP)-2((SP)+1∶(SP))←(EIP)(6)清除IF及TF(IF←0,TF←0),以便禁止其它可屏蔽中斷或單步中斷發(fā)生。
(7)根據(jù)8259A向CPU送的中斷矢量號(hào)n求得中斷矢量,再查中斷矢量表,得相應(yīng)中斷處理程序首地址(段內(nèi)偏移地址和段地址),并將其分別置入EIP及CS中。(EIP)←(4*N)(CS)←(4*N+2)
一旦中斷處理程序的32位首地址置入CS及EIP中,程序就被轉(zhuǎn)入并開始執(zhí)行中斷處理程序。(8)中斷處理程序包括保護(hù)現(xiàn)場(chǎng)、中斷服務(wù)、恢復(fù)現(xiàn)場(chǎng)等部分。
(9)中斷處理程序執(zhí)行完畢,最后執(zhí)行一條中斷返回指令I(lǐng)RET,將原壓入堆棧的標(biāo)志寄存器內(nèi)容及斷點(diǎn)地址重又彈出至原處:(EIP)←((SP)+1∶(SP))(SP)←(SP)+2(CS)←((SP)+1∶(SP))(SP)←(SP)+2(PSW)←((SP)+1∶(SP))(SP)←(SP)+2圖7.7中斷處理流程圖可屏蔽中斷處理程序通常由用戶編寫為一個(gè)過(guò)程,一般格式如下:INTER1 PROCFARPUSHAX ;保護(hù)現(xiàn)場(chǎng)
PUSHBX
…
;中斷服務(wù)程序
STI;開中斷,以便允許多重中斷
…
;繼續(xù)執(zhí)行中斷服務(wù)程序
(發(fā)中斷結(jié)束命令)
…
POPBX;恢復(fù)現(xiàn)場(chǎng)
POPAXIRET;返回主程序INTER1ENDP
當(dāng)用戶使用類型n中斷時(shí),一方面將外設(shè)接口的中斷請(qǐng)求信號(hào)與8259A相應(yīng)引腳相連,另一方面要根據(jù)類型號(hào)n求出中斷矢量地址,并把中斷處理程序首地址(中斷矢量)送入矢量地址中,MOVAX,0;矢量表段址為0MOVES,AXMOVDI,n*4;矢量地址送DIMOVAX,OFFSETINTER1;中斷處理程序首地址存入表內(nèi)CLDCTOSWMOVAX,SEGINTER1STOSW
異常、軟件中斷及非屏蔽中斷的中斷矢量號(hào)或由CPU固定分配好或由INTn指令提供。因此,不需要外設(shè)提供類型碼(矢量號(hào))。當(dāng)轉(zhuǎn)入中斷處理程序時(shí),首先CPU按序?qū)LAGS、CS及EIP寄存器的內(nèi)容壓入棧中。壓入棧中的斷點(diǎn)地址(CS及EIP值)取決于中斷類型。若為陷阱,斷點(diǎn)地址為引起陷阱的指令的后面一條指令的第一字節(jié)地址。若為故障,則斷點(diǎn)地址為引起故障的指令的第一字節(jié)地址。然后,將FLAGS中的單步陷阱標(biāo)志TF和中斷標(biāo)志IF清零。最后,根據(jù)中斷矢量號(hào)查得中斷處理程序首地址,轉(zhuǎn)入中斷處理程序。實(shí)方式下產(chǎn)生的異常向棧壓入錯(cuò)誤碼。7.7保護(hù)方式下的中斷和異常圖7.8保護(hù)方式的中斷描述符表圖7.9中斷描述符格式7.7.1通過(guò)中斷門及陷阱門的轉(zhuǎn)移圖7.10通過(guò)中斷門或陷阱門的轉(zhuǎn)移圖7.11通過(guò)中斷門或陷阱門向內(nèi)層轉(zhuǎn)移7.7.2NT=0時(shí)的中斷(或異常)返回
中斷或異常處理程序執(zhí)行完時(shí),執(zhí)行一條IRET指令,完成向主程序的返回。若通過(guò)中斷門或陷阱門轉(zhuǎn)入處理程序,在轉(zhuǎn)入過(guò)程中已將NT清零,表明是同一任務(wù)內(nèi)的程序轉(zhuǎn)移。因而,NT=0時(shí)的中斷(或異常)返回屬同一任務(wù)的返回。然而,由于轉(zhuǎn)入中斷處理程序時(shí),可以轉(zhuǎn)入同級(jí)或更內(nèi)層的級(jí),故返回時(shí)是返回到同一級(jí)或外層級(jí)。7.7.3通過(guò)任務(wù)門的轉(zhuǎn)移系統(tǒng)產(chǎn)生某一中斷或異常時(shí),將該中斷或異常的矢量號(hào)乘以8后作為指針去檢索中斷描述符表IDT,若檢索到的描述符是一個(gè)任務(wù)門,則表示要轉(zhuǎn)移到不同任務(wù)的處理程序。與CALL指令通過(guò)任務(wù)門進(jìn)行任務(wù)切換一樣,任務(wù)門提供一個(gè)16位選擇子,以指向處理程序任務(wù)的TSS段。該TSS段必須是一個(gè)可用的286TSS段或386/486TSS段。通過(guò)任務(wù)門到一個(gè)可用的TSS段,轉(zhuǎn)入中斷或異常處理程序的過(guò)程,與CALL指令通過(guò)任務(wù)門到可用的TSS段,實(shí)現(xiàn)任務(wù)切換的過(guò)程相同。唯一不同的是中斷或異常通過(guò)任務(wù)門引起的任務(wù)切換和程序轉(zhuǎn)移提供錯(cuò)誤碼。在任務(wù)切換完成后,如有必要,應(yīng)將錯(cuò)誤碼壓入新任務(wù)的堆棧中。
如果中斷或異常發(fā)生時(shí),是通過(guò)任務(wù)門轉(zhuǎn)入處理程序,則在轉(zhuǎn)入過(guò)程中使EFLAGS中的NT位置1。這表明從處理程序返回主程序執(zhí)行IRET指令時(shí),必須返回到一個(gè)嵌套的任務(wù)。IRET指令應(yīng)從當(dāng)前TSS段的鏈接字段中索取返回到的任務(wù)的TSS的選擇子,從而完成任務(wù)切換和程序返回。7.8中斷優(yōu)先級(jí)管理器8259APIC7.8.18259A的內(nèi)部結(jié)構(gòu)及引腳信號(hào)圖7.128259A的結(jié)構(gòu)框圖圖7.138259A引腳圖7.8.28259A的編程對(duì)8259A的編程分兩步:第一步,在系統(tǒng)加電和復(fù)位后,用初始化命令字對(duì)8259A芯片進(jìn)行初始化編程;第二步,在操作階段,用操作命令字對(duì)8259A進(jìn)行操作過(guò)程編程,即實(shí)現(xiàn)對(duì)8259A的狀態(tài)、中斷方式和中斷響應(yīng)次序等的管理。這時(shí),一般不再發(fā)初始化命令字。1.初始化命令字及其編程共有4個(gè)初始化命令字ICW1~ICW4。(1)ICW1命令字。命令字格式如下:×××1LTIM×SNGLIC4D7D6D5D4D3D2D1D0
其中×表示無(wú)關(guān)位,其余各位意義是:
LTIM用來(lái)設(shè)定中斷請(qǐng)求信號(hào)的有效形式。LTIM=1表示中斷請(qǐng)求信號(hào)IR0~IR7高電平有效;SNGL用來(lái)表明8259A是單片工作方式(SNGL=1),還是級(jí)聯(lián)工作方式(SNGL=0)。
IC4位為1表示后面還要設(shè)置初始化命令字ICW4;IC4為0表示不再設(shè)置ICW4。命令字中D4位為1表明該命令字是ICW1,是和其它命令字區(qū)別的標(biāo)志。
ICW1命令字由CPU向8259A寫入時(shí),寫入地址號(hào)是偶數(shù),即A0=0。(2)ICW2命令字。ICW2命令字用來(lái)設(shè)置中斷類型號(hào)基值。所謂中斷類型號(hào)基值是指0中斷源IR0所對(duì)應(yīng)的中斷類型號(hào),它一定是個(gè)可被8整除的正整數(shù),其格式如下:
T7T6T5T4T3000D7D6D5D4D3D2D1D0
當(dāng)8259A接收到CPU發(fā)回的中斷響應(yīng)信號(hào)INTA=0后,便通過(guò)數(shù)據(jù)總線向CPU送中斷類型號(hào)字節(jié)。該字節(jié)的高5位即為ICW2的高5位,低3位根據(jù)當(dāng)前CPU響應(yīng)的中斷是IR0~IR7中的哪一個(gè)而定,分別對(duì)應(yīng)000~111。
ICW2命令字設(shè)置時(shí)采用8259A的奇數(shù)地址,即A0=1。(3)ICW3命令字。ICW3命令字僅用于8259A級(jí)聯(lián)方式時(shí),指明主8259A的哪個(gè)中斷源(IR0~IR7中的一個(gè))與從8259A的INT引腳相連,也即指明從8259A的INT引腳和主8259A的哪一個(gè)中斷源請(qǐng)求信號(hào)(IR0~IR7中的一個(gè))相連。ICW3命令字設(shè)置時(shí)采用奇數(shù)地址,其格式如下:S7S6S5S4S3S2S1S0D7D6D5D4D3D2D1D0
主8259A00000ID2ID1ID0從8259A(4)ICW4命令字。圖7.14ICW4的格式及各位意義圖7.158259A初始化編程流程圖2.操作命令字及其編程在按規(guī)定的順序?qū)?259A置入初始化命令字后,8259A便處于準(zhǔn)備就緒狀態(tài),等待中斷源發(fā)來(lái)的中斷請(qǐng)求信號(hào),并處于完全嵌套中斷方式。若想變更8259A的中斷方式和中斷響應(yīng)次序,或想從8259A內(nèi)讀出某些寄存器內(nèi)容,就應(yīng)向8259A寫入操作命令字。操作命令字可在主程序中寫入,也可在中斷服務(wù)程序中寫入。
(1)8259A的中斷方式。8259A的中斷方式有5種:完全嵌套方式、循環(huán)優(yōu)先方式、特殊循環(huán)方式、特殊屏蔽方式和查詢方式。①完全嵌套方式。這是最基本的中斷方式。8259A在初始化編程后便處于這種方式。其特點(diǎn)是優(yōu)先級(jí)次序隨序號(hào)的遞增而變低,即IR0優(yōu)先級(jí)最高,IR1次之,而IR7優(yōu)先級(jí)最低。在完全嵌套方式、CPU開中斷情況下,執(zhí)行某中斷處理程序期間,不能響應(yīng)本級(jí)或較低級(jí)中斷,但能響應(yīng)較高級(jí)中斷。②自動(dòng)循環(huán)方式。這實(shí)際上是等優(yōu)先權(quán)方式。其特點(diǎn)是某一中斷請(qǐng)求被響應(yīng)后,該中斷級(jí)便自動(dòng)成為最低的中斷級(jí),其它中斷源的優(yōu)先級(jí)別也相應(yīng)循環(huán)改變,以使各中斷源被優(yōu)先響應(yīng)的機(jī)會(huì)相同,亦即優(yōu)先等級(jí)是輪流的。例如IR4請(qǐng)求的中斷結(jié)束后,自動(dòng)變?yōu)樽畹蛢?yōu)先級(jí),而相鄰的IR5請(qǐng)求的中斷級(jí)變?yōu)樽罡呒?jí),IR6請(qǐng)求的中斷變?yōu)榇胃呒?jí)……;IR5請(qǐng)求的中斷完成后,IR6請(qǐng)求的中斷變?yōu)樽罡呒?jí),IR7請(qǐng)求的中斷變?yōu)榇胃呒?jí)……。③指定最低級(jí)的循環(huán)排序方式。該方式也稱特殊循環(huán)方式。在這種方式下,能在主程序或服務(wù)程序中通過(guò)指定某中斷源的優(yōu)先級(jí)為最低級(jí),而其它中斷源的優(yōu)先級(jí)也隨之改變的方法,來(lái)改變各中斷源的優(yōu)先等級(jí)。例如指定IR4請(qǐng)求的中斷級(jí)為最低級(jí),則IR5請(qǐng)求的中斷便為最高級(jí),IR6請(qǐng)求的中斷為次高級(jí)……。④特殊屏蔽方式。該方式與完全嵌套方式的排序方法不同,除了用操作命令字OCW1屏蔽掉的中斷級(jí)和正在服務(wù)和中斷級(jí)外,允許其它任何級(jí)的中斷請(qǐng)求中斷正在服務(wù)的中斷。用這種方法可在程序的不同階段改變中斷級(jí)的優(yōu)先次序。⑤查詢法排序方式。該方式用查詢的方法響應(yīng)與8259A相連的8級(jí)中斷請(qǐng)求。采用該方式時(shí),8259A的INT引腳不用,或CPU處于關(guān)中斷狀態(tài),以便CPU不能響應(yīng)INT線上來(lái)的中斷請(qǐng)求。這時(shí)若要選擇最高優(yōu)先級(jí),必須先用操作命令字發(fā)查詢命令,然后再用輸入指令識(shí)別當(dāng)前有無(wú)中斷請(qǐng)求及優(yōu)先級(jí)最高的中斷請(qǐng)求。(2)中斷結(jié)束(EOI:EndofInterrupt)。這里中斷結(jié)束(EOI)是指對(duì)8259A內(nèi)部中斷服務(wù)寄存器ISR的對(duì)應(yīng)位復(fù)位的操作。這有兩種方法:自動(dòng)EOI方式和EOI命令方式。①自動(dòng)EOI方式。這是指在第二個(gè)INTA脈沖的后沿之后,由8259A自動(dòng)清除ISR中已置位的那些位中優(yōu)先級(jí)最高的位。這種自動(dòng)結(jié)束中斷方式只適用于非多重中斷的情況。因?yàn)樵谥袛囗憫?yīng)周期中已將該級(jí)的ISR位清除,因而8259A無(wú)法區(qū)別正在處理的中斷級(jí)等級(jí),也就無(wú)法響應(yīng)多重中斷。②EOI命令方式。該方式是在中斷服務(wù)程序末尾,向8259A發(fā)中斷結(jié)束命令,以便使ISR中和該服務(wù)程序?qū)?yīng)的位復(fù)位,表明服務(wù)程序已完。有兩種EOI命令:普通的EOI命令和特殊的EOI命令。普通的EOI命令自動(dòng)使ISR中已置位的中斷級(jí)中的最高級(jí)復(fù)位,也即結(jié)束當(dāng)前正在服務(wù)的中斷。它適用于完全嵌套方式。特殊的EOI命令用來(lái)使指定的中斷級(jí)結(jié)束,即命令字中特定的3位編碼指定ISR中某一位復(fù)位。這種命令字可使用于任何中斷方式。(3)操作命令字。8259A有③種操作命令字:OCW1,OCW2,OCW3。①OCW1操作命令字。該命令字用來(lái)設(shè)置中斷源的屏蔽狀態(tài),其格式為:M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0
Mi=1,表明相應(yīng)中斷源IRi的中斷請(qǐng)求被屏蔽,8259A不會(huì)產(chǎn)生發(fā)向CPU的INT信號(hào);Mi=0,表明相應(yīng)中斷源IRi的中斷請(qǐng)求未受屏蔽,可以產(chǎn)生發(fā)向CPU的INT信號(hào),請(qǐng)求CPU服務(wù)。設(shè)置OCW1的I/O地址是8259A的奇數(shù)號(hào)地址,即A0=1。此外,對(duì)同一地址的輸入指令將把OCW1設(shè)置的屏蔽字讀入CPU。②OCW2命令字。OCW2操作命令字用來(lái)控制中斷結(jié)束方式及修改優(yōu)先權(quán)管理方式,格式如下:RSLEOI00L2L1L0D7D6D5D4D3D2D1D0
OCW2的特征位是D4D3=00。其余各位的意義說(shuō)明如下:
R(Rotate)位為1,表明中斷級(jí)的優(yōu)先順序是自動(dòng)循環(huán)方式;R位為0,表明中斷級(jí)的優(yōu)先順序是固定的,0級(jí)最高,7級(jí)最低。表7.3L2~L0編碼與IR號(hào)的對(duì)應(yīng)關(guān)系L2、L1、L0000001010011100101110111對(duì)應(yīng)的IR號(hào)
01234567EOI(EndofInterrupt)位為1,表明OCW2操作命令字的任務(wù)之一是用作結(jié)束中斷命令;EOI位為0,則不執(zhí)行結(jié)束中斷操作。表7.4OCW2的各種格式及應(yīng)用圖7.16完全嵌套方式響應(yīng)過(guò)程舉例R=0、SL=0、EOI=1的OCW2用作完全嵌套方式下的普通EOI命令。通常,該命令在中斷服務(wù)程序的末尾,用來(lái)消除ISR內(nèi)為1的所有位中優(yōu)先級(jí)最高的位,即清除當(dāng)前正在服務(wù)的中斷級(jí)。該命令字發(fā)出后,8259A便允許同級(jí)或較低級(jí)的中斷源發(fā)出請(qǐng)求信號(hào)。圖7.16示出完全嵌套方式和OCW2命令字的應(yīng)用例子。只有當(dāng)CPU開中斷后才能響應(yīng)外設(shè)發(fā)來(lái)的中斷請(qǐng)求。當(dāng)多個(gè)中斷源同時(shí)發(fā)出中斷請(qǐng)求時(shí),CPU先響應(yīng)優(yōu)先級(jí)別高的中斷。
如圖中IR1及IR3兩個(gè)中斷源同時(shí)請(qǐng)求中斷,則CPU先響應(yīng)IR1的中斷請(qǐng)求,只有當(dāng)IR1的中斷服務(wù)程序完成,ISR1被普通EOI命令清除后才能響應(yīng)IR3的中斷請(qǐng)求。當(dāng)某個(gè)中斷服務(wù)程序(如圖中IR1服務(wù)程序)正在執(zhí)行期間,若有更高級(jí)別的中斷請(qǐng)求(如IR0)發(fā)生,則CPU暫停正在服務(wù)的中斷程序(IR1服務(wù)程序)轉(zhuǎn)去為更高級(jí)的中斷級(jí)(IR0)服務(wù),直至更高級(jí)(IR0)的服務(wù)程序完成,相應(yīng)的ISR位(ISR0)清除后,才能繼續(xù)為原正在服務(wù)的外設(shè)(IR1)服務(wù)。圖中IR3服務(wù)程序正在執(zhí)行期間,轉(zhuǎn)去為IR2服務(wù)也是同樣的道理。R=0,SL=1,EOI=1的OCW2用作完全嵌套方式下的特殊EOI命令,也排在中斷服務(wù)程序的末尾,用來(lái)清除ISR中由L2、L1、L0三位組合指明的中斷級(jí)。
R=1,SL=0,EOI=1的OCW2用作普通EOI循環(huán)命令,排在中斷服務(wù)程序的末尾,用來(lái)將ISR中已置位的所有位中優(yōu)先級(jí)最高的位復(fù)位,并使剛結(jié)束服務(wù)的中斷級(jí)級(jí)別最低,各中斷源的優(yōu)先次序移一級(jí)。
R=1,SL=0,EOI=0的OCW2用于設(shè)置和啟動(dòng)自動(dòng)循環(huán)排序方式。R=0,SL=0,EOI=0的OCW2用來(lái)使8259A的排序方式從自動(dòng)循環(huán)排序方式退回到完全嵌套的排序方式。
R=1,SL=1,EOI=0的OCW2設(shè)置和啟動(dòng)特殊循環(huán)排序方式(指定最低級(jí)的循環(huán)排序方式)。它指定L2、L1、L0確定的位為最低優(yōu)先級(jí)。特殊循環(huán)排序方式建立后,R=1,SL=1,EOI=1的OCW2命令字用來(lái)結(jié)束正在服務(wù)的中斷級(jí)并指定新的最低級(jí)。
R=0,SL=1,EOR=0的OCW2命令字無(wú)意義,不用。發(fā)送OCW2命令字的I/O地址為8259A的偶數(shù)號(hào)地址,即A0=0。③操作命令字OCW3。OCW3用來(lái)管理特殊的屏蔽方式和查詢方式,并用來(lái)控制中斷狀態(tài)的讀出,格式如下:XESMMSMM01PRRRISD7D6D5D4D3D2D1D0
OCW3的特征位為D4D3=01,發(fā)送地址是8259A的偶數(shù)號(hào)地址,A0=0。
ESMM位用來(lái)進(jìn)行特殊屏蔽方式控制。ESMM=0,表明不置位,也不復(fù)位特殊屏蔽方式,SMM位無(wú)意義。ESMM=1,且SMM=1,表明置位特殊屏蔽方式;ESMM=1,且SMM=0表明復(fù)位特殊屏蔽方式。圖7.17特殊屏蔽方式的進(jìn)入和退出舉例
圖中示出IR2中斷服務(wù)程序在完全嵌套方式下被服務(wù)。若希望在中斷服務(wù)程序執(zhí)行過(guò)程中,IR2中斷服務(wù)程序能被其它任何級(jí)別的中斷源中斷,則可在IR2中斷服務(wù)程序的某處,如圖中C處向8259A送中斷屏蔽字OCW1,使IM2=1,以屏蔽IR2中斷級(jí)。然后向8259A寫入OCW3命令字,使ESMM=SMM=1,置8259A為特殊屏蔽方式。這樣,在IR2的中斷服務(wù)程序繼續(xù)執(zhí)行期間,就可被其它任何級(jí)別的中斷源中斷,直到送OCW3命令字,使ESMM=1,SMM=0,8259A的特殊屏蔽方式復(fù)位,重新進(jìn)入完全嵌套方式為止。此后,向8259A送OCW1命令字使IM2=0,IR2的屏蔽被消除。最后向8259
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上體育課注意安全課件
- 綠色科技與農(nóng)業(yè)
- 《法律職業(yè)倫理》試卷及答案
- 論文答辯秘籍
- 春節(jié)前安全教育培訓(xùn)報(bào)道課件
- 校園安全管理培訓(xùn)報(bào)道課件
- 校園安全疫情防控課件
- 遼寧省撫順市六校協(xié)作體2025-2026學(xué)年高二上學(xué)期期末聯(lián)考數(shù)學(xué)試題【含答案詳解】
- 校園安全教育教學(xué)課件
- 幼兒認(rèn)識(shí)交通安全課件
- 2025年廣東大灣區(qū)高三一模數(shù)學(xué)試題(含答案詳解)
- 應(yīng)急電力保障
- 幼兒園食品安全溯源管理制度
- 山東省濰坊市2023-2024學(xué)年高一上學(xué)期1月期末考試英語(yǔ)試題 含解析
- 農(nóng)村個(gè)人土地承包合同模板
- 外聘合同模板
- 2023年安徽宣城中學(xué)高一自主招生物理試卷試題(含答案詳解)
- 活著,余華,下載
- 中醫(yī)養(yǎng)生的吃野山參粉養(yǎng)生法
- 居民自建樁安裝告知書回執(zhí)
- 國(guó)家開放大學(xué)最新《監(jiān)督學(xué)》形考任務(wù)(1-4)試題解析和答案
評(píng)論
0/150
提交評(píng)論