計(jì)算機(jī)第七章_第1頁(yè)
計(jì)算機(jī)第七章_第2頁(yè)
計(jì)算機(jī)第七章_第3頁(yè)
計(jì)算機(jī)第七章_第4頁(yè)
計(jì)算機(jī)第七章_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)第七章第一頁(yè),共八十八頁(yè),編輯于2023年,星期五8.18088中斷系統(tǒng)8088的中斷系統(tǒng)采用向量中斷機(jī)制能夠處理256個(gè)中斷用中斷向量號(hào)0~255區(qū)別可屏蔽中斷還需要借助專(zhuān)用中斷控制器Intel8259A實(shí)現(xiàn)優(yōu)先權(quán)管理第二頁(yè),共八十八頁(yè),編輯于2023年,星期五8.1.18088的中斷類(lèi)型非屏蔽中斷源中斷邏輯INTO指令單步中斷除法錯(cuò)誤INTN指令CPUINTRNMI可屏蔽中斷源8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7外設(shè)中斷源

INTA內(nèi)部中斷除法錯(cuò)中斷指令中斷溢出中斷單步中斷外部中斷非屏蔽中斷可屏蔽中斷第三頁(yè),共八十八頁(yè),編輯于2023年,星期五1.內(nèi)部中斷內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷利用內(nèi)部中斷,微處理器為用戶(hù)提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時(shí)異常情況的有效途徑例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用內(nèi)部中斷的中斷向量號(hào)已定第四頁(yè),共八十八頁(yè),編輯于2023年,星期五⑴除法錯(cuò)中斷在執(zhí)行除法指令時(shí),若除數(shù)為0或商超過(guò)了寄存器所能表達(dá)的范圍,則產(chǎn)生一個(gè)向量號(hào)為0的內(nèi)部中斷,稱(chēng)為除法錯(cuò)中斷例如:movbl,0idivbl ;除數(shù)BL=0,產(chǎn)生除法錯(cuò)中斷movax,200hmovbl,1divbl ;商=200H,不能用AL表達(dá) ;產(chǎn)生除法錯(cuò)中斷第五頁(yè),共八十八頁(yè),編輯于2023年,星期五⑵指令中斷在執(zhí)行中斷調(diào)用指令I(lǐng)NTn時(shí)產(chǎn)生的一個(gè)向量號(hào)為n(0~255)的內(nèi)部中斷,稱(chēng)為指令中斷其中向量號(hào)為3的指令中斷比較特別(生成一個(gè)字節(jié)的指令代碼:11001100),常用于程序調(diào)試,被稱(chēng)為斷點(diǎn)中斷例如:DEBUG.EXE調(diào)試程序的運(yùn)行命令G設(shè)置的斷點(diǎn),就是利用INT3指令實(shí)現(xiàn)的第六頁(yè),共八十八頁(yè),編輯于2023年,星期五⑶溢出中斷在執(zhí)行溢出中斷指令I(lǐng)NTO時(shí),若溢出標(biāo)志OF為1,則產(chǎn)生一個(gè)向量號(hào)為4的內(nèi)部中斷,被稱(chēng)為溢出中斷例如:movax,2000haddax,7000h

