微型計(jì)算機(jī)原理及應(yīng)用:第7章 微型計(jì)算機(jī)中斷系統(tǒng)_第1頁
微型計(jì)算機(jī)原理及應(yīng)用:第7章 微型計(jì)算機(jī)中斷系統(tǒng)_第2頁
微型計(jì)算機(jī)原理及應(yīng)用:第7章 微型計(jì)算機(jī)中斷系統(tǒng)_第3頁
微型計(jì)算機(jī)原理及應(yīng)用:第7章 微型計(jì)算機(jī)中斷系統(tǒng)_第4頁
微型計(jì)算機(jī)原理及應(yīng)用:第7章 微型計(jì)算機(jī)中斷系統(tǒng)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第七章 微型計(jì)算機(jī)中斷系統(tǒng)概述:中斷:CPU在運(yùn)行程序期間,遇到某些特殊情況(被內(nèi)部或外部事件所打斷),暫時(shí)中止原先程序的執(zhí)行,而轉(zhuǎn)去執(zhí)行一段特定的處理程序,這一過程就叫中斷。 這段特定的處理程序叫做中斷服務(wù)程序。中斷方式:當(dāng)外設(shè)作好傳送準(zhǔn)備后,主動(dòng)向CPU請(qǐng)求中斷,CPU響應(yīng)中斷后在中斷處理程序中與外設(shè)交換數(shù)據(jù)。若外設(shè)未準(zhǔn)備好,CPU可以執(zhí)行其他程序,提高了CPU的利用率每條指令完成后,CPU均可響應(yīng)中斷,因此當(dāng)設(shè)備準(zhǔn)備好時(shí),可及時(shí)與CPU交換數(shù)據(jù),提高了實(shí)時(shí)性二、中斷處理過程不論哪種中斷都遵循同樣的中斷處理過程中斷源中斷請(qǐng)求 當(dāng) 前 程 序中斷服務(wù)程序程序斷點(diǎn)中斷返回中斷響應(yīng)中斷:處理器暫

2、停執(zhí)行當(dāng)前程序,轉(zhuǎn)而處理隨機(jī)發(fā)生的事件,處理完畢后再返回到斷點(diǎn)處繼續(xù)執(zhí)行原來程序的過程。中斷基本過程:(1)中斷請(qǐng)求(2)中斷判優(yōu)(3)中斷響應(yīng)(4)中斷處理(5)中斷返回(1)中斷請(qǐng)求:中斷源發(fā)出中斷請(qǐng)求(不同中斷源發(fā)出中斷請(qǐng)求的條件不同)(2)中斷判優(yōu):當(dāng)多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),CPU首先響應(yīng)優(yōu)先級(jí)最高的中斷并決定是否能實(shí)現(xiàn)中斷嵌套。通常一個(gè)系統(tǒng)有多個(gè)中斷源,而CPU同一時(shí)刻只能響應(yīng)一個(gè)中斷源的請(qǐng)求,那么當(dāng)多個(gè)中斷源同時(shí)請(qǐng)求中斷服務(wù)時(shí),應(yīng)該先響應(yīng)哪一個(gè),有一個(gè)次序安排的問題。按中斷源的輕重緩急程度確定的優(yōu)先級(jí)別,稱為優(yōu)先級(jí)。除法錯(cuò) INT0指令 INT n溢出 INTONMIINTR

3、單步 INT1優(yōu)先級(jí)遞增高低當(dāng)CPU正在響應(yīng)某一中斷源的請(qǐng)求,執(zhí)行為其服務(wù)的中斷服務(wù)程序時(shí),如果有優(yōu)先級(jí)更高的中斷源發(fā)出請(qǐng)求,CPU將中止正在執(zhí)行的中斷服務(wù)程序而轉(zhuǎn)入新的中斷源服務(wù),等新的中斷服務(wù)程序執(zhí)行完后,再返回到被中止的中斷服務(wù)程序,這一過程稱為中斷嵌套。中斷嵌套可以有多級(jí),具體級(jí)數(shù)原則上不限,只取決于堆棧深度1#中斷請(qǐng)求響應(yīng)返回1#中斷服務(wù)程序2#中斷請(qǐng)求響應(yīng)返回2#中斷服務(wù)程序3#中斷請(qǐng)求響應(yīng)返回3#中斷服務(wù)程序原主程序中斷優(yōu)先級(jí)3#2#1#(3)中斷響應(yīng)除(1)(2)外還需中斷允許標(biāo)志位(IF)為1才可以響應(yīng)中斷。注:(1)CPU在復(fù)位時(shí),IF復(fù)位為0,因此在使用中斷時(shí)要開中斷 (

4、2)CPU在響應(yīng)中斷后自動(dòng)關(guān)閉中斷,要實(shí)現(xiàn)中斷嵌套需要在進(jìn)入中斷服務(wù)子程序后開中斷STI開中斷指令將標(biāo)志寄存器中的中斷標(biāo)志位IF置1,允許CPU響應(yīng)來自INTR引腳的中斷請(qǐng)求CLI關(guān)中斷指令將標(biāo)志寄存器中的中斷標(biāo)志位IF清0,使CPU不響應(yīng)來自INTR引腳的中斷請(qǐng)求響應(yīng)中斷時(shí)自動(dòng)進(jìn)行相應(yīng)的處理:保護(hù)狀態(tài)標(biāo)志、保護(hù)斷點(diǎn)、獲取中斷向量(中斷服務(wù)程序的入口地址)(4)中斷處理(1)保護(hù)現(xiàn)場(chǎng):將中斷服務(wù)程序中要用到的寄存器的內(nèi)容壓入堆棧保存。(2)開中斷;(3)執(zhí)行中斷服務(wù)處理程序;(4)關(guān)中斷;(5)恢復(fù)現(xiàn)場(chǎng):將相關(guān)寄存器的內(nèi)容彈出堆棧。(5)中斷返回IRET中斷返回指令中斷服務(wù)程序的出口指令,從棧

