注釋第2次(3)實(shí)驗(yàn)PCI_INT應(yīng)用中斷可檢查實(shí)驗(yàn)箱是否正常_第1頁(yè)
注釋第2次(3)實(shí)驗(yàn)PCI_INT應(yīng)用中斷可檢查實(shí)驗(yàn)箱是否正常_第2頁(yè)
注釋第2次(3)實(shí)驗(yàn)PCI_INT應(yīng)用中斷可檢查實(shí)驗(yàn)箱是否正常_第3頁(yè)
注釋第2次(3)實(shí)驗(yàn)PCI_INT應(yīng)用中斷可檢查實(shí)驗(yàn)箱是否正常_第4頁(yè)
注釋第2次(3)實(shí)驗(yàn)PCI_INT應(yīng)用中斷可檢查實(shí)驗(yàn)箱是否正常_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、第二次實(shí)驗(yàn)(3) pci_int應(yīng)用中斷pcijnt.asm9.5 pci中斷應(yīng)用實(shí)驗(yàn)9.5實(shí)驗(yàn)?zāi)康模?)拿握使用pci中斷的方法。(2)掌握操作pci設(shè)備i/o端口的方法。9.5.2實(shí)驗(yàn)設(shè)備pc機(jī)一臺(tái),td-pit /td-pit b實(shí)驗(yàn)裝置一套。9.5.3實(shí)驗(yàn)內(nèi)容編寫一實(shí)驗(yàn)程序,使用實(shí)驗(yàn)裝置提供的中斷源,完成按鍵中斷的響應(yīng)。每產(chǎn)生一次按 鍵中斷,向顯示器輸出字符“7”。9.5.4實(shí)驗(yàn)說(shuō)明1.實(shí)驗(yàn)浦稈本實(shí)驗(yàn)要求使用實(shí)驗(yàn)裝置提供的中斷請(qǐng)求信號(hào)irq (下降沿有效),利用kk1-的負(fù)脈沖 作為中斷源,在中斷處理中完成字符“7”的顯示。則每按一次kk1-,在屏幕上會(huì)顯示一 個(gè)字符“7”。使用實(shí)驗(yàn)裝

2、置提供的irq信號(hào),除了要操作pc的8259寄存器外,還需要操 作實(shí)驗(yàn)用pci總線擴(kuò)展卡上的“intcsr”和“imb4”寄存器(這兩個(gè)寄存器的含義可以參 看島級(jí)接l技術(shù)實(shí)驗(yàn)中的有關(guān)說(shuō)明)。通過(guò)操作上述奇存器,才可以實(shí)現(xiàn)實(shí)驗(yàn)用中斷的初始 化、清除等。1)初始化實(shí)驗(yàn)用中斷的具體步驟初始化intcsr(偏移38113bii)。首先應(yīng)運(yùn)行“讀pci配置程序”獲得基地址寄 存器0存放的i/o空間的始地址,然后加上intcsr的偏移,即可得到訪問(wèn)該寄存器的端口 地址。例如,讀出基地址寄存器0為9400h,則該寄存器地址為9438h943bh。得到地址 后,向該寄存器寫入 003f1f00h,即 xx38

3、h 寫 ooh, xx39h 寫 1fh, xx3ah 寫 3fh, xx3bh 寫 ooho(2)初始化中斷矢量,設(shè)置pc機(jī)8259寄存器。在修改中斷入口地址時(shí),建議先保存原 來(lái)的入口地址。實(shí)驗(yàn)系統(tǒng)提供的硬件中斷,其對(duì)應(yīng)的irq號(hào)可以通過(guò)讀pci配置程序獲得。 取得該irq后,查看9節(jié)中描述的中斷向量表,査得該中斷對(duì)應(yīng)的中斷向量號(hào)和中斷入備注:(1 )使用pci_bios.exe讀pci擴(kuò)展卡的配置程序,獲得基地址寄存器0存放i/o空間的起始地址,例如9400h ;s5933芯片符合pci總線規(guī)范2版intcsr :是s5933芯片中的中斷 控制 狀態(tài) 寄存器(在s5933芯片中 的 偏移地

4、址是38h3bh教材page 164) 寄存器(教材page 164屮的基地址寄存器) 寄存器寄存器寄存器寄存器imb :輸入郵箱imb1 :輸入郵箱imb2 :輸入郵箱imb3 :輸入郵箱imb4:輸入郵箱1234對(duì)應(yīng)在s5933芯片中對(duì)應(yīng)在s5933芯片中対應(yīng)在s5933芯片中對(duì)應(yīng)在s5933芯片中的 的 的 的偏移地址10 h教材page 164偏移地址14 h教材page 164偏移地址18 h教材page 164偏移地址1c h教材page 164口地址,并將該地址保存、替換為用戶自己的中斷處理入口地址。例如,讀出硬件中斷號(hào) 為11,則中斷向fit號(hào)為73h,入口地址即為oiccho