;2000H+7000H=9000H,溢出:OF=1into ;因?yàn)镺F=1,所以產(chǎn)生溢出中斷第七頁(yè),共八十八頁(yè),編輯于2023年,星期五⑷單步中斷若單步中斷TF為1,則在每條指令執(zhí)行結(jié)束后產(chǎn)生一個(gè)向量號(hào)為1的內(nèi)部中斷,稱(chēng)為單步中斷例如:DEBUG.EXE調(diào)試程序的單步命令T就利用單步中斷實(shí)現(xiàn)對(duì)程序的單步調(diào)試第八頁(yè),共八十八頁(yè),編輯于2023年,星期五2.外部中斷外部中斷是由于8088外部提出中斷請(qǐng)求引起的程序中斷利用外部中斷,微機(jī)系統(tǒng)可以實(shí)時(shí)響應(yīng)外部設(shè)備的數(shù)據(jù)傳送請(qǐng)求,能夠及時(shí)處理外部意外或緊急事件外部中斷的原因是處理器外部隨機(jī)產(chǎn)生的,所以是真正的中斷(Interrupt)內(nèi)部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱(chēng)為異常(Exception)第九頁(yè),共八十八頁(yè),編輯于2023年,星期五⑴非屏蔽中斷通過(guò)非屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷請(qǐng)求,微處理器無(wú)法禁止,將在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),這個(gè)中斷被稱(chēng)為非屏蔽中斷8088的非屏蔽中斷的向量號(hào)為2,非屏蔽中斷請(qǐng)求信號(hào)為NMI非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如:電源調(diào)電前的數(shù)據(jù)保護(hù)存儲(chǔ)器讀寫(xiě)錯(cuò)誤的處理第十頁(yè),共八十八頁(yè),編輯于2023年,星期五⑵可屏蔽中斷外部通過(guò)可屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),同時(shí)輸出可屏蔽中斷響應(yīng)信號(hào),這個(gè)中斷就是可屏蔽中斷8088的可屏蔽中斷請(qǐng)求和響應(yīng)信號(hào)分別是INTR和INTA*;由IF標(biāo)志控制可屏蔽中斷是否允許響應(yīng);向量號(hào)來(lái)自外部中斷控制器8088通常需要配合中斷控制器8259A共同處理可屏蔽中斷可屏蔽中斷主要用于主機(jī)與外設(shè)交換數(shù)據(jù)IF控制可屏蔽中斷的響應(yīng)第十一頁(yè),共八十八頁(yè),編輯于2023年,星期五中斷標(biāo)志IF的狀態(tài)IF=0:可屏蔽中斷不會(huì)被響應(yīng)關(guān)中斷、禁止中斷、中斷屏蔽系統(tǒng)復(fù)位,使IF=0任何一個(gè)中斷被響應(yīng),使IF=0執(zhí)行指令CLI,使IF=0IF=1:可屏蔽中斷會(huì)被響應(yīng)開(kāi)中斷、允許中斷、中斷開(kāi)放執(zhí)行指令STI,使IF=1執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)明確IF標(biāo)志的狀態(tài)是關(guān)鍵第十二頁(yè),共八十八頁(yè),編輯于2023年,星期五8.1.28088的中斷響應(yīng)過(guò)程N(yùn)MIN軟件中斷INTRTF=1中斷響應(yīng)周期讀中斷向量號(hào)下條指令現(xiàn)行指令I(lǐng)F=1NNNNYYYYY查詢(xún)中斷的順序,決定了各種中斷源的優(yōu)先權(quán)軟件中斷除法錯(cuò)中斷指令中斷溢出中斷非屏蔽中斷可屏蔽中斷單步中斷高低第十三頁(yè),共八十八頁(yè),編輯于2023年,星期五8.1.28088的中斷響應(yīng)過(guò)程(續(xù))Y還有NMITEMP=1標(biāo)志寄存器入棧TEMP=TF,IF=TF=0CS:IP入棧獲取中斷向量執(zhí)行服務(wù)程序彈出CS:IP彈出標(biāo)志寄存器返回被中斷程序(1)(2)(3)(4)(5)NNY(6)8088各種中斷源的優(yōu)先權(quán),實(shí)際上是指被識(shí)別出來(lái)的先后多種中斷同時(shí)請(qǐng)求時(shí),最先響應(yīng)的則可能是單步中斷或NMI中斷第十四頁(yè),共八十八頁(yè),編輯于2023年,星期五8.1.38088的中斷向量表中斷向量:中斷服務(wù)程序的入口地址(首地址)邏輯地址含有段地址CS和偏移地址IP(32位)每個(gè)中斷向量的低字是偏移地址、高字是段地址,需占用4個(gè)字節(jié)8088微處理器從物理地址000H開(kāi)始,依次安排各個(gè)中斷向量,向量號(hào)也從0開(kāi)始256個(gè)中斷占用1KB區(qū)域,就形成中斷向量表向量號(hào)為N的中斷向量的物理地址=N×4第十五頁(yè),共八十八頁(yè),編輯于2023年,星期五8.2內(nèi)部中斷服務(wù)程序編寫(xiě)內(nèi)部中斷服務(wù)程序與編寫(xiě)子程序類(lèi)似利用過(guò)程定義偽指令PROC/ENDP第1條指令通常為開(kāi)中斷指令STI最后用中斷返回指令I(lǐng)RET通常采用寄存器傳遞參數(shù)主程序需要調(diào)用中斷服務(wù)程序調(diào)用前,需要設(shè)置中斷向量利用INTn指令調(diào)用中斷服務(wù)程序第十六頁(yè),共八十八頁(yè),編輯于2023年,星期五例8.1內(nèi)部中斷服務(wù)程序編寫(xiě)80H號(hào)中斷服務(wù)程序功能:顯示以“0”結(jié)尾字符串的功能利用顯示器功能調(diào)用INT10H字符串緩沖區(qū)首地址為入口參數(shù)DS:DX(段地址:偏移地址)傳遞參數(shù)第十七頁(yè),共八十八頁(yè),編輯于2023年,星期五數(shù)據(jù)段