5、頂彈出6個(gè)字節(jié)依次寫入IP、CS和標(biāo)志寄存器POP IPPOP CSPOPF注:在執(zhí)行IRET之前必須保證棧頂是斷點(diǎn)地址,否則執(zhí)行IRET指令將導(dǎo)致系統(tǒng)癱瘓中斷的類型中斷的類型PC系列微機(jī)最多可以支持256種中斷,它們被分為四種類型:1.內(nèi)部中斷和異常: 被零除、單步、溢出、斷點(diǎn)2.軟件中斷: 指令中斷 INT n3.外部可屏蔽中斷:INTR (CPU可以控制是否響應(yīng)中斷)4.外部非屏蔽中斷:NMI (有中斷請(qǐng)求CPU就需響應(yīng)) 1、2屬于內(nèi)部中斷,3、4屬于外部中斷。外部中斷源有:(1)I/O設(shè)備,如鍵盤,顯示器(CRT),打印機(jī)等;(2)數(shù)據(jù)通道,如磁盤,磁帶等;(3)實(shí)時(shí)鐘,如外部所需的

6、定時(shí)電路等;(4)故障源,如掉電、存儲(chǔ)器奇偶校驗(yàn)錯(cuò)。每個(gè)中斷和異常都指定了一個(gè)類型號(hào)代表不同的優(yōu)先級(jí)。1. 內(nèi)部中斷和異常處理器執(zhí)行某些操作而引起的中斷,包括除法錯(cuò)誤異常、單步調(diào)試中斷、斷點(diǎn)中斷等這類中斷使用了00H07H中的若干個(gè)中斷號(hào)INT0-除法錯(cuò)誤, 沒有INT0形式的指令, CPU自動(dòng)產(chǎn)生INT1-單步中斷,同樣也沒有INT1形式的指令,TF1時(shí)產(chǎn)生INT2 -NMI,CPU處理外部緊急事件,硬件中斷INT3-格式:INT, 斷點(diǎn)中斷INT4-格式:INTO,溢出中斷,OF1時(shí)配合INTO執(zhí)行 中斷的類型2.軟件中斷執(zhí)行有定義的INT n指令而引發(fā)的中斷,稱為軟件中斷,它的形式是IN

7、T n, 包括BIOS中斷和DOS中斷,以及用戶自定義中斷等有定義的 INT n :并非所有的中斷號(hào)都有對(duì)應(yīng)的中斷 服務(wù)程序,沒有定義的中斷的INT n 是無意義的。定義 INT n 包含三個(gè)內(nèi)容:1。確定合適的中斷號(hào)n2。用過程的形式完成中斷服務(wù)子程序 3。將此過程的邏輯地址植入相應(yīng)的中斷矢量中斷的類型3.外部可屏蔽中斷 外部可屏蔽中斷是處理器響應(yīng)各種外部硬件中斷的最常用的方法,通過CPU的INTR引腳產(chǎn)生外部可屏蔽中斷,受處理器內(nèi)部的中斷允許標(biāo)志位IF的控制,處理器以電平觸發(fā)方式接受INTR請(qǐng)求,當(dāng)每條指令結(jié)束時(shí),若INTR為高電平且IF=1,則CPU響應(yīng)相應(yīng)I/O接口的中斷請(qǐng)求。處理器只

8、有一個(gè)INTR引腳可以接受外部可屏蔽中斷請(qǐng)求,為了管理眾多的外部中斷源,微機(jī)系統(tǒng)中采用可編程中斷控制器8259。PC系列機(jī)通過兩片8259級(jí)連可以響應(yīng)15個(gè)外部中斷源。中斷的類型4.外部非屏蔽中斷為外部緊急請(qǐng)求提供服務(wù)的中斷,通過處理器的NMI引腳產(chǎn)生NMI輸入是上升沿觸發(fā)的,只要NMI輸入端上出現(xiàn)由0到1的跳變,一個(gè)中斷服務(wù)請(qǐng)求就被鎖存在CPU中,與IF標(biāo)志的狀態(tài)無關(guān)NMI有一個(gè)專用的類型號(hào)02H使用非屏蔽中斷的典型例子是電源故障中斷中斷的類型中斷響應(yīng)過程 一、內(nèi)部中斷響應(yīng)過程對(duì)于專用中斷,中斷類型碼自動(dòng)產(chǎn)生,對(duì)于INT n指令。N為中斷類型碼,獲取類型碼后的處理過程如下:類型碼乘以4后,得

9、到中斷向量地址;將標(biāo)志寄存器壓棧 (PUSH F)將TF置0(TF=0),禁止單步操作, 將IF置0 (IF=0) ,使CPU處于關(guān)中斷狀態(tài)斷點(diǎn)的CS、IP壓棧(PUSH CS PUSH IP)從中斷向量表取n號(hào)中斷向量 IP、CS (CS=n*4+2, IP=n*4 )轉(zhuǎn)向n號(hào)中斷服務(wù)程序二、外部中斷響應(yīng)過程1、非屏蔽中斷響應(yīng):CPU檢測(cè)到非屏蔽中斷請(qǐng)求,自動(dòng)產(chǎn)生中斷類型碼,得到中斷向量地址。后續(xù)的處理同內(nèi)部中斷。2、可屏蔽中斷響應(yīng): 通過IF來決定,IF1可以響應(yīng)中斷。中斷響應(yīng)過程中斷的優(yōu)先級(jí) 8088在內(nèi)存的前1k字節(jié)建立了一個(gè)中斷向量表,可存儲(chǔ)256個(gè)中斷向量,每個(gè)中斷向量占用4個(gè)字節(jié)

10、,分別存放中斷服務(wù)程序入口地址的段地址和偏移量。每個(gè)中斷向量以類型碼加以區(qū)別,如: Int 21h DOS系統(tǒng)功能中斷 Int 10h 屏幕顯示 鍵盤中斷 類型碼 9 當(dāng)執(zhí)行中斷時(shí),CPU將中斷類型碼乘以4后,得到中斷向量地址,進(jìn)而得到IP和CS的值,它就是中斷服務(wù)程序的入口地址,程序由此轉(zhuǎn)入中斷服務(wù)程序執(zhí)行。000000000C00013C1F1F3C:0100 (1F4C0)PUSH AXPUSH BX003FF中斷向量表INT 3中斷服務(wù)程序中斷向量中斷向量表中斷向量表 地址(Hex) 類型碼 中斷名稱 03 0 除以0 47 1 單步 8B 2 非屏蔽 CF 3 斷點(diǎn) 1013 4 溢

