第6章 輸入及輸出中斷_第1頁(yè)
第6章 輸入及輸出中斷_第2頁(yè)
第6章 輸入及輸出中斷_第3頁(yè)
第6章 輸入及輸出中斷_第4頁(yè)
第6章 輸入及輸出中斷_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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)介

1、 計(jì)算機(jī)系統(tǒng)由計(jì)算機(jī)系統(tǒng)由主機(jī)主機(jī)和和外部設(shè)備外部設(shè)備兩大部分組成,外設(shè)不能直兩大部分組成,外設(shè)不能直接和計(jì)算機(jī)系統(tǒng)的三總線相連接,必須在外設(shè)和接和計(jì)算機(jī)系統(tǒng)的三總線相連接,必須在外設(shè)和CPU三總線之三總線之間增設(shè)一個(gè)能控制外設(shè)與間增設(shè)一個(gè)能控制外設(shè)與CPU進(jìn)行信息交換的中轉(zhuǎn)電路(即接進(jìn)行信息交換的中轉(zhuǎn)電路(即接口電路),來(lái)協(xié)調(diào)口電路),來(lái)協(xié)調(diào)CPU和外設(shè)間的信息交換及工作秩序。和外設(shè)間的信息交換及工作秩序。接口電路(即可編程接口芯片)種類很多,它的顯著特點(diǎn)是可編程接口電路(即可編程接口芯片)種類很多,它的顯著特點(diǎn)是可編程性,即可以通過(guò)編程來(lái)規(guī)定其功能及操作參數(shù)。性,即可以通過(guò)編程來(lái)規(guī)定其功能

2、及操作參數(shù)。存儲(chǔ)器存儲(chǔ)器I/O設(shè)備設(shè)備不不同同點(diǎn)點(diǎn)種類少種類少種類多種類多功能單一功能單一功能多樣功能多樣傳送一個(gè)字節(jié)傳送一個(gè)字節(jié)傳送規(guī)律豐富傳送規(guī)律豐富與與CPU速度匹配速度匹配與與CPU速度不匹配速度不匹配易于控制易于控制控制難控制難結(jié)論結(jié)論可與可與CPU直接相連直接相連需要經(jīng)過(guò)需要經(jīng)過(guò)I/O接口電路與接口電路與CPU連接連接二、接口電路的基本結(jié)構(gòu)二、接口電路的基本結(jié)構(gòu)數(shù)據(jù)總線控制總線地址總線數(shù)據(jù)緩沖器讀/寫(xiě)/中斷控制邏輯數(shù)據(jù)端口控制端口狀態(tài)端口端口地址譯碼外部設(shè)備接口電路數(shù)據(jù)線控制線狀態(tài)線端口地址是計(jì)算機(jī)端口地址是計(jì)算機(jī)系統(tǒng)一種重要資源系統(tǒng)一種重要資源 系系統(tǒng)統(tǒng)板板 00001F0200

3、3F04005F06007F08009F0A00BF0C00DF0E00FFDMA控制器控制器1中斷控制器中斷控制器1定時(shí)計(jì)數(shù)器定時(shí)計(jì)數(shù)器并行接口電路并行接口電路DMA頁(yè)面寄存器頁(yè)面寄存器中斷控制器中斷控制器2DMA控制器控制器2協(xié)處理器協(xié)處理器 I/O 通通 道道1F01F820020727827F2F82FF37837F38038F3A03AF3B03BF3D03DF3F03F73F83FF硬盤(pán)適配器硬盤(pán)適配器游戲接口游戲接口并行打印機(jī)接口并行打印機(jī)接口LPT2串行通信接口串行通信接口COM2并行打印機(jī)接口并行打印機(jī)接口LPT1SDLC通信接口通信接口BSC通信接口通信接口單色顯示單色顯示