intoff dw? intseg dw? intmsg db‘AInstructionInterrupt!’ db0dh,0ah,0例8.1以“0”結(jié)尾回車(chē)、換行第十八頁(yè),共八十八頁(yè),編輯于2023年,星期五保存中斷向量

movax,3580h int21h movintoff,bx ;保存偏移地址

movintseg,es ;保存段基地址例8.1獲取中斷向量(DOS功能調(diào)用INT21H)功能號(hào):AH=35H入口參數(shù):AL=中斷向量號(hào)出口參數(shù):ES:BX=中斷向量(段地址:偏移地址)第十九頁(yè),共八十八頁(yè),編輯于2023年,星期五設(shè)置中斷向量pushdsmovdx,offsetnew80hmovax,segnew80hmovds,axmovax,2580hint21hpopds例8.1設(shè)置中斷向量(DOS功能調(diào)用INT21H)功能號(hào):AH=25H入口參數(shù):AL=中斷向量號(hào)DS:DX=中斷向量(段地址:偏移地址)第二十頁(yè),共八十八頁(yè),編輯于2023年,星期五調(diào)用中斷服務(wù)程序;設(shè)置入口參數(shù): DS=段地址(已設(shè)置)

DX=偏移地址

movdx,offsetintmsg int80h ;調(diào)用80H中斷服務(wù)程序例8.1AInstructionInterrupt!第二十一頁(yè),共八十八頁(yè),編輯于2023年,星期五;80H號(hào)內(nèi)部中斷服務(wù)程序:;顯示字符串(以“0”結(jié)尾);入口參數(shù):DS:DX=緩沖器首地址

new80h proc

sti ;開(kāi)中斷

pushax ;保護(hù)寄存器

pushbx pushsi例8.1進(jìn)入中斷服務(wù)程序AInstructionInterrupt!第二十二頁(yè),共八十八頁(yè),編輯于2023年,星期五顯示字符串

movsi,dxnew1: moval,[si] cmpal,0 jznew2 movbx,0 movah,0eh int10h incsi jmpnew1例8.1AInstructionInterrupt!第二十三頁(yè),共八十八頁(yè),編輯于2023年,星期五退出中斷服務(wù)程序

new2: popsi ;恢復(fù)寄存器

popbx popax

iret ;中斷返回

new80h endp例8.1AInstructionInterrupt!第二十四頁(yè),共八十八頁(yè),編輯于2023年,星期五主程序結(jié)束

movdx,intoff movax,intseg movds,ax movax,2580h int21h movax,4c00h int21h例8.1AInstructionInterrupt!第二十五頁(yè),共八十八頁(yè),編輯于2023年,星期五8.38259A中斷控制器Intel8259A是可編程中斷控制器PIC可用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中斷8259A的基本功能一片8259A可以管理8級(jí)中斷,可擴(kuò)展至64級(jí)每一級(jí)中斷都可單獨(dú)被屏蔽或允許在中斷響應(yīng)周期,可提供相應(yīng)的中斷向量號(hào)8259A設(shè)計(jì)有多種工作方式,可通過(guò)編程選擇第二十六頁(yè),共八十八頁(yè),編輯于2023年,星期五8.3.18259A的內(nèi)部結(jié)構(gòu)和引腳D7~D0INTAINT中斷請(qǐng)求寄存器中斷屏蔽寄存器數(shù)據(jù)總線緩沖器IR0IR7讀/寫(xiě)控制邏輯級(jí)聯(lián)緩沖器比較器RDWRA0CSCAS0CSA1CAS2SP/EN優(yōu)先權(quán)判別電路中斷服務(wù)寄存器控制邏輯第二十七頁(yè),共八十八頁(yè),編輯于2023年,星期五1.中斷控制中斷請(qǐng)求寄存器IRR保存8條外界中斷請(qǐng)求信號(hào)IR0~I(xiàn)R7的請(qǐng)求狀態(tài)Di位為1表示IRi引腳有中斷請(qǐng)求;為0表示無(wú)請(qǐng)求中斷服務(wù)寄存器ISR保存正在被8259A服務(wù)著的中斷狀態(tài)Di位為1表示IRi中斷正在服務(wù)中;為0表示沒(méi)有被服務(wù)中斷屏蔽寄存器IMR保存對(duì)中斷請(qǐng)求信號(hào)IR的屏蔽狀態(tài)Di位為1表示IRi中斷被屏蔽(禁止);為0表示允許第二十八頁(yè),共八十八頁(yè),編輯于2023年,星期五2.與處理器接口