11、出 1417 5 打印屏幕 181B 6 保留 1D1F 7 保留 2023 8 定時(shí)器 2427 9 鍵盤 282B A 保留的硬中斷 2C2F B 異步通信(COM2) 3033 C 異步通信(COM1) 3437 D 硬盤 383B E 軟盤 3C3F F 并行打印機(jī)地址(Hex) 類型碼 中斷名稱4043 10 視頻顯示I/O調(diào)用4447 11 設(shè)備檢測(cè)調(diào)用484B 12 存儲(chǔ)器容量檢測(cè)4C4F 13 軟/硬盤I/O調(diào)用5053 14 通信I/O調(diào)用5457 15 盒式磁帶I/O調(diào)用585B 16 鍵盤I/O調(diào)用5C5F 17 打印機(jī)I/O調(diào)用6063 18 ROM BASIC6467

12、 19 引導(dǎo)程序入口686B 1A 時(shí)間調(diào)用6C6F 1B 鍵盤CTRL-BREAK控制7073 1C 定時(shí)器報(bào)時(shí)7477 1D 顯示器參數(shù)表787B 1E 軟盤參數(shù)表地址(Hex) 類型碼 中斷名稱7C7F 1F 字符點(diǎn)陣結(jié)構(gòu)參數(shù)表8083 20 程序結(jié)束,返回DOS8487 21 DOS系統(tǒng)功能調(diào)用888B 22 程序結(jié)束地址8C8F 23 CTRL_BREAK退出地址9093 24 標(biāo)準(zhǔn)錯(cuò)誤出口地址9497 25 絕對(duì)磁盤讀989B 26 絕對(duì)磁盤寫9C9F 27 程序結(jié)束,駐留內(nèi)存A0FF 283F 為DOS保留10017F 405F 保留18019F 6067 為用戶軟中斷保留1A0

13、1FF 687F 不用200217 8085 BASIC使用2183C3 86F0 BASIC運(yùn)行時(shí),用于解釋3C43FF F1FF 未用中斷向量表的操作 當(dāng)CPU響應(yīng)中斷,便從中斷向量表中相繼取出偏移地址和段地址作為中斷服務(wù)程序的入口地址,而轉(zhuǎn)移去執(zhí)行中斷服務(wù)程序。因此,當(dāng)用戶要編寫自己的中斷服務(wù)程序時(shí),必須將服務(wù)程序的入口地址填入系統(tǒng)的中斷向量表中。 下面所示程序表示怎樣填寫中斷向量表,以實(shí)現(xiàn)用戶所定義的60H中斷。 CLI MOV AX,0 MOV ES,AX MOV DI,4*60H ;中斷向量表中位置 MOV AX,OFFSET INTRE STOSW ;存入偏移量自動(dòng)修改DI MO

14、V AX,SEG INTRE STOSW ;存入段基址 STIINTRE PROC PUSH AX PUSH BX . . . POP BX POP AX IRETINTRE ENDPINT 60H 也可以DOS功能調(diào)用實(shí)現(xiàn)這一功能。CLIPUSH DSMOV AX,SEG INTRMOV DS,AXMOV DX,OFFSET INTR ;中斷服務(wù)程序入口地址放入DS:DX中MOV AH,25H ;功能號(hào)25H送入AH中 MOV AL,60H ;類型碼放入ALINT 21H ;調(diào)用21H 中斷POP DSSTI INTRE PROC PUSH AX PUSH BX . . . POP BX P

15、OP AX IRETINTRE ENDP中斷向量表的操作可調(diào)用相應(yīng)的DOS功能,讀寫中斷向量表取中斷向量預(yù)置AH=35H, AL=中斷類型號(hào)執(zhí)行INT 21H把類型號(hào)為AL的中斷向量取出到ES:BX中設(shè)置中斷向量預(yù)置AH=25H, AL=中斷類型號(hào),DS:DX=中斷向量執(zhí)行INT 21H把DS:DX指向的中斷向量放置到中斷向量表中類型號(hào)為AL的中斷向量處例:用戶定義的中斷服務(wù)程序置換系統(tǒng)原有的nXX中斷服務(wù)程序DATA SEGMENT OLD_INT_SEG DW ?OLD_INT_OFF DW ?DATA ENDS.MOV AL, XXMOV AH, 35HINT 21HMOV OLD_IN

16、T_SEG, ESMOV OLD_INT_OFF, BXCLIPUSH DSMOV AX, SEG NEW_INTMOV DS, AXMOV DX, OFFSET NEW_INTMOV AH, 25HMOV AL, XXINT 21HPOP DSSTICLIPUSH DSMOV AX, SEG OLD_INT_SEGMOV DS, AXMOV DX, OFFSET OLD_INT_OFFMOV AH, 25HMOV AL, XXINT 21H.中斷向量表的操作8259A可編程中斷控制器8259A內(nèi)部結(jié)構(gòu)和引腳8259A的工作過程8259A的工作方式8259A的編程 8259A內(nèi)部結(jié)構(gòu)和引腳 一