5、替換中斷入口地址后,打開(kāi)8259屏 蔽寄存器中對(duì)應(yīng)的屏蔽位。21h中設(shè)置07號(hào)屏蔽位,a1h中設(shè)置815號(hào)屏蔽位。同樣 要先保存原來(lái)的屏蔽字。例如,11號(hào)中斷須將a1h中的位3置0。2)清除實(shí)驗(yàn)用中斷的中斷源在中斷處理中,需耍清除中斷源。清除實(shí)驗(yàn)用中斷的中斷源步驟如f:(1) 清pci板卡的中斷標(biāo)志。對(duì)imb4寄存器的第3字節(jié)(imb4byte3)做一讀操作, 其在皐地址寄存器0中的偏移為fh),然后向intcsr第2字節(jié)(xx3ah)寫入3fh»(2) 清pc機(jī)8259中斷標(biāo)志。設(shè)置8259ocw2,復(fù)位中斷標(biāo)志。先設(shè)置從片a0h,再 設(shè)置主片20ho (例如:11號(hào)中斷向a0h寫

6、入63h,向20h寫入62h。)(3) 退出程序返冋到dos時(shí)恢復(fù)寄存器設(shè)置方法。首先將保存的屏蔽寄存器的內(nèi)容恢 復(fù)到屏蔽寄存器中,中斷服務(wù)程序入口的段地址和偏移地址恢復(fù)到中斷相量表中,然后返 回到doso參考實(shí)驗(yàn)流程如圖9-5-1所示。上程序中斷處理程序圖9-5-1 pci中斷應(yīng)用實(shí)驗(yàn)流程圖注:執(zhí)行該程序可檢查pc機(jī)一pci總線擴(kuò)展卡f接口實(shí)驗(yàn)箱 各個(gè)連損 是囹革木暢通i:常 砧 pci屮斷應(yīng)用實(shí)驗(yàn) (pcijnt.asm );注意:程序屮使用的pci操作寄存器的基地址為9400 hintcsr_byte0intcsr_byte1intcsr_byte2 1ntcsr_byte3 1mb4.

7、byte3equ |9438h|;需要依據(jù)運(yùn)行pci_bios.exe程序,獲取實(shí)驗(yàn)用的equ |9439h|;分配給pci總線擴(kuò)展卡的第一個(gè)i/o地址空間base0equ |943ahequ943bhequ |941fh;堆棧聲明、數(shù)據(jù)段聲明川于存放原屮斷向量的段地址值cs 用于存放原中斷向量的偏移地址值ip 用于存放原中斷屏蔽8位字節(jié)data segmentcsbak dw ?ipbak dw ?mkbak db ?data endscode segmentassume cs:code, ds:data ; assume 說(shuō)明代碼段 code、數(shù)據(jù)段 daea ;分別段寄存器cs、ds的對(duì)

8、應(yīng)關(guān)系start: climov ax, datamov ds, ax;數(shù)據(jù)段寄存器ds賦值movmovoutdx,al,dx,intcsr_byteooohal;依據(jù)實(shí)驗(yàn)9.5.4實(shí)驗(yàn)步驟1 - 1 )-( 1 )初始化要求;向 9438h943bh 寫入 00 3f 1f00h;00 hf ( xx 38h )movdx,intcsr.bytelmoval,1fh;1fh-(xx 39h )outdx,almovdx,intcsr._byte2moval,3fh;3fhf (xx 3ah)outdx,almovdx,intcsr._byte3;00h-(xx 3bh )moval,ooho

9、utdx,al替換中斷服務(wù)程序入口地址cld; flag.df = 0,執(zhí)行串操作操作指令時(shí),s1和di做地址增量修改mov ax, ()0()()hmov es, axmov di, | 01cchmov ax, es:dimov 1pbak, axmov ax, offset myintstosw;es = ()000 h;int 73h, 01cch=73h*4中斷向量指針?biāo)蚫i;0000h:01cch是 原屮斷向量的偏移地址ip;ip送ipbak保存;新的中斷服務(wù)程序的入口地址(中斷向量)的;偏移地址值ip送ax;ax - di di+1小,然后 di + 20000h:01cdh;m