A0RD*WR*CS*功能

0100110000101010×110×××1寫(xiě)入ICW1、OCW2和OCW3寫(xiě)入ICW2~I(xiàn)CW4和OCW1讀出IRR、ISR和查詢(xún)字讀出IMR數(shù)據(jù)總線高阻狀態(tài)數(shù)據(jù)總線高阻狀態(tài)第二十九頁(yè),共八十八頁(yè),編輯于2023年,星期五3.中斷級(jí)連一個(gè)系統(tǒng)中,8259A可以級(jí)連,有一個(gè)主8259A,若干個(gè)(最多8個(gè))從8259A級(jí)連時(shí),主8259A的三條級(jí)連線CAS0~CAS2作為輸出線,連至每個(gè)從8259A的CAS0~CAS2每個(gè)從8259A的中斷請(qǐng)求信號(hào)INT,連至主8259A的一個(gè)中斷請(qǐng)求輸入端IR主8259A的INT線連至CPU的中斷請(qǐng)求輸入端SP*/EN*在非緩沖方式下,規(guī)定該8259A是主片(SP*=1)還是從片(SP*=0)動(dòng)畫(huà)示例第三十頁(yè),共八十八頁(yè),編輯于2023年,星期五8.3.28259A的中斷過(guò)程CAS0~CAS2D0~D7SP/ENIR0~I(xiàn)R7CPU響應(yīng)周期8259A工作波形INT第一個(gè)周期T1T2T3T4ALECLK

第二個(gè)周期T1T2T3T4第一個(gè)前保持為高電平