17、、功能 Intel 8259A是兼容于8080/8085和8086/8088系列的可編程中斷控制器,其功能主要有:1) 單片8259A可管理8級(jí)中斷;2) 通過級(jí)連,可管理多于8級(jí)的中斷,在不增加其它電路的前提下,可使 用9片8259A構(gòu)成64級(jí)主從式中斷系統(tǒng);3) 每一級(jí)中斷都可通過編程使之被屏蔽或被允許;4) 8259A可通過編程被設(shè)定為幾種不同的工作方式;5) 8259采用NMOS工藝,只需要一組5V電源。CS WRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDVccA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS2D7D0 三態(tài)數(shù)據(jù)總線(雙

18、向)RD 讀輸入WR 寫輸入A0 選擇內(nèi)部寄存器地址CS 片選CAS0CAS2 級(jí)連線SP/EN 從程序/允許緩沖INT 中斷請(qǐng)求輸出INTA 中斷響應(yīng)輸入IR0IR7 中斷請(qǐng)求輸入 8259管腳對(duì)照表1 282 273 264 255 246 237 228 219 2010 1911 1812 1713 1614 15管腳信號(hào)數(shù)據(jù)總線 緩沖器讀/寫邏輯 級(jí)聯(lián)緩沖 比較器控 制 邏 輯在服務(wù)寄存器ISR優(yōu)先權(quán)電路中斷請(qǐng)求寄存器 IRR中斷屏蔽寄存器IMRIR0IR7D7D0INTA INTRDWRA0CSCAS0CAS1CAS2SP/EN內(nèi)部數(shù)據(jù)總線二、結(jié)構(gòu)IR18位雙向三態(tài)。是與CPU進(jìn)行

19、數(shù)據(jù)交換的數(shù)據(jù)通道,CPU對(duì)它的讀出和寫入都是通過該緩沖器進(jìn)行的。用于CPU對(duì)8259A進(jìn)行讀寫控制用于多片8259A進(jìn)行級(jí)連根據(jù)設(shè)定的工作方式管理整個(gè)芯片的工作8位寄存器。用于存放來自外設(shè)的中斷請(qǐng)求信號(hào),當(dāng)某引腳有中斷請(qǐng)求信號(hào)時(shí),相應(yīng)的位被置1。0 0 0 1 0 1 1 0IRR8位寄存器。用于存放正在處理的中斷請(qǐng)求信號(hào),8259A在接收到CPU的響應(yīng)信號(hào)(INTA)后,使相應(yīng)位置1。0 0 0 1 0 10 0ISR用于識(shí)別和管理各種中斷請(qǐng)求信號(hào)的優(yōu)先級(jí)別。8位寄存器用于存放對(duì)中斷請(qǐng)求的屏蔽信息。當(dāng)某位被編程設(shè)置為1 時(shí),則相應(yīng)的中斷請(qǐng)求信號(hào)被屏蔽,不會(huì)被送到CPU.1 0 0 0 0

20、0 0 1IMR8259A的工作過程1。硬件有中斷請(qǐng)求,IRR置位2。INT 向INTR發(fā)中斷請(qǐng)求3。若IF=1,則第一個(gè)INTA響應(yīng),最高優(yōu)先級(jí)的 ISR置位,IRR復(fù)位5。第二個(gè)INTA脈沖,送中斷類型碼。若為自動(dòng)中斷結(jié)束方式,則ISR相應(yīng)位復(fù)位,執(zhí)行中斷服務(wù)子程序。6。對(duì)非AEOI ,發(fā)EOI指令使得ISR相應(yīng)的位清0??善帘沃袛囗憫?yīng)周期 8088響應(yīng)中斷,到轉(zhuǎn)入中斷處理,要經(jīng)過兩個(gè)中斷響應(yīng)周期。T1 T2 T3 T4 T1 T2 T3 T4第一個(gè)中斷響應(yīng)周期第二個(gè)中斷響應(yīng)周期CLKALEINTAAD7AD0向量類型碼第一個(gè)INTA信號(hào):將在服務(wù)寄存器ISR相應(yīng)位置位,表示正在為響應(yīng)的那

21、一級(jí)服務(wù);同時(shí)將中斷請(qǐng)求觸發(fā)器復(fù)位。為本級(jí)再次中斷請(qǐng)求做好準(zhǔn)備。第二個(gè)INTA信號(hào):要求8259A輸入中斷向量類型碼。8259A的工作方式中斷觸發(fā)方式普通全嵌套方式特殊全嵌套方式自動(dòng)循環(huán)方式特殊循環(huán)方式優(yōu)先權(quán)固定方式優(yōu)先權(quán)循環(huán)方式設(shè)置優(yōu)先權(quán)方式普通中斷結(jié)束方式特殊中斷結(jié)束方式自動(dòng)中斷結(jié)束方式非自動(dòng)中斷結(jié)束方式結(jié)束中斷處理方式屏蔽中斷源方式普通屏蔽方式特殊屏蔽方式邊沿觸發(fā)方式電平觸發(fā)方式返回到初始化優(yōu)先級(jí)控制方式兩類優(yōu)先級(jí)控制方式:固定優(yōu)先級(jí)和循環(huán)優(yōu)先級(jí)固定優(yōu)先級(jí)方式(普通全嵌套方式和特殊全嵌套方式)所有中斷請(qǐng)求IRi的中斷優(yōu)先級(jí)固定不變優(yōu)先級(jí)排列順序可編程改變加電后8259A的默認(rèn)方式,默認(rèn)優(yōu)

22、先級(jí)順序從高到低為IR0IR7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低級(jí)最高級(jí)最高級(jí)最低級(jí)優(yōu)先級(jí)IR7IR6IR5IR4IR3IR2IR1IR0默認(rèn)優(yōu)先級(jí)優(yōu)先級(jí)可編程改變固定優(yōu)先級(jí)的中斷嵌套在中斷處理過程中允許被更高優(yōu)先級(jí)的事件所中斷稱為中斷嵌套。8259A有兩種中斷嵌套方式:普通全嵌套方式(默認(rèn)方式) 中斷請(qǐng)求優(yōu)先級(jí)順序是IRQ 0IRQ7。當(dāng)一個(gè)中斷被響應(yīng)時(shí),中斷服務(wù)寄存器ISR相應(yīng)位被置為“1”,且保持到中斷服務(wù)程序在返回前發(fā)中斷結(jié)束命令為止。在ISR位置位期間,禁止再發(fā)生同級(jí)或較低級(jí)的中斷,較高級(jí)的中斷請(qǐng)求仍能產(chǎn)生中斷。每個(gè)中斷請(qǐng)求可分別由I