10、yintjp 送 0000 h: 01cc hmov ax, es:dimov csbak, axmov ax, seg myintstosw;0()00h:01ceh是原中斷向量的段地址cs;cs送csbak保存;新的中斷服務(wù)程序的入口地址(中斷向量)的;段地址值cs送ax;ax di+2 di+3中, 然后 di + 2;myint.cs 送 0000 h:()1ceh , ()00() h: 01cf h注:pc機(jī)的bios在上電啟動(dòng),己對(duì)主、從8259a初始化(執(zhí)行icw13命令);8259中斷控制器 開(kāi)中斷屏蔽位ocw1inal, 0a1h;0a1h 是從 8259a 端口 1;2i

11、h是pc機(jī)的主8259a端口 1;負(fù)責(zé)815號(hào)屮斷負(fù)責(zé)07號(hào)中斷movmkbak, al: 用于存放原中斷屏蔽8位字節(jié)andal, |0f7h| ;1111 0111 b 開(kāi)放中斷 0bh(11號(hào)中斷)out0a1h, al ;stiflag.if = 1, cpu 開(kāi)中斷al:nopcallbreakjmp al;等中斷?等待從實(shí)驗(yàn)箱的脈沖按鍵kk-輸入中斷觸發(fā)信號(hào)到irqmyint: pushdspushaxpushdx依據(jù)實(shí)驗(yàn)9.5.4實(shí)驗(yàn)步驟1 一2)_(1)清pci板卡屮斷標(biāo)志(1 )先讀imb4_byte3操作;再寫操作3fhintcsr_byte2movdx, 1mb4_byte

12、3 ;inal, dx; 讀:清pci板卡中斷標(biāo)志的第一步mov dx, intcsr_byte2mov al, 3fhout dx,al ; 寫: 清pci板r中斷標(biāo)志的第二步 ;依據(jù)實(shí)驗(yàn)9.5.4實(shí)驗(yàn)步驟1 2 ) -( 2 )清pc機(jī)8259中斷標(biāo)志:ocw2命令;先從片8259的0cw2 ,然后主片8259的ocw2:mov al, | 63h| ; 先從片 8259 的 ocw2: 0110 0011 正常屮斷;out 0a0h, almov al,62h ;然后片 8259 的 ocw2 : 0110 0010 正常中斷;out 20h,al ;注:pc機(jī)的從8259的intr通過(guò)

13、主8259的1rq2向cpu申請(qǐng)中斷break proc near;了程序movah, 0eh; 在中斷中可以bios調(diào)用,但不能dos調(diào)用moval, 37h;ah =0eh顯示字符(光標(biāo)前移),bl二前景色int10h:al= ascii 字符 37h= ascii 字符 7popdxpopaxpopdsiretpush dsmovmovintah, 06hdl, offh21h;直接控制臺(tái)i/o ;讀鍵盤字符 ;dl=ff(輸入),dl=字符(輸出) ;cf=(), al=(),無(wú)輸入字符(未準(zhǔn)備好) ;cf= 1,al=輸入字符(如果準(zhǔn)備好)je return ;結(jié)果為0 (al =0

14、 ,無(wú)輸入字符),跳轉(zhuǎn)到標(biāo)號(hào)returnpop ds;結(jié)果不為0 (al=輸入字符),cli;關(guān)中斷mov al, mkbak;mkbak用于存放原中斷屏蔽8位字節(jié)out 0a1h,al;恢復(fù)原屮斷屏蔽8位字節(jié)mkbakmov ax, 0000hmov es, ax;0000 h:01cch ( es:di )mov di, |01cch;int 73h,01cch=73h*4mov ax, ipbak;恢復(fù) 原中斷向量的偏移地址ip = ipbakcldstoswaxdidi+1屮,然后 di+ 2mov ax, csbak ;恢復(fù) 原屮斷向量的段地址cs二csbakstosw; ax -

15、di+2 di+3中,然后 di + 2movdx,1ntcsr_byte1;ooh -f ( xx 39h )moval,oohoutdx,al;開(kāi)中斷stimov ax,4c00h ;帶返回碼(al二返回碼)終止程序,入口參數(shù)ah=4c hint 21hreturn: pop dsretbreak endpcode endsend start ;從start執(zhí)行程序屮斷類型號(hào)中斷 向量號(hào)中斷向量 指針開(kāi)放屮斷 屏蔽位ocw1屮斷結(jié)束ocw22(接從 8259)oah028h 02bh0110 0010(62h)971h1c4h-1c7h1111 11010110 0001 (61h)10(0ah)72h1c8h-1cbh1111 1011()11() 0010 ( 62h )11 (obh)73h1cch 1cfh1111 0111()11() 0011 (63h)12(0ch)74hmov al,63hout 0a0h.almov al.62hout 20h.a

溫馨提示

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