INTALOCK動(dòng)畫(huà)第三十一頁(yè),共八十八頁(yè),編輯于2023年,星期五8.3.38259A的工作方式普通全嵌套方式特殊全嵌套方式自動(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ā)方式電平觸發(fā)方式數(shù)據(jù)線連接方式緩沖方式非緩沖方式第三十二頁(yè),共八十八頁(yè),編輯于2023年,星期五1.設(shè)置優(yōu)先權(quán)方式普通全嵌套方式8259A的中斷優(yōu)先權(quán)順序固定不變,從高到低依次為IR0、IR1、IR2、……IR7中斷請(qǐng)求后,8259A對(duì)當(dāng)前請(qǐng)求中斷中優(yōu)先權(quán)最高的中斷IRi予以響應(yīng),將其向量號(hào)送上數(shù)據(jù)總線,對(duì)應(yīng)ISR的Di位置位,至到中斷結(jié)束(ISR的Di位復(fù)位)在ISR的Di位置位期間,禁止再發(fā)生同級(jí)和低級(jí)優(yōu)先權(quán)的中斷,但允許高級(jí)優(yōu)先權(quán)中斷的嵌套特殊全嵌套方式優(yōu)先權(quán)自動(dòng)循環(huán)方式優(yōu)先權(quán)特殊循環(huán)方式第三十三頁(yè),共八十八頁(yè),編輯于2023年,星期五2.結(jié)束中斷處理方式什么是8259A的中斷結(jié)束?8259A利用中斷服務(wù)寄存器ISR判斷:某位為1,表示正在進(jìn)行中斷服務(wù);該位為0,就是該中斷結(jié)束服務(wù)。這里說(shuō)明如何使ISR某位為0,不反映CPU的工作狀態(tài)。第三十四頁(yè),共八十八頁(yè),編輯于2023年,星期五2.結(jié)束中斷處理方式自動(dòng)中斷結(jié)束方式普通中斷結(jié)束方式配合全嵌套優(yōu)先權(quán)方式使用當(dāng)CPU用輸出指令往8259A發(fā)出普通中斷結(jié)束EOI命令時(shí),8259A就會(huì)把所有正在服務(wù)的中斷中優(yōu)先權(quán)最高的ISR位復(fù)位特殊中斷結(jié)束方式配合循環(huán)優(yōu)先權(quán)方式使用CPU在程序中向8259A發(fā)送一條特殊中斷結(jié)束命令,這個(gè)命令中指出了要清除哪個(gè)ISR位第三十五頁(yè),共八十八頁(yè),編輯于2023年,星期五3.屏蔽中斷源方式普通屏蔽方式將IMR的Di位置1,則對(duì)應(yīng)的中斷IRi被屏蔽,該中斷請(qǐng)求不能從8259A送到CPU如果IMR的Di位置0,則允許IRi中斷產(chǎn)生特殊屏蔽方式將IMR的Di位置1,對(duì)應(yīng)的中斷IRi被屏蔽的同時(shí),使ISR的Di位置0第三十六頁(yè),共八十八頁(yè),編輯于2023年,星期五4.中斷觸發(fā)方式邊沿觸發(fā)方式8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào)電平觸發(fā)方式中斷請(qǐng)求端出現(xiàn)的高電平是有效的中斷請(qǐng)求信號(hào)第三十七頁(yè),共八十八頁(yè),編輯于2023年,星期五5.數(shù)據(jù)線連接方式緩沖方式8259A的數(shù)據(jù)線需加緩沖器予以驅(qū)動(dòng)8259A把SP*/EN*引腳作為輸出端,輸出允許信號(hào),用以鎖存或開(kāi)啟緩沖器非緩沖方式SP*/EN*引腳為輸入端若8259A級(jí)連,由其確定是主片或從片第三十八頁(yè),共八十八頁(yè),編輯于2023年,星期五8.3.48259A的編程初始化編程8259A開(kāi)始工作前,必須進(jìn)行初始化編程給8259A寫(xiě)入初始化命令字ICW中斷操作編程在8259A工作期間可以寫(xiě)入操作命令字OCW將選定的操作傳送給8259A,使之按新的要求工作還可以讀取8259A的信息,以便了解他的工作狀態(tài)第三十九頁(yè),共八十八頁(yè),編輯于2023年,星期五1.初始化命令字ICW初始化命令字ICW最多有4個(gè)8259A在開(kāi)始工作前必須寫(xiě)入必須按照ICW1~I(xiàn)CW4順序?qū)懭隝CW1和ICW2是必須送的ICW3和ICW4由工作方式?jīng)Q定流程D7D6D5D4D3D2D1D0第四十頁(yè),共八十八頁(yè),編輯于2023年,星期五ICW1×××1LTIM×SNGLIC4D7D6D5D4D3D2D1D0×——表示可以任意為1為0都可以(建議為0)1——只能為1,作為標(biāo)志中斷觸發(fā)方式:LTIM=1,電平觸發(fā)方式LTIM=0,邊沿觸發(fā)方式規(guī)定單片或級(jí)連方式:SNGL=1,單片方式SNGL=0,級(jí)連方式是否寫(xiě)入ICW4IC4=1,要寫(xiě)入ICW4IC4=0,不寫(xiě)入ICW4,即ICW4規(guī)定的位全為0第四十一頁(yè),共八十八頁(yè),編輯于2023年,星期五ICW2T7T6T5T4T3×××D7D6D5D4D3D2D1D0設(shè)置中斷向量號(hào)T7~T3為中斷向量號(hào)的高5位低3位由8259A自動(dòng)確定:IR0為000、IR1為001、……、IR7為111第四十二頁(yè),共八十八頁(yè),編輯于2023年,星期五ICW3S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0級(jí)連命令字主片8259A:Si=1對(duì)應(yīng)IRi接有從片;否則IRi沒(méi)有連接從片從片8259A:ID0~I(xiàn)D2編碼說(shuō)明從片INT引腳接到主片哪個(gè)IR引腳第四十三頁(yè),共八十八頁(yè),編輯于2023年,星期五ICW4000SFNMBUFM/SAEOIμPMD7D6D5D4D3D2D1D0嵌套方式:特殊全嵌套方式(SFNM=1)普通全嵌套方式(SFNM=0)數(shù)據(jù)線的緩沖方式:緩沖方式(BUF=1)非緩沖方式(BUF=0)主片/從片選擇:主片(M/S=1)從片(M/S=0)中斷結(jié)束方式:自動(dòng)中斷結(jié)束(AEOI=1)非自動(dòng)中斷結(jié)束(AEOI=0)微處理器類(lèi)型:16位80x86(PM=1)8位8080/8085(PM=0)第四十四頁(yè),共八十八頁(yè),編輯于2023年,星期五2.操作命令字OCW8259A工作期間,可以隨時(shí)接受操作命令字OCWOCW共有3個(gè):OCW1~OCW3寫(xiě)入時(shí)沒(méi)有順序要求,需要哪個(gè)OCW就寫(xiě)入那個(gè)OCWD7D6D5D4D3D2D1D0第四十五頁(yè),共八十八頁(yè),編輯于2023年,星期五OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字內(nèi)容寫(xiě)入中斷屏蔽寄存器IMRDi=Mi對(duì)應(yīng)IRi,為1禁止IRi中斷;為0允許IRi中斷。各位互相獨(dú)立。第四十六頁(yè),共八十八頁(yè),編輯于2023年,星期五OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用產(chǎn)生中斷結(jié)束EOI命令和改變優(yōu)先權(quán)順序L2~L0的3位編碼指定IR引腳第四十七頁(yè),共八十八頁(yè),編輯于2023年,星期五OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM設(shè)置中斷屏蔽方式P、RR和RIS規(guī)定隨后讀取的狀態(tài)字含義第四十八頁(yè),共八十八頁(yè),編輯于2023年,星期五3.讀取狀態(tài)字CPU可讀出IRR、ISR、IMR和查詢(xún)字A0為低,由OCW3中RR和RIS位設(shè)定讀取IRR或ISR,由OCW3中P位設(shè)定讀取查詢(xún)字而A0引腳為高電平時(shí)讀取的都是IMR查詢(xún)字反映8259A是否有中斷請(qǐng)求D7D6D5D4D3D2D1D0第四十九頁(yè),共八十八頁(yè),編輯于2023年,星期五查詢(xún)字I----W2W1W0D7D6D5D4D3D2D1D0中斷位I位為1,有外設(shè)請(qǐng)求中斷W2~W0的編碼當(dāng)前中斷請(qǐng)求的最高優(yōu)先級(jí)第五十頁(yè),共八十八頁(yè),編輯于2023年,星期五4.命令字和狀態(tài)字的區(qū)別方法⑴利用讀寫(xiě)信號(hào)區(qū)別寫(xiě)入的控制寄存器和讀出的狀態(tài)寄存器⑵利用地址信號(hào)區(qū)別不同I/O地址的寄存器⑶由控制字中的標(biāo)志位說(shuō)明是哪個(gè)寄存器⑷由芯片內(nèi)順序控制邏輯按一定順序識(shí)別不同的寄存器⑸由前面的控制字決定后續(xù)操作的寄存器接口電路中常用的方法第五十一頁(yè),共八十八頁(yè),編輯于2023年,星期五初始化主片8259A