23、MR相應(yīng)位屏蔽。(OCW1)特殊全嵌套方式 中斷正被處理時(shí),允許同級(jí)或更高優(yōu)先級(jí)的事件可以打斷當(dāng)前的中斷處理過程而被服務(wù)。注: 特殊全嵌套僅用于多個(gè)8259A級(jí)聯(lián)系統(tǒng)中的主片8259A ,而不能用于從8259A或單8259A系統(tǒng)。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7普通嵌套方式:從片的INT被主片封鎖,故更高級(jí)別的IR0-IR2中斷也無法得到響應(yīng)特殊嵌套方式:因主片不封鎖從片的INT,故級(jí)別高的IR0-IR2中斷可以得到響應(yīng)。(但I(xiàn)R3-IR7仍被本從片封鎖)C.假定IR3發(fā)生中斷,并獲得服務(wù)普通嵌套方式:IR4的中斷被服務(wù)時(shí),這些中斷將被封鎖。B.特殊嵌套方式:I

24、R4的中斷被服務(wù)時(shí),只封鎖IR5-IR7。A.INTE.從8259AINTIR0IR1IR2IR3IR4IR5IR6IR7普通全嵌套方式與特殊全嵌套方式的區(qū)別 去CPU循環(huán)優(yōu)先級(jí)方式(1)優(yōu)先權(quán)自動(dòng)循環(huán)方式 一般用于系統(tǒng)中有多個(gè)優(yōu)先級(jí)相等的中斷源的情況。 在這種方式下,優(yōu)先級(jí)隊(duì)列是變化的,一個(gè)設(shè)備受到服務(wù)后,其優(yōu)先級(jí)自動(dòng)降到最低。初始優(yōu)先級(jí)隊(duì)列是固定的,為: IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 (由高到低)。如果這時(shí)IRQ1有中斷請(qǐng)求,則在完成其中斷服務(wù)后,優(yōu)先級(jí)隊(duì)列變?yōu)椋ㄓ筛叩降停?IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 IR

25、Q0 IRQ1 優(yōu)先級(jí)自動(dòng)循環(huán)方式由操作命令字OCW2設(shè)定。 (2)優(yōu)先級(jí)特殊循環(huán)方式初始優(yōu)先級(jí)順序可用編程改變(特殊循環(huán)方式)IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低級(jí)最高級(jí)最高級(jí)最低級(jí)ISR內(nèi)容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服務(wù)結(jié)束以前0101000001000000IR4的服務(wù)結(jié)束以后ISRi結(jié)束中斷處理方式當(dāng)某一IRi中斷被服務(wù)時(shí),ISR中的相應(yīng)位ISRi=1。當(dāng)服務(wù)結(jié)束后,則必須清零該ISRi位。使ISRi=0是通過向8259A發(fā)出中斷結(jié)束命令(EOI命令)實(shí)現(xiàn)的。三種EOI命令 (1)自動(dòng)EOI(AEOI)在第2

26、個(gè)INTA#結(jié)束時(shí),由8259A使ISRi自動(dòng)復(fù)位; 注:因不保留當(dāng)前正在服務(wù)的中斷的狀態(tài),故AEOI不能用于中斷嵌套方式(2)非指定EOI(NSEOI)由CPU發(fā)出正常EOI命令,該EOI命令使ISRi=1的位中優(yōu)先級(jí)最高的那一位復(fù)位。用于普通全嵌套方式(3)指定EOI(SEOI)(特殊EOI方式)由CPU發(fā)出一條SEOI命令,該EOI命令中指出了所要復(fù)位的ISR的位號(hào)。用于特殊全嵌套方式中斷服務(wù)程序向從PIC發(fā)EOI命令讀從PIC的ISR全0?向主PIC發(fā)EOI命令YIRET恢復(fù)現(xiàn)場(chǎng)N特殊全嵌套方式下的EOI處理只有當(dāng)從PIC的中斷全部處理完后,才能向主PIC發(fā)EOI命令屏蔽中斷源的方式普

27、通屏蔽方式:IMR屏蔽字決定了允許或禁止某位IRi所對(duì)應(yīng)的中斷:IMi=1 禁止, IMi=0 允許。特殊屏蔽方式:提供了允許較低優(yōu)先級(jí)的中斷能夠得到響應(yīng)的特殊手段。原理:假定當(dāng)前正在處理IR6,先進(jìn)入特殊屏蔽方式,然后設(shè)置IM6=1。這時(shí),除IR6外的所有中斷請(qǐng)求均能得到響應(yīng)。(ISR中相應(yīng)的位將被清零)特殊屏蔽方式中只能用SEOI命令結(jié)束中斷。中斷觸發(fā)方式邊沿觸發(fā)IRi出現(xiàn)上升沿表示有中斷請(qǐng)求 電平觸發(fā)IRi出現(xiàn)高電平表示有中斷請(qǐng)求在第1個(gè)INTA#結(jié)束前,IRi必須保持高電平 級(jí)聯(lián)方式:一個(gè)8259A主片至多帶8個(gè)從片,因此可擴(kuò)展控制64個(gè)中斷源。所有的主片和從片均分別進(jìn)行初始化,且可設(shè)

28、定為不同的工作方式。緩沖方式: 緩沖方式:在多片8259A級(jí)連的大系統(tǒng)中,8259A通過總線驅(qū)動(dòng)器和數(shù)據(jù)總線相連,這就是緩沖方式。 非緩沖方式:當(dāng)系統(tǒng)中只有單片8259A時(shí),一般將它直接與數(shù)據(jù)總線相連;另外,在一些不太大的系統(tǒng)中,即使有幾片8259A級(jí)連工作,也可以將8259A直接與數(shù)據(jù)總線連。這種連接即為非緩沖方式。1 初始化命令字初始化命令字ICW(Initialization Command Word)通常是系統(tǒng)開機(jī)時(shí),由初始化程序填寫,且在整個(gè)系統(tǒng)工作過程中保持不變。8259A初始化命令字必須按順 序填寫。 順序?qū)懭?4個(gè)字節(jié)的初始化命令字ICW1ICW2ICW3ICW4 級(jí)連方式?需