4、/打印機(jī)適配器打印機(jī)適配器彩色圖形適配器彩色圖形適配器CGA軟盤(pán)適配器軟盤(pán)適配器串行通信接口串行通信接口COM18086的的I/O端口空間分配端口空間分配 x86訪問(wèn)外設(shè)時(shí)只使用低訪問(wèn)外設(shè)時(shí)只使用低16位位A0A15,尋址,尋址64K個(gè)個(gè)8位位I/O端口,端口,PC機(jī)僅使用低機(jī)僅使用低10位位A0A9,尋址,尋址1024個(gè)個(gè)8位位I/O端口端口例:例:8086用用DMA方式輸出單個(gè)數(shù)據(jù)方式輸出單個(gè)數(shù)據(jù)中斷源中斷源中斷中斷請(qǐng)求請(qǐng)求 當(dāng)當(dāng) 前前 程程 序序中斷中斷服務(wù)服務(wù)程序程序程序斷點(diǎn)程序斷點(diǎn)中斷返回中斷返回中斷響應(yīng)中斷響應(yīng)l中斷優(yōu)先級(jí)的解決方法中斷優(yōu)先級(jí)的解決方法u軟件查詢法(需要少量硬件)軟

5、件查詢法(需要少量硬件)u菊花鏈(菊花鏈(daisy chain)優(yōu)先級(jí)排隊(duì)電路)優(yōu)先級(jí)排隊(duì)電路u可編程中斷控制器(如可編程中斷控制器(如8259)通常,正在執(zhí)行較低級(jí)的通常,正在執(zhí)行較低級(jí)的中斷服務(wù)程序時(shí),可以響應(yīng)較中斷服務(wù)程序時(shí),可以響應(yīng)較高級(jí)的中斷請(qǐng)求,而將正在處高級(jí)的中斷請(qǐng)求,而將正在處理的中斷暫時(shí)掛起,稱為理的中斷暫時(shí)掛起,稱為中斷中斷嵌套。嵌套。01267INT磁磁盤(pán)盤(pán)磁磁帶帶CRT鍵鍵盤(pán)盤(pán)打打印印“或或”端口號(hào)端口號(hào)XXH256級(jí)中斷的中斷入口地址表級(jí)中斷的中斷入口地址表 為了避開(kāi)由外設(shè)硬件產(chǎn)生為了避開(kāi)由外設(shè)硬件產(chǎn)生INTR中斷請(qǐng)求信號(hào)和提供中中斷請(qǐng)求信號(hào)和提供中斷類型號(hào)的麻煩,

6、可以用軟件中斷指令斷類型號(hào)的麻煩,可以用軟件中斷指令I(lǐng)NT nn來(lái)模擬來(lái)模擬外設(shè)提供的硬件中斷。外設(shè)提供的硬件中斷。00000H00004H003FCH0型中斷向量型中斷向量1型中斷向量型中斷向量255型中斷向量型中斷向量n型中斷向量型中斷向量4*n4n4n+2n型型ISP首指令的有效地址首指令的有效地址n型型ISP代碼段的段基址代碼段的段基址00000H00001H0000CH(0000:000CH)1EA00H(1E00:0A00H)FFFFFH低地址低地址內(nèi)存內(nèi)存高地址高地址 1E00 0 H+ 0A0 0 H 1EA0 0 H中斷服務(wù)程序中斷服務(wù)程序.1E(CSH)00(CSL)0A(

7、IPH)00(IPL).中斷類型號(hào)中斷類型號(hào)34000CH 首先,中斷請(qǐng)求信號(hào)首先,中斷請(qǐng)求信號(hào)INTR由外部設(shè)備產(chǎn)生由外部設(shè)備產(chǎn)生并送至并送至8086的的INTR引引腳上。腳上。 CPU是否響應(yīng)取決于是否響應(yīng)取決于CPU內(nèi)部的內(nèi)部的IF標(biāo)志。標(biāo)志。 IBM PC系列微機(jī)的中斷結(jié)構(gòu)系列微機(jī)的中斷結(jié)構(gòu)l 8086執(zhí)行中斷響應(yīng)時(shí),在執(zhí)行中斷響應(yīng)時(shí),在2個(gè)中斷響應(yīng)周期之間插入了個(gè)中斷響應(yīng)周期之間插入了2個(gè)或個(gè)或插入插入3個(gè)空閑狀態(tài)。個(gè)空閑狀態(tài)。l 但在但在8088 CPU的的2個(gè)中斷響應(yīng)周期之間并沒(méi)有插入空閑狀態(tài)個(gè)中斷響應(yīng)周期之間并沒(méi)有插入空閑狀態(tài)l 當(dāng)一個(gè)非屏蔽中斷,或一個(gè)軟件中斷或一個(gè)單步中斷被

8、響應(yīng)當(dāng)一個(gè)非屏蔽中斷,或一個(gè)軟件中斷或一個(gè)單步中斷被響應(yīng)時(shí),以上各步均要執(zhí)行,除了第時(shí),以上各步均要執(zhí)行,除了第1步不存在步不存在l 對(duì)于由軟件產(chǎn)生的中斷,除了沒(méi)有執(zhí)行中斷響應(yīng)總線周期外,對(duì)于由軟件產(chǎn)生的中斷,除了沒(méi)有執(zhí)行中斷響應(yīng)總線周期外,其余的則執(zhí)行同樣序列的總線周期。其余的則執(zhí)行同樣序列的總線周期。六、六、 中斷服務(wù)子程序設(shè)計(jì)中斷服務(wù)子程序設(shè)計(jì) 在中斷向量表中在中斷向量表中40H7FH中斷向量是留給用戶增加中中斷向量是留給用戶增加中斷服務(wù)程序時(shí)使用的。為此斷服務(wù)程序時(shí)使用的。為此,可以將某些通用性強(qiáng)的子程序功可以將某些通用性強(qiáng)的子程序功能能,用中斷子程序來(lái)實(shí)現(xiàn)。一旦設(shè)置好這樣的中斷子程序

9、用中斷子程序來(lái)實(shí)現(xiàn)。一旦設(shè)置好這樣的中斷子程序,在其在其他應(yīng)用程序中就可以調(diào)用這個(gè)中斷程序。他應(yīng)用程序中就可以調(diào)用這個(gè)中斷程序。 中斷服務(wù)程序的編程原則中斷服務(wù)程序的編程原則l中斷是異步發(fā)生的,進(jìn)入響應(yīng)時(shí)并不考慮當(dāng)前運(yùn)行狀態(tài),中斷是異步發(fā)生的,進(jìn)入響應(yīng)時(shí)并不考慮當(dāng)前運(yùn)行狀態(tài),因此中斷服務(wù)程序必須保護(hù)現(xiàn)場(chǎng)因此中斷服務(wù)程序必須保護(hù)現(xiàn)場(chǎng)l在進(jìn)入具體中斷處理之前要先初始化中斷向量,使其指向在進(jìn)入具體中斷處理之前要先初始化中斷向量,使其指向相應(yīng)的中斷服務(wù)程序,但在此之前要先關(guān)中斷,以防接管相應(yīng)的中斷服務(wù)程序,但在此之前要先關(guān)中斷,以防接管中斷過(guò)程中發(fā)生中斷中斷過(guò)程中發(fā)生中斷l(xiāng)在中斷服務(wù)程序入口處要立即開(kāi)

10、中斷,以允許較高優(yōu)先級(jí)在中斷服務(wù)程序入口處要立即開(kāi)中斷,以允許較高優(yōu)先級(jí)的中斷產(chǎn)生的中斷產(chǎn)生l中斷服務(wù)程序的服務(wù)時(shí)間要盡量壓縮,以免干擾同級(jí)或低中斷服務(wù)程序的服務(wù)時(shí)間要盡量壓縮,以免干擾同級(jí)或低級(jí)中斷設(shè)備的工作級(jí)中斷設(shè)備的工作l由于由于PC機(jī)中機(jī)中8259采用正常結(jié)束中斷,因此在中斷服務(wù)程采用正常結(jié)束中斷,因此在中斷服務(wù)程序執(zhí)行序執(zhí)行IRET返回前應(yīng)向返回前應(yīng)向8259發(fā)結(jié)束中斷命令發(fā)結(jié)束中斷命令EOI MOV AL, 20H ; 使當(dāng)前使當(dāng)前ISR中的對(duì)應(yīng)位復(fù)位中的對(duì)應(yīng)位復(fù)位 OUT 20H, AL IRETl當(dāng)編制替代系統(tǒng)原有中斷服務(wù)程序時(shí),應(yīng)保存好原中斷當(dāng)編制替代系統(tǒng)原有中斷服務(wù)程序時(shí),

11、應(yīng)保存好原中斷向量的內(nèi)容。在應(yīng)用程序終止前恢復(fù)原有的中斷向量向量的內(nèi)容。在應(yīng)用程序終止前恢復(fù)原有的中斷向量l中斷服務(wù)程序不要使用中斷服務(wù)程序不要使用DOS系統(tǒng)功能調(diào)用(系統(tǒng)功能調(diào)用(INT 21H),),因?yàn)橐驗(yàn)镈OS不允許重入不允許重入l若中斷服務(wù)程序只為某個(gè)應(yīng)用程序服務(wù),則中斷服務(wù)程若中斷服務(wù)程序只為某個(gè)應(yīng)用程序服務(wù),則中斷服務(wù)程序可以和主程序組裝成一個(gè)程序一起裝入內(nèi)存,隨主程序可以和主程序組裝成一個(gè)程序一起裝入內(nèi)存,隨主程序結(jié)束而一起退出內(nèi)存序結(jié)束而一起退出內(nèi)存l若中斷服務(wù)程序?yàn)槎鄠€(gè)應(yīng)用程序服務(wù),則中斷服務(wù)程序若中斷服務(wù)程序?yàn)槎鄠€(gè)應(yīng)用程序服務(wù),則中斷服務(wù)程序可以與一個(gè)初始化程序組裝成一個(gè)