moval,11h ;寫(xiě)入ICW1 out20h,al jmpintr1 intr1: moval,08h ;寫(xiě)入ICW2 out21h,al jmpintr2 intr2: moval,04h ;寫(xiě)入ICW3 out21h,al jmpintr3 intr3: moval,1h ;寫(xiě)入ICW4 out21h,al中斷控制器的初始化程序段第五十二頁(yè),共八十八頁(yè),編輯于2023年,星期五初始化從片8259A

moval,11h ;寫(xiě)入ICW1 out0a0h,al jmpintr5intr5: moval,70h ;寫(xiě)入ICW2 out0a1h,al jmpintr6intr6: moval,02h ;寫(xiě)入ICW3 out0a1h,al jmpintr7intr7: moval,01h ;寫(xiě)入ICW4 out0a1h,al中斷控制器的初始化程序段第五十三頁(yè),共八十八頁(yè),編輯于2023年,星期五8.48259A在IBMPC系列機(jī)上的應(yīng)用CAS0~2CAS0~2+5V主8259A8228880286CPUINTRD0~D7SP/ENINTD0~D7日時(shí)鐘鍵盤(pán)串行口2串行口1并行口2軟盤(pán)并行口1A0INTR1CS—IRQ0—IRQ1IRQ2—IRQ3—IRQ4—IRQ5—IRQ6—IRQ7—A0—CS