29、要ICW4?準(zhǔn)備接受中斷請(qǐng)求No(SGNL=1) Yes (SGNL=0) No(ICW4=0) Yes (ICW4=1)8259A的編程 (初始化編程和操作方式編程)8259A初始化過程的流程圖6.5.4 8259A的編程 (初始化編程和操作方式編程)(1) ICW1 (初始化字) (設(shè)定具體功能,同時(shí)系統(tǒng)內(nèi)部初始化) 1 初始化命令字1需要ICW40不需要ICW41單片8259A0級(jí)連調(diào)用地址間距(僅用于MCS80 / 85模式)1電平觸發(fā)方式0邊沿觸發(fā)方式中斷向量地址(僅用于MCS80 / 85模式)對(duì)于8086/8088通常置為0A0 D7 D6 D5 D4 D3 D2 D1 D0 0

30、A7 A6 A5 1 LTIM ADI SNGL ICW4ICW1識(shí)別位偶地址1 T7 T6 T5 T4 T3 中斷向量地址的A15A8位 (MCS8080 / 8085 模式)中斷類型碼的T7T3位(8086 / 8088模式)A0 D7 D6 D5 D4 D3 D2 D1 D01(2) ICW2 (中斷類型碼) 注: T7T3 中斷類型碼高位, 由編程決定,用于 PX8686系統(tǒng)。 低三位自動(dòng)設(shè)置為 IR0 IR7 的類型編碼。 D7 D6 D5 D4 D3 D2 D1 D0IR7T7 T6 T5 T4 T3 1 1 1IR6T7 T6 T5 T4 T3 1 1 0IR5T7 T6 T5

31、T4 T3 1 0 1IR4T7 T6 T5 T4 T3 1 0 0IR3T7 T6 T5 T4 T3 0 1 1IR2T7 T6 T5 T4 T3 0 1 0IR1T7 T6 T5 T4 T3 0 0 1IR0T7 T6 T5 T4 T3 0 0 08259A傳送的中斷類型碼 1 S7 S6 S5 S4 S3 S2 S1 S0 1IR輸入帶有一個(gè)從控制器 0IR輸入不帶一個(gè)從控制器A0 D7 D6 D5 D4 D3 D2 D1 D01 1 0 0 0 0 0 ID2 ID1 ID0從控制器ID,編碼000111分別對(duì)應(yīng)從片接入主片的IR0IR7。A0 D7 D6 D5 D4 D3 D2 D1

32、 D01(3) ICW3 (主控制器) 級(jí)聯(lián)控制字 ICW3 (從控制器)系統(tǒng)怎樣區(qū)分主片和從片?不同的從片怎樣區(qū)分? 186 / 88模式080 / 85模式1自動(dòng)EOI0非自動(dòng)EOI 0 X 非緩沖方式 1 0 緩沖方式/從控制器 1 1 緩沖方式/主控制器1特殊全嵌套方式0非特殊全嵌套方式A0 D7 D6 D5 D4 D3 D2 D1 D01(4) ICW4 中斷結(jié)束方式字0 0 0 SFNM BUF M / S AEOI PM初始化編程 例1 (P261)PC機(jī)中使用單片8259A,定義地址為:20H、21H,8259A的工作方式設(shè)置如下: (1) 固定優(yōu)先權(quán)級(jí)別,普通全嵌套:IR0最

33、高,IR7最低 ; (2) 8個(gè)中斷類型碼分別是 08H 0FH; (3) 中斷請(qǐng)求信號(hào)采用邊沿觸發(fā)方式,非緩沖方式; (4) 中斷服務(wù)結(jié)束時(shí),采用普通中斷結(jié)束命令(EOI); (5) 采用普通屏蔽方式。程序: MOV AL,13H ;初始化ICW1 OUT 20H,AL ;偶地址 MOV AL, 08H ;初始化ICW2 OUT 21H, AL ;奇地址 MOV AL, 01H ;初始化ICW4 OUT 21H, AL ;奇地址 0 0 0 1 0 0 1 1 B 13H ;邊緣觸發(fā),單片,需要ICW40 0 0 0 1 0 0 0 B 08H ;IR0中斷類型碼為08H 0 0 0 0 0

34、 0 0 1 B 01H ;8086/8088 普通EOI 非緩沖,全嵌套初始化命令字: ICW1: ICW2: ICW4: 8259A應(yīng)用舉例初始化編程:例2PC/AT中,8259的使用情況為:1. 2片8259級(jí)聯(lián),提供15級(jí)向量中斷。從片的INT接主片的IR2。2. 端口地址:主片20H、21H,從片A0H、A1H。3. 主片和從片均采用邊沿觸發(fā)。4. 采用全嵌套優(yōu)先級(jí)排列方式5.采用非緩沖方式6.主片的類型碼為08H0FH,從片的類型碼為70H77H。ICW1A EQU 20H ;主片端口地址ICW2A EQU ICW1A+1ICW3A EQU ICW2AICW4A EQU ICW2A

35、ICW1B EQU 0A0H ;從片端口地址ICW2B EQU ICW1B+1ICW3B EQU ICW2BICW4B EQU ICW2B;- 主片8259A-MOV AL,11H ;ICW1,邊沿觸發(fā),多片,需ICW4OUT ICW1A,ALNOP ;I/O端口延時(shí)MOV AL,08H ;ICW2,中斷類型碼OUT ICW2A,ALNOPMOV AL,04H ;ICW3,00000100,IR2接從片OUT ICW3A,ALNOPMOV AL,01H ;ICW4,非緩沖,全嵌套,非自動(dòng)結(jié)束OUT ICW4A,ALNOP;- 從片8259A-MOV AL,11H ;ICW1,邊沿觸發(fā),多片,需