12、程序一起裝入內(nèi)存,可以與一個(gè)初始化程序組裝成一個(gè)程序一起裝入內(nèi)存,通過(guò)初始化程序的執(zhí)行而將中斷服務(wù)程序駐留內(nèi)存通過(guò)初始化程序的執(zhí)行而將中斷服務(wù)程序駐留內(nèi)存 中斷向量表的操作中斷向量表的操作 讀寫(xiě)中斷向量表不能使用讀寫(xiě)中斷向量表不能使用MOV指令,而應(yīng)調(diào)用相應(yīng)的指令,而應(yīng)調(diào)用相應(yīng)的DOS功能功能l取中斷向量取中斷向量u預(yù)置預(yù)置AH=35H, AL=中斷類型號(hào)中斷類型號(hào)u執(zhí)行執(zhí)行INT 21H把類型號(hào)為把類型號(hào)為AL的中斷向量取出到的中斷向量取出到ES:BX中中l(wèi)設(shè)置中斷向量設(shè)置中斷向量u預(yù)置預(yù)置AH=25H, AL=中斷類型號(hào)中斷類型號(hào),DS:DX=中斷向量中斷向量u執(zhí)行執(zhí)行INT 21H把把D

13、S:DX指向的中斷向量放置到中斷向量表中類指向的中斷向量放置到中斷向量表中類型號(hào)為型號(hào)為AL的中斷向量處的中斷向量處 中斷服務(wù)程序的編程中斷服務(wù)程序的編程中斷入口中斷入口保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)為中斷源服務(wù)部分為中斷源服務(wù)部分發(fā)中斷結(jié)束命令發(fā)中斷結(jié)束命令恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)中斷返回中斷返回常規(guī)內(nèi)存:常規(guī)內(nèi)存:1MB基本基本RAM區(qū):區(qū):640KB保留保留RAM區(qū):區(qū):128KB擴(kuò)展擴(kuò)展ROM區(qū):區(qū):128KB基本基本ROM區(qū):區(qū):64KB擴(kuò)展內(nèi)存:用作擴(kuò)展內(nèi)存:用作RAM區(qū)區(qū)保留保留ROM64KB基本基本ROM64KB擴(kuò)展擴(kuò)展RAM15MB基本基本ROM64KB保留保留ROM64KB擴(kuò)展擴(kuò)展ROM128K