從8259AD0~D7INTSP/EN實(shí)時(shí)鐘改向0AH中斷保留保留保留協(xié)處理器硬盤(pán)保留A0INTR2CS—IRQ8—IRQ9—IRQ10—IRQ11—IRQ12—IRQ13—IRQ14—IRQ15—A0—CS系統(tǒng)總線B25……B24……B23……B22……B21……系統(tǒng)總線B4…D3………D4………D5………D6………D7………INTARDWRINTAIORIOWINTARDWR第五十四頁(yè),共八十八頁(yè),編輯于2023年,星期五8.48259A在IBMPC系列機(jī)上的應(yīng)用CAS0~2

從8259AD0~D7INTSP/EN實(shí)時(shí)鐘改向0AH中斷保留保留保留協(xié)處理器硬盤(pán)保留A0INTR2CS—IRQ8—IRQ9—IRQ10—IRQ11—IRQ12—IRQ13—IRQ14—IRQ15—A0—CS系統(tǒng)總線B4…D3………D4………D5………D6………D7………INTARDWR對(duì)比在IBMPC/XT機(jī)的應(yīng)用第五十五頁(yè),共八十八頁(yè),編輯于2023年,星期五應(yīng)用注意事項(xiàng)利用上升沿做為中斷請(qǐng)求IRQ的有效信號(hào)IRQ0~I(xiàn)RQ7的中斷向量號(hào)依次為08H~0FH,IRQ8~I(xiàn)RQ15依次為70H~77H采用普通全嵌套優(yōu)先權(quán)方式,中斷優(yōu)先權(quán)從高到低順序?yàn)镮RQ0~I(xiàn)RQ2、IRQ8~I(xiàn)RQ15、IRQ3~I(xiàn)RQ7,且不能改變采用普通中斷結(jié)束EOI方式,需要在中斷服務(wù)程序最后發(fā)送普通EOI命令一般采用普通屏蔽方式,通過(guò)寫(xiě)入IMR允許中斷,但注意不要破壞原屏蔽狀態(tài)第五十六頁(yè),共八十八頁(yè),編輯于2023年,星期五8.5外部中斷服務(wù)程序編寫(xiě)外部可屏蔽中斷服務(wù)程序,需注意:發(fā)送中斷結(jié)束命令一般只能采用存儲(chǔ)單元傳遞參數(shù)不要使用DOS系統(tǒng)功能調(diào)用中斷服務(wù)程序盡量短小第五十七頁(yè),共八十八頁(yè),編輯于2023年,星期五8.5外部中斷服務(wù)程序(續(xù))編寫(xiě)主程序,需注意:修改中斷向量控制CPU的中斷允許標(biāo)志設(shè)置8259A的中斷屏蔽寄存器第五十八頁(yè),共八十八頁(yè),編輯于2023年,星期五例題8.2可屏蔽中斷服務(wù)程序8259A的IRQ0(向量號(hào)為08H)中斷請(qǐng)求來(lái)自定時(shí)器8253,每隔55ms產(chǎn)生一次本程序的08H號(hào)中斷服務(wù)程序,每次中斷顯示一串信息,顯示10次用內(nèi)存單元(共享變量)在主程序與外部中斷服務(wù)程序之間傳遞參數(shù):中斷次數(shù)顯示信息也安排在共同的數(shù)據(jù)段中第五十九頁(yè),共八十八頁(yè),編輯于2023年,星期五數(shù)據(jù)段

intmsg db‘A8259AInterrupt!’ db0dh,0ah,0 counter db0例8.2第六十頁(yè),共八十八頁(yè),編輯于2023年,星期五保存中斷向量

movax,3508h int21h pushbx ;保存偏移地址

pushes ;保存段基地址例8.2第六十一頁(yè),共八十八頁(yè),編輯于2023年,星期五設(shè)置中斷向量

cli

pushds movdx,offsetnew08h movax,segnew08h movds,ax movax,2508h int21h popds例8.2第六十二頁(yè),共八十八頁(yè),編輯于2023年,星期五設(shè)置中斷寄存器

inal,21h pushax andal,0feh ;允許IRQ0 out21h,al movcounter,0 ;設(shè)置中斷次數(shù)初值

sti ;開(kāi)中斷例8.2第六十三頁(yè),共八十八頁(yè),編輯于2023年,星期五循環(huán)等待中斷

start1: cmpcounter,10 jbstart1 ;中斷10次退出例8.2中斷就在主程序循環(huán)當(dāng)中第六十四頁(yè),共八十八頁(yè),編輯于2023年,星期五

new08h proc

sti ;開(kāi)中斷

pushax ;保護(hù)寄存器

pushbx pushds