36、ICW4OUT ICW1B,ALNOPMOV AL,70H ;ICW2,中斷類型碼OUT ICW2B,ALNOPMOV AL,02H ;ICW3,INT接主片的IR2OUT ICW3B,ALNOPMOV AL,01H ;ICW4,非緩沖,全嵌套,非自動(dòng)結(jié)束OUT ICW4B,ALNOPPC/AT機(jī)主、從8259的初始化程序5. 8259A應(yīng)用舉例 由CPU向8259A送三個(gè)字節(jié)的操作命令字OCW(Operation Command Word), 用以規(guī)定8259A的工作方式,如: 中斷屏蔽 結(jié)束中斷 優(yōu)先權(quán)循環(huán) 中斷狀態(tài) 等。 操作命令字是在應(yīng)用程序中設(shè)置的,且可設(shè)置多次。設(shè)置時(shí),順序上沒有嚴(yán)

37、格的要求。但對(duì)端口地址有要求,如OCW1寫入奇地址,其余兩個(gè)寫入偶 地址。2 操作命令字OCW(當(dāng)不寫入時(shí),表示全嵌套 ) 1 M7 M6 M5 M4 M3 M2 M1 M0中斷屏蔽1置屏蔽0復(fù)位屏蔽A0 D7 D6 D5 D4 D3 D2 D1 D01(1)OCW1 (中斷屏蔽命令字)命令字中的M7M0對(duì)應(yīng)IMR的各位。Mi=1表示該中斷被屏蔽,Mi=0表示該中斷開放。命令格式如圖。 R、SL、EOI的不同組合決定了8259A的幾種工作方式。 L2L0 這幾位確定當(dāng)SL=1時(shí)指定的特殊結(jié)束或特殊循環(huán)時(shí)的中斷優(yōu)先級(jí)。 D4 D3 是特征位 0 R SL EOI 0 0 L2 L1 L00 0

38、1 普通EOI命令,全嵌套方式0 1 1 特殊EOI,L2L1 ISR位清零1 0 1 普通EOI,自動(dòng)循環(huán)1 0 0 自動(dòng)EOI,自動(dòng)循環(huán)(置位) 自動(dòng)循環(huán) 0 0 0 自動(dòng)EOI,取消優(yōu)先級(jí)自動(dòng)循環(huán)1 1 1 普通EOI,特殊循環(huán)(置位)1 1 0 優(yōu)先權(quán)特殊循環(huán)(置位)0 1 0 無操作0 0 0 0 有 0 0 1 1 效 0 1 0 2 的 0 1 1 3 中1 0 0 4 斷1 0 1 5 請(qǐng) 1 1 0 6 求 1 1 1 7 級(jí) 別(2)OCW2 中斷結(jié)束和優(yōu)先權(quán)循環(huán)控制字A0 D7 D6 D5 D4 D3 D2 D1 D00中斷結(jié)束特殊循環(huán)MOV AL,20HOUT 20H,

39、AL 0 0 ESMM SMM 0 1 P RR RIS用于控制8259A的運(yùn)行方式。命令格式如圖。(3)OCW3屏蔽和讀中斷控制字A0 D7 D6 D5 D4 D3 D2 D1 D00X 0 1 XX 1 1 01 0 0 0下一個(gè)指令讀查詢字下一個(gè)指令讀IRR下一個(gè)指令讀ISR特殊屏蔽方式0 0 1 10 1 0 1無作用復(fù)位特殊屏蔽置特殊屏蔽 當(dāng)送出OCW3且P0,隨后對(duì)同一地址(A00)的讀(IN)指令完成讀IRR(RR/RIS=1/0)或讀ISR(RR/RIS=1/1)無意義查詢字 0 I X X X X W2 W1 W0A0 D7 D6 D5 D4 D3 D2 D1 D001 本片

40、有中斷請(qǐng)求0 無外設(shè)請(qǐng)求中斷編碼000111給出當(dāng)前優(yōu)先級(jí)最高的外部中斷請(qǐng)求編碼A0D4D3RDWRCS輸入操作(讀)01001100IRR、ISR 或中斷類型碼 數(shù)據(jù)總線IMR 數(shù)據(jù)總線輸出操作(寫)0001001X01XX111100000000數(shù)據(jù)總線 OCW2 數(shù)據(jù)總線 OCW3數(shù)據(jù)總線 ICW1數(shù)據(jù)總線 ICW2、ICW3、ICW4、OCW1斷開功能XXXXXX1X1X01數(shù)據(jù)總線 3態(tài)(無操作)數(shù)據(jù)總線 3態(tài)(無操作)8259A的讀寫操作OCW編程舉例例1、允許日時(shí)鐘IRQ0和鍵盤IRQ1中斷,其他中斷狀態(tài)不變 IN AL,21H ; 讀出IMR AND AL,0FCH ;允許IR

41、Q0和IRQ1 OUT 21H,AL ;寫入OCW1,即IMR 例2、讀8259A相關(guān)寄存器的內(nèi)容。8259A的端口地址為20H、21H,讀入IRR、ISR、IMR寄存器的內(nèi)容,并相繼保存在數(shù)據(jù)段內(nèi)偏移地址為2000H開始的內(nèi)存單元中。 MOV AL, xxx01010B ;發(fā)OCW3,欲讀取IRR的內(nèi)容 OUT 20H, AL IN AL, 20H ;讀入并保存IRR的內(nèi)容 MOV 2000H,AL MOV AL,xxx01011B ;發(fā)OCW3,欲讀取ISR的內(nèi)容 OUT 20H, AL IN AL, 20H ;讀入并保存ISR的內(nèi)容 MOV 2001H, AL IN AL ,21H ;讀

42、入并保存IMR的內(nèi)容 MOV 2002H,AL返回8259A應(yīng)用舉例中斷程序設(shè)計(jì)1、中斷服務(wù)程序的編程原則1)中斷是異步發(fā)生的,必須保護(hù)現(xiàn)場(chǎng)2)中斷處理之前要先初始化中斷向量,在此之前要先關(guān)中斷。3)在中斷服務(wù)程序入口處要立即開中斷,以允許較高優(yōu)先級(jí)的中斷產(chǎn)生4)中斷服務(wù)程序的服務(wù)時(shí)間要盡量壓縮,以免干擾同級(jí)或低級(jí)中斷設(shè)備的工作5)由于PC機(jī)中8259采用正常結(jié)束中斷,因此在中斷服務(wù)程序執(zhí)行IRET返回前應(yīng)向8259發(fā)結(jié)束中斷命令EOIMOV AL, 20H;使當(dāng)前ISR中的對(duì)應(yīng)位復(fù)位OUT 20H, ALIRET6)當(dāng)編制替代系統(tǒng)原有中斷服務(wù)程序時(shí),應(yīng)保存好原中斷向量的內(nèi)容。在應(yīng)用程序終止前