14、B顯示顯示RAM128KB系統(tǒng)系統(tǒng)RAM640KB000000H0A0000H0C0000H0E0000H0F0000H100000HFE0000HFFFFFFH常規(guī)內(nèi)存常規(guī)內(nèi)存1MB擴(kuò)展內(nèi)存擴(kuò)展內(nèi)存15MB保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)(將需要保護(hù)的寄存器壓入堆棧將需要保護(hù)的寄存器壓入堆棧)STI(可選可選);恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)IRET中斷處理中斷處理例如:例如:PUSH AXPUSH BXPUSH CXPOP CXPOP BXPOP AX 中斷服務(wù)程序的一般結(jié)構(gòu)中斷服務(wù)程序的一般結(jié)構(gòu)PUSHF; FR的內(nèi)容壓入堆棧的內(nèi)容壓入堆棧POP AX; FR的內(nèi)容彈出到的內(nèi)容彈出到AXOR AX,0100H; 使使

15、AX中對(duì)應(yīng)中對(duì)應(yīng)TF的位置為的位置為“1”,其他位不變其他位不變PUSH AX; 修改后的修改后的AX內(nèi)容壓入棧內(nèi)容壓入棧POPF 彈回到彈回到FR(TF=1)1-TFPUSHFPOP AXAND AX, 0F7FFHPUSH AX;POPF0-TFlIRET中斷返回指令中斷返回指令u中斷服務(wù)程序的出口指令,從棧頂彈出中斷服務(wù)程序的出口指令,從棧頂彈出6個(gè)字節(jié)個(gè)字節(jié)依次寫(xiě)入依次寫(xiě)入IP、CS和標(biāo)志寄存器和標(biāo)志寄存器u在執(zhí)行在執(zhí)行IRET之前必須保證棧頂是斷點(diǎn)地址,否之前必須保證棧頂是斷點(diǎn)地址,否則執(zhí)行則執(zhí)行IRET指令將導(dǎo)致系統(tǒng)癱瘓指令將導(dǎo)致系統(tǒng)癱瘓解:由于解:由于1CH為用戶的中斷類型,因此

