版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章輸入輸出與中斷
本章首先介紹輸入輸出接口基本概念、CPU與外設(shè)數(shù)據(jù)傳送的方式。 然后,重點研究中斷傳送方式及相關(guān)的技術(shù)。
6.1輸入輸出接口概述一、CPU與外設(shè)間的連接為什么外設(shè)與計算機的連接不能像存儲器那樣直接掛到總線(DB、AB、CB)上,而必須通過各自的專用接口電路?
CPU對外設(shè)的輸入輸出操作類似于存儲器的讀寫操作,但外設(shè)與存儲器有許多不同點:
表6.1存儲器與外設(shè)的比較
存儲器I/O設(shè)備不同點品種有限功能單一品種繁多功能多樣與CPU電平匹配與CPU電平不一定匹配數(shù)據(jù)格式固定數(shù)據(jù)格式不固定與CPU速度匹配與CPU速度不一定匹配易于控制難于控制結(jié)論可與CPU直接連接要經(jīng)過I/O接口電路與CPU連接
接口電路的作用:
。電平轉(zhuǎn)換如,TTL→RS232CRS232C→TTL。數(shù)據(jù)格式轉(zhuǎn)換串行→并行,并行→串行。協(xié)調(diào)速度輸出鎖存輸入緩沖
二、接口電路的基本結(jié)構(gòu)
接口電路的基本結(jié)構(gòu)同它傳送的信息種類有關(guān)。信息可分為3類:數(shù)據(jù)信息,狀態(tài)信息,控制信息。
(一)數(shù)據(jù)信息數(shù)據(jù)信息是最基本的一種信息。它包括:
(1)數(shù)字量:通常為8位二進(jìn)制數(shù)或ASCII代碼。
(2)模擬量:傳感器把非電量(如溫度、壓力等)轉(zhuǎn)換得到模擬量模擬量須經(jīng)過A/D轉(zhuǎn)換,才能輸入計算機;計算機輸出的數(shù)字量也須經(jīng)D/A轉(zhuǎn)換后才能去控制外設(shè)
(3)開關(guān)量:是一些“0”或“1”兩個狀態(tài)的量,用一位“0”
或“1”二進(jìn)制數(shù)表示。一臺字長為8位的微機一次輸入或輸出
可控制8個這類物理量。數(shù)據(jù)信息是通過數(shù)據(jù)通道傳送的。
(二)狀態(tài)信息
狀態(tài)信息是反映外設(shè)當(dāng)前所處工作狀態(tài)的信息,以作為
CPU與外設(shè)間可靠交換數(shù)據(jù)的條件。
輸入時,告知CPU:輸入設(shè)備數(shù)據(jù)是否準(zhǔn)備好(Ready=1?)
輸出時,告知CPU:輸出設(shè)備是否空閑(Busy=0?)。
CPU是通過接口電路來掌握輸入輸出設(shè)備的狀態(tài),以決定可否輸入或輸出數(shù)據(jù)。(三)控制信息
它用于控制外設(shè)的啟動或停止。接口電路基本結(jié)構(gòu)如圖6.2所示。
6.2CPU與外設(shè)之間數(shù)據(jù)傳送的方式為了實現(xiàn)CPU與外設(shè)之間的數(shù)據(jù)傳送,通常采用以下3種I/O傳送方式。一、程序傳送
程序傳送是指CPU與外設(shè)間的數(shù)據(jù)交換在程序控制(即IN或OUT指令控制)下進(jìn)行。(一)無條件傳送(又稱同步傳送)
這種傳送方式只對固定的外設(shè)(如開關(guān)、繼電器等簡單外設(shè)),用程序來定時同步傳送數(shù)據(jù)。對少量數(shù)據(jù)傳送來說,這是最省時間的一種傳送方法,
適用于各類巡回檢測和過程控制。
輸入緩沖:
輸入數(shù)據(jù)時,因外設(shè)輸入數(shù)據(jù)的保持時間相對于CPU的接收速度來說較長,故輸入數(shù)據(jù)通常不用加鎖存器來鎖存,而直接使用三態(tài)緩沖器與CPU數(shù)據(jù)總線相連即可。輸出鎖存:輸出數(shù)據(jù)時,一般都需要鎖存器將要輸出的數(shù)據(jù)保持一段時間,其長短和外設(shè)的動作相適應(yīng)。鎖存時,在CE=1(為無效電平)時,數(shù)據(jù)總線上的新數(shù)據(jù)不能進(jìn)入鎖存器。CE=0(為有效電平)時將新數(shù)據(jù)再送入鎖存器保留。
輸入輸出(無條件程序傳送)原理圖如圖6.3所示(結(jié)合INAL,03H;OUT03H,AL指令講解
)例:一個采用同步傳送的數(shù)據(jù)采集系統(tǒng)如圖6.4所示。 這是一個16位精度的數(shù)據(jù)采集系統(tǒng),被采集的數(shù)據(jù)是
8個模擬量;每次采樣用一個4位數(shù)字電壓表測量,把被采樣的模擬量轉(zhuǎn)換成16位BCD碼(即對應(yīng)4位十進(jìn)制數(shù)的4個BCD碼);
高8位和低8位通過兩個不同的端口(其地址分別為10H和11H)輸入。
CPU通過端口20H輸出控制信號,以控制某個繼電器的吸合,實現(xiàn)采集不同通道的模擬量。
采集過程要求:
(1)先斷開所有的繼電器線圈及觸頭,不采集數(shù)據(jù)。
(2)延遲一段時間后,使K0閉合,采集第1個通道的模擬 量,并保持一段時間,以使數(shù)字電壓表能將模擬電壓轉(zhuǎn)換為
16位BCD碼。
(3)分別將高8位與低8位BCD碼存入內(nèi)存,完成第1個模 擬量的輸入與存儲。
(4)利用移位與循環(huán)實現(xiàn)8個模擬量的依次采集、輸入 與轉(zhuǎn)存。
數(shù)據(jù)采集程序如下:
START:
MOVDX,0100H;01H→DH,置吸合第1個繼電器
;00H→DL,置斷開所有繼電器
LEABX,DSTOR;置輸入數(shù)據(jù)緩沖器的地址指針
XORAL,AL;清AL及進(jìn)位位CF AGAIN:MOVAL,DLOUT20H,AL;斷開所有繼電器
CALLNEARDELAY1;模擬繼電器觸點的釋放時間
MOVAL,DHOUT20H,AL;先使P0吸合
CALLNEARDELAY2
;模擬觸點閉合及數(shù)字電壓表的轉(zhuǎn)換時間
INAX,10H;輸入轉(zhuǎn)換結(jié)果
MOV[BX],AX;存入內(nèi)存
INCBXINCBXRCLDH,1
;DH左移1位,為下一個觸點吸合作準(zhǔn)備
JNCAGAIN;8位都輸入完了嗎?沒有,則循環(huán)
DONE:;輸入已完,則執(zhí)行別的程序段
(二)程序查詢傳送(條件傳送——異步傳送)它也是一種程序傳送,但,是有條件的異步傳送。條件是:在執(zhí)行輸入(IN指令)或輸出(OUT指令)前,要先查詢接口中狀態(tài)寄存器的狀態(tài)。
輸入時,由該狀態(tài)信息指示要輸入的數(shù)據(jù)是否已“準(zhǔn)備就緒”;
輸出時,又由它指示輸出設(shè)備是否“空閑”,由此條件來決定執(zhí)行輸入或輸出。1.程序查詢輸入
讀入的數(shù)據(jù)是8位,而讀入的狀態(tài)信息往往是1位,如圖6.6所示。所以,不同的外設(shè)其狀態(tài)信息可以使用同一個端口,但只要使用不同的位就行。
這種查詢輸入方式的程
序流程圖如圖6.7所示。
查詢式輸入端口信息圖
查詢輸入部分的程序:
POLL:
INAL,STATUSPORT;讀狀態(tài)端口的信息
TESTAL,80H;設(shè)“準(zhǔn)備就緒”(READY)信息在D7位
JEPOLL;未“準(zhǔn)備就緒”,則循環(huán)再查
INAL,DATA_PORT;已“準(zhǔn)備就緒”(READY=1),則讀入數(shù)據(jù)
2.程序查詢輸出
輸出過程:。當(dāng)輸出裝置把CPU輸出的數(shù)據(jù)輸出以后,發(fā)出一個ACK信號,使D觸發(fā)器清“0”,也即使“BUSY”線為0(不忙);
。當(dāng)CPU讀入這個狀態(tài)信息后,知道外設(shè)“不忙”,于是就執(zhí)行輸出指令。
。待輸出指令執(zhí)行后,由地址信號和M/IO及WR相“或”,經(jīng)G1發(fā)出選通信號,把在數(shù)據(jù)總線上的輸出數(shù)據(jù)送至鎖存器;同時,觸發(fā)D觸發(fā)器為“1”狀態(tài),它一方面通知外設(shè):輸出數(shù)據(jù)已準(zhǔn)備好,可以執(zhí)行輸出操作,另一方面在數(shù)據(jù)由輸出裝置輸出以前,一直為“1”,告知CPU外設(shè)“BUSY”,阻止CPU輸出新的數(shù)據(jù)。
查詢輸出部分的程序:
POLL:INAL,STATUS_PORT;查狀態(tài)端口中的狀態(tài)信息D7TESTAL,80HJNEPOLL;;D7=1即BUSY=1,則循環(huán)再查
MOVAL,STORE
;否則,外設(shè)空閑,由內(nèi)存讀取數(shù)據(jù)
OUTDATA_PORT,AL;輸出到DATA地址端口單元
查詢式輸出時的數(shù)據(jù)和狀態(tài)信息
3.一個采用查詢方式的數(shù)據(jù)采集系統(tǒng)
一個有8個模擬量輸入的數(shù)據(jù)采集系統(tǒng),用查詢方式 與CPU傳送信息,電路如圖6.11所示。
采集過程要求:
(1)初始化。
(2)先停止A/D轉(zhuǎn)換。
(3)啟動A/D轉(zhuǎn)換,查輸入狀態(tài)信息READY。
(4)當(dāng)輸入數(shù)據(jù)已轉(zhuǎn)換完(READY=1,即準(zhǔn)備就緒),則
經(jīng)由端口3輸入至CPU的累加器AL中,并轉(zhuǎn)送內(nèi)存。
(5)設(shè)置下一個內(nèi)存單元與下一個輸入通道,循環(huán)8次。
查詢方式數(shù)據(jù)采集系統(tǒng)程序控制口(04H,OUT)b2~b0:通道號;b4:A/D啟動信號狀態(tài)口(02H,IN)b0:A/D轉(zhuǎn)換結(jié)束READY信號數(shù)據(jù)口(03H,IN)A/D轉(zhuǎn)換數(shù)據(jù);初始化START: MOV DL,0F8H;為什么設(shè)此初值? MOV AX,SEGDSTOR MOV ES, AX LEA DI, DSTOR;發(fā)控制命令A(yù)GAIN: MOV AL, DL AND AL, 0EFH OUT 04H, AL CALL DELAY MOV AL, DL OUT 04H, AL;為什么每次要發(fā)2次控制命令?中間要加延時?;查詢A/D狀態(tài),讀入數(shù)據(jù)POLL: IN AL, 02H SHR AL, 1 JNC POLL;其它判別方法?
IN AL, 03H STOSB INC DL JNE AGAIN;??帶注釋的數(shù)據(jù)采集程序:
STARE:MOVDL,0F8H;設(shè)置啟動A/D轉(zhuǎn)換的信號,
;且低3位選通多路開關(guān)通道
MOVAX,SEGDSTOR;設(shè)置輸入數(shù)據(jù)的內(nèi)存單元地址指針
MOVES,AXLEADI,DSTORAGAIN:MOVAL,DLANDAL,0EFH;使D4=0
OUT04,AL;停止A/D轉(zhuǎn)換
CALLDELAY;等待停止A/D轉(zhuǎn)換操作的完成
MOVAL,DLOUT04,AL;選輸入通道并啟動A/D轉(zhuǎn)換
POLL:INAL,02;輸入狀態(tài)信息
SHRAL,1;查AL的D0JNCPOLL;判READY=1?
;若D0=0,未準(zhǔn)備好,則循環(huán)再查
INAL,03;若已準(zhǔn)備就緒,;則經(jīng)端口3將采樣數(shù)據(jù)輸入至ALSTOSB;輸入數(shù)據(jù)存入內(nèi)存單元
INCDL;輸入模擬量通道增1JNEAGAIN;8個模擬量未輸入完則循環(huán)
;輸入已完,執(zhí)行別的程序
總結(jié)查詢輸入/輸出傳送方式的步驟:
(1)CPU從I/O接口的狀態(tài)端口中讀入外設(shè)狀態(tài)信息“READY”或“BUSY”。
(2)根據(jù)讀入的狀態(tài)信息進(jìn)行判斷。程序查詢輸入時,若狀態(tài)信息READY=0,則外設(shè)數(shù)據(jù)未準(zhǔn)備好,CPU繼續(xù)等待查詢,直至READY=1,外設(shè)已準(zhǔn)備好數(shù)據(jù),執(zhí)行下一步操作;程序查詢輸出時,若狀態(tài)信息BUSY=1,則外設(shè)正在“忙”,CPU繼續(xù)等待查詢,直至外設(shè)“空閑”,BUSY=0時,執(zhí)行下一步操作。
(3)執(zhí)行輸入/輸出指令,進(jìn)行I/O傳送。完成數(shù)據(jù)的輸入/輸出,同時將外設(shè)的狀態(tài)信息復(fù)位,一個8位的數(shù)據(jù)傳送結(jié)束。當(dāng)計算機工作任務(wù)較輕或CPU不太忙時,可以應(yīng)用程序查詢輸入/輸出傳送方式,它能較好地協(xié)調(diào)外設(shè)與CPU之間速度的差別;程序和接口電路比較簡單。
該方式主要缺點:
循環(huán)查詢等待很費時間,大大降低了CPU的運行效率。二、中斷傳送
上述程序查詢傳送方式不僅要降低CPU的運行效率,而且,在一般實時控制系統(tǒng)中,往往有數(shù)十乃至數(shù)百個外設(shè),由于它們的工作速度不同,要求CPU為它們服務(wù)是隨機的,有些要求很急迫,若用查詢方式除浪費大量等待查詢時間外,還很難使每一個外設(shè)都能工作在最佳工作狀態(tài)。為了提高CPU執(zhí)行有效程序的工作效率和提高系統(tǒng)中多臺外設(shè)的工作效率,可以讓外設(shè)處于能主動申請中斷的工作方式,這在有多個外設(shè)及速度不匹配時,尤為重要。
所謂中斷就是外設(shè)或其他中斷源中止CPU當(dāng)前正在執(zhí)行的程序,而轉(zhuǎn)向為該外設(shè)服務(wù)(如完成它與CPU之間傳送一個數(shù)據(jù))的程序,一旦服務(wù)結(jié)束,又返回原程序繼續(xù)工作。這樣,外設(shè)處理數(shù)據(jù)期間,CPU就不必浪費大量時間去查詢它們的狀態(tài),只待外設(shè)處理完畢主動向CPU提出請求(向CPU發(fā)中斷請求信號),而CPU在每一條指令執(zhí)行的結(jié)尾階段,均查詢是否有中斷請求信號(這種查詢是由硬件完成的,不占用CPU的工作時間),若有,則暫停執(zhí)行現(xiàn)行的程序,轉(zhuǎn)去為申請中斷的某個外設(shè)服務(wù),以完成數(shù)據(jù)傳送。
中斷傳送方式的好處是:大大提高了CPU的工作效率,和系統(tǒng)中多個外設(shè)的工作效率。
三、直接存儲器存?。ǎ模停粒﹤魉?/p>
利用程序中斷傳送方式,雖然可以提高CPU的工作率,但它仍需由CPU通過程序來傳送數(shù)據(jù),并在處理中 斷時,還要“保護現(xiàn)場”和“恢復(fù)現(xiàn)場”,而這兩部分操作的程序段又與數(shù)據(jù)傳送沒有直接關(guān)系,卻要占用一定時間, 使每傳送一個字節(jié)大約需要幾十微秒到幾百微秒,這對于 高速外設(shè)以及成組交換數(shù)據(jù)的場合,就顯得太慢了。
DMA(DirectMemoryAccess)方式或稱為數(shù)據(jù)通 道方式是一種由專門的硬件電路控制I/O交換的傳送方 式,它讓外設(shè)接口可直接與內(nèi)存進(jìn)行高速的數(shù)據(jù)傳送,而
不必經(jīng)過CPU,這樣就不必進(jìn)行保護現(xiàn)場之類的額外操 作,可實現(xiàn)對存儲器的直接存取。這種專門的硬件電路就是DMA控制器,簡稱為DMAC。如Zilog 公司的Z80-DMA,Intel公司的8257,8237A和Motorola的MC6844等。圖6.12給出了8086用DMA方式傳送單個數(shù)據(jù)(輸出數(shù)據(jù))的示意圖。
①當(dāng)接口準(zhǔn)備就緒,便向DMA控制器發(fā)DMA請求;②DMA控制器通過HOLD引腳向CPU發(fā)出的總線請求;③CPU在完成當(dāng)前總線操作以后,就會
在HLDA引腳上向DMA控制器發(fā)出允許信號,DMA控制器接收到此信號后就接管了對總線的控制權(quán)(由DMAC發(fā)與傳送相關(guān)的地址信號和讀/寫控制信號)。④當(dāng)DMA傳送結(jié)束,DMA控制器將HOLD信號變?yōu)榈碗娖?并放棄對總線的控制。⑤CPU檢測到HOLD信號變?yōu)榈碗娖胶?,也將HLDA信號變?yōu)榈碗娖?于是,CPU又恢復(fù)對系統(tǒng)總線的控制權(quán)。6.3中斷技術(shù)(自己閱讀、復(fù)習(xí))
中斷是一種十分重要而復(fù)雜的軟硬件相結(jié)合的技術(shù)。本節(jié)將介紹中斷的基本概念、中斷的響應(yīng)與處理過程、優(yōu)先權(quán)的安排等有關(guān)問題。一、中斷概述
(一)中斷與中斷源 使CPU暫停運行原來的程序而應(yīng)更為急迫事件的需要轉(zhuǎn)去執(zhí)行為中斷源服務(wù)的程序(稱為中斷服務(wù)程序),待該程序處理完后,再返回運行原程序,此即中斷(或中斷技術(shù))。所謂中斷源,即引起中斷的事件或原因,或發(fā)出中斷申請的來源。通常中斷源有以下幾種:
(1)外部設(shè)備:一般中、慢速外設(shè)如鍵盤、打印機等,在完成自身的操作后,向CPU發(fā)出中斷請求,要求CPU為它服務(wù)。
(2)實時時鐘:在自動控制中,常需要定時檢測與控制。此時,CPU可發(fā)出命令,啟動時鐘電路計時,待定時已到,時鐘電路就發(fā)中斷申請,由CPU轉(zhuǎn)去執(zhí)行服務(wù)程序。
(3)故障源:計算機內(nèi)設(shè)有故障自動檢測裝置,如發(fā)生運算出錯(溢出)、存儲器讀出出錯、外部設(shè)備故障、電源掉電以及越限報警等意外事件時,這些裝置都能使CPU中斷,進(jìn)行相應(yīng)的中斷處理。
以上3種屬于隨機中斷源。由隨機引起的中斷,稱為強迫中斷。
(4)為調(diào)試程序設(shè)置的中斷源:這是CPU執(zhí)行了特殊指令(自陷指令)或由硬件電路引起的中斷,主要是供用戶調(diào)試程序時而采取的檢查手段。如斷點設(shè)置、單步調(diào)試等.這些都要由中斷系統(tǒng)實現(xiàn)。一般稱這種中斷為自愿中斷。(二)中斷系統(tǒng)及其功能
中斷系統(tǒng)應(yīng)具有下列功能:
1.能響應(yīng)中斷、處理中斷與返回
2.能實現(xiàn)優(yōu)先權(quán)排隊
3.能實現(xiàn)中斷嵌套
高級中斷源能中斷低級的中斷處理
中斷系統(tǒng)是指為實現(xiàn)中斷而設(shè)置的各種硬件與軟件,包括中斷控制邏輯及相應(yīng)管理中斷的指令。
(三)中斷的應(yīng)用
中斷能解決快速CPU與中、慢速外設(shè)速度不匹配的矛盾,以提高主機的工作效率;中斷在實現(xiàn)分時操作、實時處理、故障處理、多機連接以及人機聯(lián)系等方面均有廣泛的應(yīng)用。二、單個中斷源的中斷
單個中斷源的中斷過程包括:中斷請求、中斷響應(yīng)、中斷處理和中斷返回等環(huán)節(jié)。
(一)中斷源向CPU發(fā)中斷請求信號的條件中斷源是通過其接口電路向CPU發(fā)中斷請求信號的,該信號能否發(fā)給CPU,應(yīng)滿足下列兩個條件:
1.設(shè)置中斷請求觸發(fā)器在每個中斷源的接口電路中設(shè)置一個中斷請求觸發(fā)器,由它產(chǎn)生中斷請求,并一直保持到CPU接受并響應(yīng)該中斷后,才能清除它。如圖6.15所示。
2.設(shè)置中斷屏蔽觸發(fā)器
通過中斷屏蔽觸發(fā)器,CPU可控制中斷源的中斷請求是否允許發(fā)向CPU。如圖6.15所示。(二)CPU響應(yīng)中斷的條件
當(dāng)中斷源向CPU發(fā)出INTR信號后,CPU若要響應(yīng)它,還應(yīng)滿足下列條件。
1.CPU開放中斷
CPU采樣到INTR信號后是否響應(yīng)它,由CPU內(nèi)部的中斷允許觸發(fā)器(如IFF)的狀態(tài)決定,如圖6.16所示.
中斷允許觸發(fā)器IFF的狀態(tài)可以由專門的開中斷與關(guān)中斷指令來設(shè)置:
開中斷:STI(IFF=1);
關(guān)中斷:CLI(IFF=0)。此外,當(dāng)CPU復(fù)位或響應(yīng)中斷后,也能使CPU關(guān)中斷。2.CPU在現(xiàn)行指令結(jié)束后響應(yīng)中斷
在CPU開中斷時,若有中斷請求信號發(fā)至CPU,它也并不立即響應(yīng)。只有當(dāng)現(xiàn)行指令運行到最后一個機器周期的最后一個T狀態(tài)時,CPU才采樣INTR信號;若有此信號,則把與門1的允許中斷輸出端置1,于是,CPU進(jìn)入中斷響應(yīng)周期。(三)CPU響應(yīng)中斷及處理過程
當(dāng)滿足上述條件后,CPU就響應(yīng)中斷,轉(zhuǎn)入中斷周期,完成下列幾步操作:
1.關(guān)中斷
CPU響應(yīng)中斷后,在發(fā)出中斷響應(yīng)信號(INTA)的同時,內(nèi)部自動地(由硬件)實現(xiàn)關(guān)中斷,以免在處理當(dāng)前中斷時又被新的中斷源中斷,以至破壞當(dāng)前中斷服務(wù)的現(xiàn)場。
2.保護斷點
CPU響應(yīng)中斷后,立即封鎖PC+1(此即斷點地址),且把此PC值
壓棧保護,以備中斷處理完畢后,CPU能返回斷點處繼續(xù)運行主 程序。
3.保護現(xiàn)場 在CPU處理中斷服務(wù)程序時,有可能用到各寄存器,從 而改變它們原來在主程序中的值,即破壞了原主程序中的現(xiàn)場信息。為使中斷服務(wù)程序不影響主程序的正常運行,要把主程序運行到斷點處時的有關(guān)寄存器的內(nèi)容和標(biāo)志位的狀態(tài)壓棧保護起來。
保護現(xiàn)場在中斷服務(wù)程序中是用PUSH指令完成的。
4.給出中斷入口(地址),轉(zhuǎn)入中斷服務(wù)程序
8086/8088由中斷源提供中斷類型號,并根據(jù)中斷類 型號在中斷向量表中取得中斷服務(wù)程序的入口地址。
在中斷服務(wù)程序完成后,還要執(zhí)行下述的5、6兩步操作。
5.恢復(fù)現(xiàn)場 把保存在堆棧中的各有關(guān)寄 存器的內(nèi)容和標(biāo)志位的狀態(tài)彈出恢復(fù)。該操作是在中斷服務(wù)程序中 用POP指令完成的。
6.中斷返回在中斷服務(wù)程序的最后,要安排一條中斷返回指令(IRET),將堆棧內(nèi)保 存的斷點彈出至PC,CPU恢復(fù)到斷點處繼續(xù)運行,彈出恢復(fù)標(biāo)志寄存器的值。同時,開中斷(以便CPU能響應(yīng)新的中斷請求)。
三、向量中斷
所謂向量中斷(VectoredInterrupt),是指通過中斷向量 來找中斷入口地址進(jìn)而轉(zhuǎn)向中斷服務(wù)程序的一種方法;
中斷向量則是用來提供中斷入口地址的一個地址指針。 例如8086/8088CPU的中斷系統(tǒng)就是采用這種向量中斷。其 詳細(xì)過程,將在下一節(jié)討論。
四、中斷優(yōu)先權(quán)
實際系統(tǒng)中,通常具有多個中斷源,而CPU的可屏蔽中斷請求線往往只有一條。如何解決多個中斷源同時請求中斷而只有一根中斷請求線的矛盾呢?1)要求CPU按多個中斷源的優(yōu)先權(quán)由高至低依次響應(yīng)中斷申請。
2)當(dāng)CPU正在處理中斷時,還要能響應(yīng)更高級的中斷申請,而屏蔽掉同級或低級的中斷申請。
CPU可以通過硬件排隊電路或軟件查詢技術(shù)兩種方法來實現(xiàn)按中斷優(yōu)先權(quán)對多個中斷源的管理;
也有專門協(xié)助CPU按中斷優(yōu)先權(quán)處理多個中斷源的中斷控 制芯片,如后面第7章中將要介紹的8259A芯片。6.48086/8088的中斷系統(tǒng)和中斷處理
本節(jié)將主要闡述8086/8088的中斷系統(tǒng)及其中斷處理的全過程。
一、8086/8088的中斷系統(tǒng)
8086/8088中斷采用中斷向量結(jié)構(gòu),每個中斷都有一個 特定的中斷類型碼(共256種類型的中斷)。這些中斷可以來自外部,即由硬件產(chǎn)生,也可以來自內(nèi)部,即由軟件(中斷指令)產(chǎn)生,或者滿足某些特定條件(陷阱)后引發(fā)CPU中斷。
8086/8088的中斷系統(tǒng)結(jié)構(gòu)
(一)外部中斷
8086/8088CPU有兩條引腳供外部中斷源請求中斷:一條是高電平有效的可屏蔽中斷INTR;另一條是上升沿有效的非屏蔽中斷NMI。
1.可屏蔽中斷可屏蔽中斷是由用戶定義的外部硬件中斷。CPU是否響應(yīng)此中斷請求,要取決于標(biāo)志寄存器中IF的狀態(tài)。若IF=0,則CPU處于關(guān)中斷狀態(tài),不響應(yīng)INTR;若IF=1,則CPU處于開中斷狀態(tài),響應(yīng)INTR,并通過INTA引腳向產(chǎn)生INTR的設(shè)備接口(中斷源)發(fā)回響應(yīng)信號,啟動中斷過程。
CPU在發(fā)第2個中斷響應(yīng)信號INTA時,將使發(fā)出中斷請求信號的接口把1字節(jié)的中斷類型碼通過數(shù)據(jù)總線傳送給CPU。 中斷允許標(biāo)志IF位的狀態(tài)可用指令STI使其置位,即開中斷;也可用CLI指令使其復(fù)位,即關(guān)中斷。
系統(tǒng)復(fù)位后或任一中斷被響應(yīng)后,IF=0,所以在執(zhí)行程序的過程中要用STI指令開中斷,以便CPU有可能響應(yīng)新的可屏蔽中斷請求。
2.非屏蔽中斷
8086/8088要求NMI上的請求脈沖的有效寬度(高電平 的持續(xù)時間)大于兩個時鐘周期。一旦此中斷請求信號產(chǎn)生,不管標(biāo)志位IF的狀態(tài)如何,即使在關(guān)中斷(IF=0)的情況下,CPU也能響應(yīng)它。
非屏蔽中斷源有3種:
1)系統(tǒng)板上RAM的奇偶校驗錯
2)擴展槽中的I/O通道錯
3)協(xié)處理器8087的中斷請求
由于NMI比INTR的中斷請求的級別高,因此,若在指令執(zhí)行過程中,INTR和NMI引腳上同時都有中斷請求信號,則CPU將首先響應(yīng)NMI引腳上的中斷請求。
Intel公司在設(shè)計8086/8088芯片時,已將NMI的中斷類型號預(yù)先定義為類型2,所以,CPU響應(yīng)非屏蔽中斷時,不要求外部向CPU提供中斷類型號,CPU在總線上也不發(fā)INTA信號。
(二)內(nèi)部中斷
1.除法出錯中斷——類型0(優(yōu)先級最高) 執(zhí)行除法指令時,若除數(shù)為0或商超過范圍,則立即產(chǎn)生類型為0的內(nèi)部中斷,CPU轉(zhuǎn)向除法出錯的中斷服務(wù)程序。
2.溢出中斷——類型4 若上一條指令執(zhí)行的結(jié)果使溢出標(biāo)志位置1(OF=1),則在
執(zhí)行溢出中斷(INTO)指令時,將引起類型4的內(nèi)部中斷,CPU
就可以轉(zhuǎn)入對溢出錯誤進(jìn)行處理的中斷服務(wù)程序。 若OF=0
時,則INTO指令執(zhí)行空操作。INTO指令常常緊跟在算術(shù)運算指令之后,以便在該指令執(zhí)行產(chǎn)生溢出時由INTO指令進(jìn)行特殊的處理。
3.單步中斷——類型1標(biāo)志位TF被置位(TF=1)時,8086/8088處于單 步工作方式,即CPU每執(zhí)行完一條指令后就自動地產(chǎn)生一 個類型1的內(nèi)部中斷,程序控制將轉(zhuǎn)入單步中斷服務(wù)程序。
CPU響應(yīng)單步中斷后將自動把狀態(tài)標(biāo)志壓入堆棧,然后清除TF和IF標(biāo)志位。 單步中斷服務(wù)程序結(jié)束時,再通過執(zhí)行IRET中斷返回指令,將CS與IP的內(nèi)容出棧,并恢復(fù)標(biāo)志寄存器的內(nèi)容,
使程序返回到斷點處。由于在中斷時TF位被保護起來了,中斷返回時TF位又被重新恢復(fù)(TF=1),所以CPU在中斷返回以后仍然處于單步工作方式。
4.斷點中斷——類型3
8086/8088指令系統(tǒng)中有一條設(shè)置程序斷點的單字節(jié)中斷指令(INT3),執(zhí)行該指令以后就會產(chǎn)生一個中斷類型為3的內(nèi)部中斷,CPU將轉(zhuǎn)向執(zhí)行一個斷點中斷服務(wù)程序,以便進(jìn)行一些特殊的處理.
斷點中斷指令主要用于軟件調(diào)試中,程序員可用它在程序中設(shè)置一個程序斷點。
5.用戶定義的軟件中斷——類型n
在8086/8088的內(nèi)部中斷中,有一個可由用戶定義的 雙字節(jié)的中斷指令I(lǐng)NTn,其第1個字節(jié)為INT的操作碼,
第2個字節(jié)n是它的中斷類型碼。中斷類型碼n由程序員 編程時給定。
(三)內(nèi)部中斷的特點
(1)內(nèi)部中斷由一條INTn指令直接產(chǎn)生,其中斷類型號n或者包括在指令中,或者已由系統(tǒng)預(yù)先定義。
(2)除單步中斷以外,所有內(nèi)部中斷都不能被屏蔽。
(3)所有內(nèi)部中斷都沒有中斷響應(yīng)總線周期,這是因為內(nèi)部中斷不必通過查詢外部來獲得中斷類型號。
(4)硬、軟中斷的優(yōu)先級排隊如表6.2所示。8086/8088
中斷系統(tǒng)規(guī)定,除了單步中斷以外,所有內(nèi)部中斷的優(yōu)先權(quán) 都比外部中斷的優(yōu)先權(quán)高。如果在執(zhí)行一個能引起內(nèi)部中斷指令的同時,在NMI或INTR引腳端也產(chǎn)生了外部中斷請求,則 CPU將首先處理內(nèi)部中斷。三、中斷向量表
中斷向量表也稱中斷入口地址表。 中斷向量表放在存儲在00000H到003FFH之間,占1K字節(jié)。 中斷向量表分成256組,每組由兩個字(即4個字節(jié))組成一個雙字長的指針。 雙字長指針的高地址存放的字是中斷服務(wù)程序入口地址所在的代碼段的16位段地址(CS);
低地址字是中斷服務(wù)程序入口地址相對于段起始地址的偏移值(IP)。
CPU通過CS和IP的值得到一個20位的地址(16位的CS段地址左移4位,然后加上IP值),它就是中斷服務(wù)程序的實際入口地址。
256級中斷的中斷向量表如圖6.20所示。
圖6.20的中斷向量表分為3部分。
第1部分類型0~類型4專用中斷 這5種中斷的入口已由系統(tǒng)定義,不允許用戶修改。
第2部分類型5~類型31系統(tǒng)備用中斷 這是Intel公司為軟、硬件開發(fā)保留的中斷類型,
一般不允許用戶作其他用途,其中許多中斷已被系統(tǒng)開發(fā) 使用,例如類型21H已用作系統(tǒng)功能調(diào)用的軟中斷。
第3部分類型32~類型255可供用戶使用 這些中斷可由用戶定義為軟中斷,由INTn指令引入,也可以是通過INTR端直接引入硬件可屏蔽中斷,使用時用戶要自行設(shè)置相應(yīng)的中斷入口地址。
每個中斷向量具有一個相應(yīng)的中斷類型號。
中斷類型號乘4,將給出中斷向量表中的中斷向量入口第1字節(jié)的物理地址。
例如,若中斷類型號為8,則這個向量的第1字節(jié)的地址為:類型號8×4=32=20H
若類型8中,安排的CS= 1000H,IP=0200H,則它們 形成的服務(wù)程序的入口地址 為10200H。
CPU一旦響應(yīng)中斷類型8,
則將轉(zhuǎn)去執(zhí)行從地址10200H
開始的中斷服務(wù)程序。 如圖6.24所示。二、8086/8088的中斷處理過程(一)8086/8088CPU中斷處理的基本過程
8086/8088CPU中斷處理的基本過程如圖6.22所示
對該圖作如下幾點說明:(1)中斷的基本過程可分為:
中斷請求,中斷響應(yīng),中斷處理和中斷返回。
(2)按預(yù)先設(shè)計安排的中斷優(yōu)先權(quán)來響應(yīng)中斷。四、可屏蔽中斷的過程
(一)INTR中斷的全過程
首先,中斷請求信號INTR由外部設(shè)備產(chǎn)生并送至8086的INTR引腳上。
CPU是否響應(yīng)取決于CPU內(nèi)部的IF標(biāo)志。 如果IF標(biāo)志為0,則CPU不會識別中斷; 當(dāng)IF=1并出現(xiàn)INTR請求信號時,CPU在完成正在執(zhí)行的 指令后,便開始響應(yīng)中斷。
步驟如下:
(1)CPU讀取中斷類型號n。
CPU發(fā)出INTA信號,外部中斷接口電路把中斷類型號通過數(shù)據(jù)總線送給CPU;
(2)按先后順序把FLAG、CS和IP的當(dāng)前內(nèi)容壓入堆棧;(3)清除IF和TF標(biāo)志;
(4)查中斷向量表,把4×n+2的字存儲單元中的內(nèi)容讀入CS中,把4×n的字存儲單元中內(nèi)容讀入IP中。
(二)中斷類型號的獲得
(1)除法錯誤、單步中斷、非屏蔽中斷、斷點中斷和溢出中斷分別由CPU芯片內(nèi)的硬件自提供類型號0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度森林資源可持續(xù)開發(fā)與木材購銷合作協(xié)議4篇
- 2025版學(xué)校宿管員招聘、培訓(xùn)及考核合同2篇
- 二零二五年版在線教育平臺合同欺詐風(fēng)險控制與賠償協(xié)議3篇
- 基于2025年度預(yù)算的科技創(chuàng)新平臺建設(shè)合同
- 2025個人勞動合同示范文本及勞動法解讀4篇
- 二零二五年度健康養(yǎng)老產(chǎn)業(yè)合作框架協(xié)議4篇
- 2025年陜西勞動合同解除與終止操作規(guī)范及案例分析3篇
- 二零二五年度國際美食餐廳經(jīng)理聘用合同范本3篇
- 2025年度魚塘承包與農(nóng)業(yè)科技推廣合同4篇
- 2025版文化創(chuàng)意產(chǎn)業(yè)貸款擔(dān)保協(xié)議范本9篇
- 開展課外讀物負(fù)面清單管理的具體實施舉措方案
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點提升(共500題)附帶答案詳解
- 2025-2030年中國洗衣液市場未來發(fā)展趨勢及前景調(diào)研分析報告
- 2024解析:第三章物態(tài)變化-基礎(chǔ)練(解析版)
- 北京市房屋租賃合同自行成交版北京市房屋租賃合同自行成交版
- 《AM聚丙烯酰胺》課件
- 系統(tǒng)動力學(xué)課件與案例分析
- 《智能網(wǎng)聯(lián)汽車智能傳感器測試與裝調(diào)》電子教案
- 客戶分級管理(標(biāo)準(zhǔn)版)課件
- GB/T 32399-2024信息技術(shù)云計算參考架構(gòu)
- 人教版數(shù)學(xué)七年級下冊數(shù)據(jù)的收集整理與描述小結(jié)
評論
0/150
提交評論