43、恢復(fù)原有的中斷向量7)中斷服務(wù)程序不要使用DOS系統(tǒng)功能調(diào)用(INT 21H),因?yàn)镈OS不允許重入8)若中斷服務(wù)程序只為某個(gè)應(yīng)用程序服務(wù),則中斷服務(wù)程序可以和主程序組裝成一個(gè)程序一起裝入內(nèi)存,隨主程序結(jié)束而一起退出內(nèi)存9)若中斷服務(wù)程序?yàn)槎鄠€(gè)應(yīng)用程序服務(wù),則中斷服務(wù)程序可以與一個(gè)初始化程序組裝成一個(gè)程序一起裝入內(nèi)存,通過初始化程序的執(zhí)行而將中斷服務(wù)程序駐留內(nèi)存設(shè)置CPU的中斷允許標(biāo)志要控制所有的可屏蔽中斷,可開中斷STI或關(guān)中斷CLIINTR中斷服務(wù)程序的編程中斷入口保護(hù)現(xiàn)場(chǎng)中斷服務(wù)發(fā)中斷結(jié)束命令恢復(fù)現(xiàn)場(chǎng)中斷返回中斷服務(wù)程序設(shè)計(jì)舉例DATA SEGMENT MESS DB THIS IS A

44、 IRQ7 INTRUPT !,0AH,0DH,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX, CS MOV DS,AX MOV DX,OFFSET INT7 MOV AX, 250AH INT 21H IN AL, 21H AND AL, 7FH OUT 21H,AL MOV CX, 10 STIHERE: JMP HEREINT7: MOV AX,DATA ;中斷服務(wù)子程序 MOV DS,AX MOV DX,OFFSET MESS MOV AH,09 INT 21H MOV AL,20H ;EOI指令 OUT 20H,A

45、L LOOP NEXT IN AL,21H OR AL,80H OUT 21H,AL CLI MOV AH,4CH INT 21H NEXT: IRET ;中斷返回 CODE ENDS END START 例1 利用連接在8259A IR0上的時(shí)鐘信號(hào), 編寫具有定時(shí)功能程序, 要求每隔5秒在屏蔽上顯示一個(gè)字符 A。8088INTR主 板IF18.2Hz 方波8259AINT中斷屏蔽寄存器IR0當(dāng)前中斷服務(wù)寄存器08h18259A時(shí)鐘中斷程序時(shí)鐘信號(hào)連接在IR0上,申請(qǐng)的中斷類型號(hào)為08H。時(shí)鐘信號(hào)是一個(gè)頻率為18.2HZ的方波信號(hào),即每秒向8259A發(fā)出18.2次的中斷申請(qǐng)。如果CPU響應(yīng)該

46、中斷申請(qǐng),則以每秒18.2次的頻率執(zhí)行08H類型的中斷子程。分析80888259AINTR IR018.2Hz方波信號(hào)INT中斷申請(qǐng)的任務(wù)是每5秒顯示一個(gè)字符A1秒執(zhí)行18.2次,則5秒執(zhí)行18.25=91次,只在執(zhí)行到第91次時(shí)顯示A,其它不顯示。在中斷子程中用一個(gè)量來計(jì)數(shù)中斷子程被執(zhí)行的次數(shù),即CPU響應(yīng)IR0中斷申請(qǐng)的次數(shù)。當(dāng)達(dá)到91次,則顯示A,并將計(jì)數(shù)值清0,重新計(jì)數(shù);其它情況只計(jì)數(shù),不顯示A。中斷子程的最后應(yīng)發(fā)中斷結(jié)束命令EOI。主程序中斷子程CLI關(guān)中斷保存原08H中斷向量設(shè)置新08H中斷向量設(shè)置8259A的中斷屏蔽字,允許IR0中斷 08H中斷子程 執(zhí)行次數(shù)初值0STI開中斷主

47、程其它工作處理(可用雙重循環(huán)延時(shí)代替)恢復(fù)原08H中斷向量返回DOS開始CX發(fā)中斷結(jié)束命令EOI恢復(fù)現(xiàn)場(chǎng)IRET中斷返回保存現(xiàn)場(chǎng)開始中斷子程被執(zhí)行一次CX CX+1 NY調(diào)02HDOS功能顯示字符A CX 0 重新記數(shù)到91次,即5秒時(shí)間到?code SEGMENT ASSUME CS:codestart: CLI ;關(guān)中斷MOV AL, 08H MOV AH, 35HINT 21H ;取系統(tǒng)08H類型中斷向量PUSH ES ;用堆棧保存 PUSH BXPUSH DS MOV DX, OFFSET display ;設(shè)置08H 類型中斷向量 MOV AX, SEG displayMOV DS,

48、 AXMOV AL, 08HMOV AH, 25HINT 21HPOP DS程序清單:IN AL, 21H ;設(shè)置8259A中斷屏蔽字, AND AL, 1111 1110B ;允許IR0中斷 OUT 21H, ALMOV CX, 0 ;置中斷子程計(jì)數(shù)器初值為0STI ;CPU開中斷MOV SI, 8000H ;用雙重循環(huán)延時(shí),w2: MOV DI, 8000H ;模擬CPU對(duì)其他任務(wù)的處理 w1: DEC DI ;DI,SI的值可修改,控制主程執(zhí)行時(shí)間JNZ w1DEC SIJNZ w2POP DX ;恢復(fù)系統(tǒng)08H類型中斷向量 POP DSMOV AL, 08HMOV AH, 25HINT 21HMOV AH, 4CH ;返回DO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論