16、在編寫(xiě)新的中斷程序時(shí)為用戶的中斷類型,因此在編寫(xiě)新的中斷程序時(shí)應(yīng)做以下工作:應(yīng)做以下工作:(1)在主程序的初始化部分,先保存當(dāng)前中斷向量表的內(nèi)容,)在主程序的初始化部分,先保存當(dāng)前中斷向量表的內(nèi)容,再置新的中斷向量(再置新的中斷向量(INT 21H,功能號(hào)功能號(hào)AH=35H););(2)需要屏蔽定時(shí)器中斷:)需要屏蔽定時(shí)器中斷: IN AL, 21H AND AL, 11111110B OUT 21H, AL(3)在主程序結(jié)束部分恢復(fù)保存的)在主程序結(jié)束部分恢復(fù)保存的1CH向量(向量(INT 21H,功,功能號(hào)能號(hào)AH=25H)。)。sstack segment STACKdb 256 dup

17、 (0); 定義堆棧段,定義堆棧段,256字節(jié)字節(jié)sstack endsdata segment; 定義數(shù)據(jù)段定義數(shù)據(jù)段count dw 1mess db Time is up!, 0dh, 0ah, $data endscode segment; 定義代碼段,字符串顯示定義代碼段,字符串顯示main proc farassume cs:code, ds:data, ss:sstackstart:push dssub ax, axpush axmov ax, datamovds, axmov ax, sstackmov ss, ax; 初始化段寄存器初始化段寄存器mov di, 07fffhdelay: mov si, 08fffhdelay1: mov bp, 2delay2: dec bpjnz delay2dec sijnz delay1dec dijnz delay; 重復(fù)延遲等候時(shí)間到引發(fā)多重復(fù)延遲等候時(shí)間到引發(fā)多次次1CH中斷中斷pop dxpop dsmov al, 1chmov ah, 25hin

溫馨提示

  • 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)論