movax,@data movds,ax ;設(shè)置數(shù)據(jù)段DS例8.2進(jìn)入中斷服務(wù)程序第六十五頁(yè),共八十八頁(yè),編輯于2023年,星期五中斷處理

inccounter movsi,offsetintmsg ;顯示信息

calldpstri例8.2第六十六頁(yè),共八十八頁(yè),編輯于2023年,星期五顯示字符串

dpstri proc ;顯示字符串子程序

pushax pushbx dps1: lodsb cmpal,0 jzdps2例8.2第六十七頁(yè),共八十八頁(yè),編輯于2023年,星期五顯示字符串(續(xù))

movbx,0 movah,0eh int10h jmpdps1 dps2: popbx popax ret dpstri endp例8.2第六十八頁(yè),共八十八頁(yè),編輯于2023年,星期五退出中斷服務(wù)程序

moval,20h out20h,al popds ;恢復(fù)寄存器

popbx popax

iret ;中斷返回

new08h endp例8.2第六十九頁(yè),共八十八頁(yè),編輯于2023年,星期五主程序結(jié)束

cli

popax out21h,al popdx popds movax,2508h int21h

sti movax,4c00h int21h例8.2A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!第七十頁(yè),共八十八頁(yè),編輯于2023年,星期五8.6駐留中斷服務(wù)程序駐留TSR(TerminateandStayResident)程序用戶(hù)程序運(yùn)行后仍然保存在主存中,可以讓其他程序使用利用DOS功能調(diào)用31H代替4CH終止程序小型駐留程序常編寫(xiě)成COM程序駐留程序也可以編寫(xiě)成EXE程序需要駐留內(nèi)存的程序段要寫(xiě)在前面第七十一頁(yè),共八十八頁(yè),編輯于2023年,星期五例題8.3報(bào)時(shí)中斷駐留服務(wù)程序系統(tǒng)08H號(hào)中斷服務(wù)程序調(diào)用1CH中斷每隔55ms調(diào)用這個(gè)報(bào)時(shí)中斷,中斷65543次就是時(shí)間過(guò)了一個(gè)小時(shí)本例編寫(xiě)一個(gè)駐留內(nèi)存的1CH內(nèi)部中斷服務(wù)程序?qū)崿F(xiàn)每過(guò)一小時(shí)就顯示信息執(zhí)行此程序后,報(bào)時(shí)中斷服務(wù)程序?qū)Ⅰv留內(nèi)存第七十二頁(yè),共八十八頁(yè),編輯于2023年,星期五

new1ch proc

sti ;開(kāi)中斷

pushsi ;保護(hù)寄存器

pushds

movsi,cs movds,si ;設(shè)置數(shù)據(jù)段DS addcountl,1 adccounth,0例8.3進(jìn)入中斷服務(wù)程序第七十三頁(yè),共八十八頁(yè),編輯于2023年,星期五中斷處理

cmpcountl,hourl jnzn1ch1 cmpcounth,hourh jnzn1ch1 movcountl,0 movcounth,0 movsi,offsetintmsg calldpstri例8.3第七十四頁(yè),共八十八頁(yè),編輯于2023年,星期五退出中斷服務(wù)程序

n1ch1: popds ;恢復(fù)寄存器

popsi

iret ;中斷返回

countl dw0 counth dw0 intmsg db‘OneHourHasPassed!’ db0dh,0ah,0 new1ch endp例8.3OneHourHasPassed!第七十五頁(yè),共八十八頁(yè),編輯于2023年,星期五顯示字符串

dpstri proc ;顯示字符串子程序

pushax pushbx dps1: lodsb cmpal,0 jzdps2例8.3第七十六頁(yè),共八十八頁(yè),編輯于2023年,星期五顯示字符串(續(xù))

movbx,0 movah,0eh int10h jmpdps1 dps2: popbx popax ret dpstri endp例8.3第七十七頁(yè),共八十八頁(yè),編輯于2023年,星期五主程序開(kāi)始

start: movax,cs movds,ax movdx,offsetnew1ch

cli movax,251ch int21h

sti movdx,offsettsrmsg movah,09h int21h例8.3第七十八頁(yè),共八十八頁(yè),編輯于2023年,星期五主程序結(jié)束

movdx,offsetstart adddx,15 movcl,4 shrdx,cl adddx,10h

movax,3100h ;程序駐留

int21h tsrmsg db‘INT1CHProgramInstalled!’ db0dh,0ah,'$'

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論