中斷及中斷控制器課件_第1頁
中斷及中斷控制器課件_第2頁
中斷及中斷控制器課件_第3頁
中斷及中斷控制器課件_第4頁
中斷及中斷控制器課件_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

6.2中斷及中斷控制器82596.2.1中斷的基本概念(1)什么是中斷

在日常生活中,中斷現(xiàn)象俯拾皆是……在計(jì)算機(jī)系統(tǒng)中,一個(gè)CPU要處理若干事務(wù):數(shù)據(jù)采集,運(yùn)算,顯示,處理突發(fā)事件,通信,打印…….。這就要求采用中斷技術(shù),才能作到面面俱到而又不誤突發(fā)事件的處理時(shí)機(jī)。計(jì)算機(jī)用于測控領(lǐng)域,必然涉及中斷。在計(jì)算機(jī)中,中斷的含義很狹窄:從程序執(zhí)行的角度看:CPU正在執(zhí)行的當(dāng)前程序被外設(shè)打斷,轉(zhuǎn)而執(zhí)行為外設(shè)服務(wù)的所謂“中斷服務(wù)程序”(ISR:InterruptServiceRoutine)。

當(dāng)前程序外設(shè)n的中斷服務(wù)程序CPUINTR中斷請求觸發(fā)器

外設(shè)n當(dāng)前程序:CALLSUBR:子程序*外設(shè)隨機(jī)誘發(fā)中斷,轉(zhuǎn)入中斷服務(wù)程序*硬、軟件配合尋找入口地址*由CALL指令引起轉(zhuǎn)入子程序*預(yù)知何時(shí)轉(zhuǎn)入子程序*入口地址直接從CALL中取得SUBR

從數(shù)據(jù)傳送的角度看,是主機(jī)與外設(shè)交換信息的一種方式。6.2中斷及中斷控制器82596.2.1中斷的基本概念(2)中斷源與中斷向量表中斷源:能夠引發(fā)CPU中斷的信息源,稱為中斷源。80X86微機(jī)系統(tǒng)中最多允許有256種中斷源,其中中斷源類型編號(hào)為0~255。*中斷系統(tǒng):為了實(shí)現(xiàn)中斷而配置的硬件和軟件構(gòu)成的系統(tǒng)1)內(nèi)中斷(軟中斷)指CPU執(zhí)行某些特殊操作或由INT指令引起的中斷,通常分為以下三類:①執(zhí)行INTn指令引起的中斷,n=00~FFH②CPU中斷在執(zhí)行指令的過程中出現(xiàn)某些需要處理的異常而產(chǎn)生的中斷。③使用調(diào)試程序中的單步或斷點(diǎn)設(shè)置操作引起的中斷.①INTn指令(n=0~255)如INT21H執(zhí)行該指令后,轉(zhuǎn)入系統(tǒng)的“21H型中斷服務(wù)程序”,執(zhí)行由AH指定的子程序

21H型中斷服務(wù)程序根據(jù)AH內(nèi)容進(jìn)入某一子程序AH=01

AH=02

AH=09

AH=0AAH=4C01H功能02H功能09H功能0AH功能4CH功能:::(2)中斷源與中斷向量表1)內(nèi)中斷(軟中斷)①INTn②CPU中斷

此類中斷使用了0、1、3、4、6、7中斷號(hào)*1除法錯(cuò)中斷(屬于CPU的0型中斷)除數(shù)為0或商超過有關(guān)寄存器所能表示的最大值,產(chǎn)生除法錯(cuò)中斷*2INTO指令溢出中斷指令(屬于CPU的4型中斷)例:ADDAL,BL

INTO;當(dāng)OF=0,不引起INTO操作;當(dāng)OF=1時(shí),引起溢出中斷*BOUND指令(數(shù)組邊界檢查指令)中斷檢查帶符號(hào)的數(shù)組下標(biāo)是在由包含上界和下界的存儲(chǔ)器塊所限定的范圍內(nèi)。下標(biāo)超出范圍就產(chǎn)生中斷。

③單步調(diào)試中斷

當(dāng)標(biāo)志寄存器中的自陷位TF=1且中斷允許標(biāo)志位IF=1時(shí),CPU處于單步工作方式。在TD環(huán)境下,F(xiàn)7,F(xiàn)8鍵作為設(shè)定功能鍵,在這兩個(gè)鍵的處理程序中,使TF=1,IF=1。在TD環(huán)境中,可以在程序中需要的位置處插入INT3指令,執(zhí)行到該指令處,CPU中斷正常執(zhí)行過程,便于調(diào)試程序。在用戶程序中執(zhí)行INT3無意義。

②CPU中斷③單步調(diào)試中斷(2)外中斷(重點(diǎn))由外設(shè)向CPU發(fā)出中斷請求。1)非屏蔽中斷NMI(Non-MaskableInterrupt)不受CPU內(nèi)部中斷允許標(biāo)志IF的屏蔽2)可屏蔽中斷INTR(maskableINTRrupt)

受CPU內(nèi)部中斷允許標(biāo)志IF的屏蔽

STI指令,使IF=1,CPU可以接受來自INTR引腳上的中斷請求。術(shù)語:開中斷/中斷允許/允中CLI指令,

使IF=0,CPU不接受來自INTR引腳上的中斷請求。術(shù)語:關(guān)中斷/中斷禁止

CPU

NMI

INTR當(dāng)NMI上有正跳變信號(hào)時(shí),即產(chǎn)生一個(gè)內(nèi)部引導(dǎo)的類型2中斷。NMI引腳上的中斷請求不受IF標(biāo)志的控制,IF不能屏蔽NMI引腳上的中斷請求。IF=1,CPU響應(yīng)INTR引腳上的中斷請求;IF=0,CPU不響應(yīng)INTR引腳上的中斷請求通過INTR引腳傳遞到CPU的可屏蔽中斷,中斷類型號(hào)可以為6~255*中斷系統(tǒng):為了實(shí)現(xiàn)中斷而配置的硬件和軟件構(gòu)成的系統(tǒng)

(2)外中斷(重點(diǎn))CPU當(dāng)NMI上有正跳變信號(hào)時(shí),即(3)中斷向量表(P166)(注意內(nèi)容的展開)1)中斷源的識(shí)別中斷技術(shù)的核心問題——尋找中斷服務(wù)程序的入口地址*識(shí)別中斷源和尋找入口地址的復(fù)雜性在INTR引腳上可以連接250(6~255)個(gè)中斷源。CPUINTR08號(hào)中斷源09號(hào)中斷源0A號(hào)中斷源FF號(hào)中斷源08號(hào)中斷服務(wù)程序09號(hào)中斷服務(wù)程序0A號(hào)中斷服務(wù)程序FF號(hào)中斷服務(wù)程序ADDR00ADDR01ADDR02:ADDR08:ADDRFF中斷向量表中斷控制器中斷向量表是中斷源與中斷服務(wù)程序之間的“紐帶”。ADDR08ADDR09ADDR02ADDRFF::(3)中斷向量表(P166)(注意內(nèi)容的展開)1)中斷源的任何一個(gè)中斷源發(fā)出中斷請求,CPU必須能夠迅速、準(zhǔn)確地找到為該中斷源服務(wù)的中斷服務(wù)程序的入口地址,怎么找?

從應(yīng)用角度看,很多中間過程并不需要用戶通過編程來完成,因而可以大大簡化中斷索引過程的敘述。這里,分四步(#1、#2、#3、#4)來敘述識(shí)別中斷源和尋找入口地址的問題。#1

識(shí)別中斷源及尋找入口地址概要從編程角度看,為了識(shí)別中斷源及尋找入口地址,外設(shè)與CPU必須進(jìn)行如圖所示的交流。CPU向外設(shè)索取的中斷向量號(hào),實(shí)際上就是索取中斷源的“身份證號(hào)”——標(biāo)識(shí)符。CPU取得它,也就識(shí)別了中斷源。當(dāng)CPU取得中斷向量號(hào)以后,又如何取得相應(yīng)中斷源的中斷服務(wù)程序的入口地址呢?必須借助于中斷向量表。

*識(shí)別中斷源及尋找入口地址概要示意任何一個(gè)中斷源發(fā)出中斷請求,CPU必須能夠迅INTRCPU

中斷源N*1請求中斷當(dāng)前程序,執(zhí)行N的中斷服務(wù)程序*2接受中斷請求。但不知道入口地址,請送標(biāo)識(shí)碼(中斷向量號(hào))!*3標(biāo)識(shí)碼是N,請按規(guī)則,在中斷向量表中獲取N的中斷服務(wù)程序的入口地址。什么是“中斷向量表”,如何根據(jù)標(biāo)識(shí)碼從中查找入口地址?#2中斷向量表

①中斷類型號(hào):即中斷源標(biāo)識(shí)碼或中斷向量號(hào)。80X86給每一個(gè)中斷源分配了一個(gè)序號(hào),從00—FFH,共256個(gè)。

在80X86中是通過中斷類型號(hào)來識(shí)別中斷源的。INTR*1請求中斷當(dāng)前程序,*2接受中斷請求。但不知道入口②中斷向量:中斷服務(wù)程序的入口地址

③中斷向量表:*80X86在內(nèi)存0段0000H—03FFH這1K字節(jié)中建立了一個(gè)中斷向量表,用以存放256個(gè)中斷向量。*各中斷源的中斷服務(wù)程序入口地址在內(nèi)存中斷向量表中有固定的存放位置——以中斷類型號(hào)X4開始的連續(xù)四個(gè)字節(jié)單元中,前兩個(gè)字節(jié)存放中斷服務(wù)程序的入口地址的偏移量,后兩個(gè)字節(jié)存放中斷服務(wù)程序的入口地址的段基址。對于0號(hào)中斷而言,設(shè)其中斷服務(wù)程序的入口地址是:

UUVV:XXYY(其物理地址是UUVV0+0XXYY),則有: 0000:0000YY 0000:0001XX 0000:0002VV 0000:0003UU對于0aH號(hào)中斷而言,設(shè)其中斷服務(wù)程序的入口地址是:0100:0051(其物理地址是

01000+0051),則有:

0ax4=0028H中斷向量0000:0028510000:0029000000:002A000000:002B01中斷向量地址②中斷向量:中斷服務(wù)程序的入口地址③中斷向量表:*80X8④中斷向量地址:存放中斷向量(入口地址)的存儲(chǔ)單元的地址,即N×4、N×4+1、N×4+2、N×4+3

#3如何根據(jù)中斷類型號(hào)在中斷向量表中尋找入口地址?

CPU在響應(yīng)中斷時(shí),根據(jù)中斷類型號(hào),從中斷向量表中取出高兩個(gè)字節(jié)(入口地址的段基址)裝入代碼段寄存器CS;低兩個(gè)字節(jié)(入口地址的偏移量)裝入指令指針寄存器IP中,轉(zhuǎn)入中斷服務(wù)程序。

中斷響應(yīng)時(shí),CPU將有以下操作:把F寄存器、IP寄存器和CS寄存器的內(nèi)容壓入堆棧;把0:N×4和0:N×4+1的內(nèi)容送入IP;把0:N×4+2和0:N×4+3的內(nèi)容送入CS;跳到CS:IP去執(zhí)行中斷服務(wù)程序。設(shè)某中斷源的中斷類型號(hào)為0aH,執(zhí)行中斷時(shí),CPU根據(jù)0aH,得到28H,從0028H,0029H,002AH和002BH這四個(gè)單元中取得

0100:0051

并把前兩個(gè)字節(jié)0051H送入IP,后兩個(gè)字節(jié)0100H送入CS。物理地址為01000H+00051H=01051H,即中斷服務(wù)程序的人口地址。

誰提供中斷類型號(hào)?當(dāng)中斷是由指令I(lǐng)NTn產(chǎn)生時(shí),

指令直接提供中斷向量;

④中斷向量地址:存放中斷向量(入口地址)的存儲(chǔ)單元的地址,#當(dāng)中斷是由外設(shè)產(chǎn)生時(shí),應(yīng)由該外設(shè)向CPU提供中斷向量YYXXVVUU

51000001CPU響應(yīng)中斷,則把中斷服務(wù)程序入口地址送入IP和CS0000:0000H

IP

IP

CSCS

IP

CS中斷號(hào)N

N×4內(nèi)存地址中斷向量表

00H

00H

0000:0004H

01H

04H

0AH

28H

0000:0028H

0000:0029H

0000:002AH

0000:002BH

N

N×4

FFH

03FCH

0000:03FCH

0000:03FFH

CPU根據(jù)中斷源提供的標(biāo)識(shí)碼(即:中斷類型號(hào),中斷向量號(hào))即可在中斷向量表中找到該中斷源的中斷服務(wù)程序入口地址。

在硬中斷中,向CPU提供中斷源識(shí)別碼是中斷技術(shù)的關(guān)鍵。需要硬軟件的有機(jī)配合。8259A可編程中斷控制器用于管理中斷,向CPU提供標(biāo)識(shí)碼(中斷向量號(hào)、中斷類型號(hào))當(dāng)中斷是由外設(shè)產(chǎn)生時(shí),應(yīng)由該外設(shè)向CPU提供中斷向量YYCP路線圖:中斷源提供類型號(hào)N—得到中斷向量地址4×N、4×N+1、4×N+2、4×N+3—在中斷向量表中取這4個(gè)單元的內(nèi)容送CS和IP——進(jìn)入中斷服務(wù)程序。例:設(shè)某外設(shè)的識(shí)別碼為0aH,其中斷服務(wù)程序的入口地址為:0100:0051HCPU0ax4=0028HINTR

IACK0aH外設(shè)0aH外設(shè)中斷服務(wù)程序51000001中斷向量表DB用戶編程填寫用戶編寫

中斷發(fā)生之前,用戶先要完成的兩項(xiàng)工作問題:在多個(gè)中斷源的情況下,如何把優(yōu)先級(jí)最高的中斷源的識(shí)別碼送給CPU?怎么送?0000:00280000:00290000:002A0000:002B②①③0a④⑤0100:0051路線圖:例:設(shè)某外設(shè)的識(shí)別碼為0aH,CPU0aH0aH形象地給出了與中斷操作有關(guān)的主要過程。設(shè)中斷類型號(hào)為0aH,其中斷服務(wù)程序的入口地址已經(jīng)填入到中斷向量表中正確的位置。中斷主要過程:①0aH號(hào)中斷源:情況緊急,請求CPU執(zhí)行0aH號(hào)中斷服務(wù)程序。②CPU:現(xiàn)在正好沒有比你更緊迫的事件要處理,可以接受你的請求,但苦于不知道你是誰,請送你的“身份證號(hào)”——中斷類型號(hào)。③0aH號(hào)中斷源:我是0aH號(hào)中斷源。④CPU嚴(yán)格按“游戲規(guī)則”,根據(jù)0aH,得到28H,從0028H,0029H,002AH和002BH這四個(gè)單元中取得0100:0051并把低兩個(gè)字節(jié)0051H送入IP,高兩個(gè)字節(jié)0100H送入CS。絕對地址為01000H+00051H=01051H,即中斷服務(wù)程序的人口地址。⑤CPU執(zhí)行0aH號(hào)中斷服務(wù)程序。

#4中斷向量的填入誰來填寫中斷向量表中各項(xiàng)的內(nèi)容?開機(jī)后,BIOS立即把有關(guān)的中斷向量填入中斷向量表中(包括0—7FH一段),當(dāng)BIOS引導(dǎo)DOS到內(nèi)存后,DOS進(jìn)行初始化時(shí),又把某些中斷向量填入中斷向量表,還要修改由BIOS裝入的某些中斷向量。用戶的中斷服務(wù)程序的入口地址應(yīng)當(dāng)由用戶自己填寫,中斷向量表的設(shè)置當(dāng)CPU響應(yīng)中斷時(shí),將從中斷向量表中讀取中斷向量送給CS和IP,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。因此,用戶必須事先將中斷服務(wù)程序的入口地址填入系統(tǒng)的中斷向量表中,填入的方法有兩種。

形象地給出了與中斷操作有關(guān)的主要過程。設(shè)中斷類型假設(shè)中斷類型號(hào)為32H,斷服務(wù)程序入口處的標(biāo)號(hào)為INTSUB。①用程序設(shè)置中斷向量表、、、CLI;關(guān)中斷MOV AX,0;0段MOV ES,AXMOV DI,4*32H;0段內(nèi)偏移地址LEA AX,INTSUB;取入口地址的偏移地址CLD;增址STOSW;把入口地址的偏移地址存入;0000:4*32字單元MOV AX,SEGINTSUB;取入口地址的段基址STOSW;把入口地址的段基址存入;0000:4*32+2字單元、、、DI+24×32+2DI4×32+0用CLD(ClearDF)設(shè)置DF=0,增址修改AL偏移AH地址AL段基AH址用STOSW指令完成填寫中斷向量中斷向量表

ES0段

假設(shè)中斷類型號(hào)為32H,斷服務(wù)程序入口處的標(biāo)號(hào)為INTSUBP167或:

、、、MOV AX,0;0段MOV DS,AXMOV BX,4*32H;0段內(nèi)偏移地址MOV AX,OFFSETINTSUB;取入口地址的偏移地址MOV[BX],AX;把入口地址的偏移地址存入;0000:4*32字單元MOV AX,SEGINTSUB;取入口地址的段基址MOV[BX+2],AX;把入口地址的段基址存入;0000:4*32+2字單元DI+24×32+2DI4×32+0AL偏移AH地址AL段基AH址中斷向量表

DS0段

用DOS功能設(shè)置中斷向量表(07/10/31007)*中斷向量的置換在中斷向量表中,系統(tǒng)占有若干單元存放系統(tǒng)自己的中斷服務(wù)程序的入口地址(中斷向量),微機(jī)在初始化過程中,把這些中斷向量填寫到中斷向量表中。例如:系統(tǒng)輔串口占用中斷向量號(hào)0BH,系統(tǒng)初始化時(shí),已經(jīng)在0B×4~0B×4+3(002CH~002FH)這4個(gè)單元中填寫了中斷向量;如果用戶也想占用0BH,也必須把用戶的中斷向量寫入這4個(gè)單元。為了不破壞系統(tǒng)設(shè)置的中斷向量,需要進(jìn)行中斷置換:P167或:、、、DI+24×32+2DIIPLIPHCSLCSH用戶中斷服務(wù)程序CS:IP原中斷向量

堆棧

CS:IP1

2

30000:002CH0000:002DH0000:002EH0000:002FH*借用DOS35H號(hào)功能,讀出原中斷向量;

*借用DOS25H號(hào)功能,把用戶中斷向量寫入中斷向量表把原中斷向量填回中斷向量表1)35H號(hào)功能:入口:AL:中斷向量號(hào)

出口:ES存放中斷向量的段基址;BX存放偏移地址2)25H號(hào)功能

入口:AL:中斷向量號(hào);DS:中斷向量的段基址;DX:偏移地址例:設(shè)某外設(shè)的中斷服務(wù)程序的入口地址為INTP,中斷類型號(hào)為0BH。用戶中斷CS:IP原中斷向量堆棧CS:IP1230如果把0BH改變0AH,程序中相關(guān)部分應(yīng)當(dāng)怎么處理?(3)中斷描述符表在DOS環(huán)境下,486工作在實(shí)模式時(shí),中斷服務(wù)程序的屬性比較單一,僅用中斷向量表明它的位置就可以了。:MOVAX,350BH;AH=35H,AL=0BHINT21H;從向量表中讀出原中斷向量

;存人ES:BPUSHES;把原中斷向量壓入堆棧PUSHBX

MOVAX,SEGINTP;取用戶中斷向量段基址MOVDS,AX;25H功能要求基地址送入DSMOVDX,OFFSETINTP;用戶中斷向量偏移地址MOVAX,250BH;AH=25H,AL=0BHINT21H;把用戶中斷服務(wù)程序入口地址:;填入中斷向量表POPDX;取原中斷向量POPDSMOVAX,250BHINT21H;把原中斷向量填回中斷向量表如果把0BH改變0AH,程序中相關(guān)部分應(yīng)當(dāng)怎么處理?(3)中在多任務(wù)操作系統(tǒng)(如:UNIX,WINDOWS)管理下,486工作在保護(hù)模式的時(shí)候,情況要復(fù)雜得多,僅僅用中斷向量已經(jīng)不能全面描述中斷服務(wù)程序的全部屬性了,而必須:用中斷描述符來描述中斷服務(wù)程序;用中斷描述符表來代替中斷向量表。

暫時(shí)了解到此(4)中斷優(yōu)先級(jí)與中斷嵌套CPU在執(zhí)行中斷服務(wù)程序的過程中,被高優(yōu)先級(jí)的中斷源中斷,又轉(zhuǎn)入另一個(gè)中斷服務(wù)程序的操作,叫中斷嵌套。P170圖6.12

嵌套原則:高級(jí)可以中斷低級(jí),低級(jí)不能中斷高級(jí)或同級(jí)。P170表6.1給出了在80486中,各大類中斷源的優(yōu)先級(jí)。(5)CPU響應(yīng)中斷的條件并非一產(chǎn)生中斷請求,CPU就響應(yīng)中斷。CPU響應(yīng)中斷是有一定條件的,其中以可屏蔽中斷的條件最多,以此為例,講解CPU響應(yīng)可屏蔽中斷的條件

①中斷源發(fā)出中斷請求信號(hào)

②中斷請求信號(hào)不被屏蔽(請求能夠被傳遞到INTR引腳),在I/O口這一級(jí)增加一道關(guān)口,增加控制的靈活性。

③CPU愿意接受中斷(CPU開中斷,允許中斷)

④沒有更高優(yōu)先級(jí)的中斷

⑤執(zhí)行完當(dāng)前指令

在多任務(wù)操作系統(tǒng)(如:UNIX,WINDOWS)管理下,48通過一張簡圖,解釋以上幾點(diǎn)的含義。CPU④⑤

③INTR與門中斷屏蔽(允許)觸發(fā)器控制端口中斷請求觸發(fā)器外設(shè)請求信號(hào)是否被屏蔽中斷是否打開保存請求信號(hào)直到被響應(yīng)為止①②有了以上基礎(chǔ),再看P164圖6.8。通過一張簡圖,解釋以上幾點(diǎn)的含義。CPU與門中斷屏*主干:外設(shè)數(shù)據(jù)—數(shù)據(jù)端口—DB—CPU*為配合中斷操作,增加若干環(huán)節(jié)。中斷允許觸發(fā)器受控于CPU,CPU對控制信號(hào)端口發(fā)出控制信號(hào),可以把允許觸發(fā)器置1(打開與門,請求信號(hào)能夠被傳送到INTR)或置0(屏蔽請求信號(hào))。

輸入裝置鎖存器數(shù)據(jù)D&&三態(tài)緩沖器RQM/IOW/RM/IOW/R+5VPdPs地址譯碼數(shù)據(jù)口地址總線(A7-A0)控制口CPU數(shù)據(jù)總線選通信號(hào)&DQ數(shù)據(jù)線D0位INTR中斷請求觸發(fā)器I/O環(huán)節(jié)的中斷允許觸發(fā)器*主干:外設(shè)數(shù)據(jù)—數(shù)據(jù)端口—DB—CPU輸入裝置鎖存器數(shù)(6)中斷處理過程內(nèi)中斷處理過程①CPU自動(dòng)產(chǎn)生中斷類型號(hào)n;②(SP)-2→(SP),標(biāo)志寄存器F內(nèi)容入棧;③(SP)-2→(SP),當(dāng)前代碼段CS內(nèi)容入棧;④(SP)-2→(SP),當(dāng)前指令計(jì)數(shù)器IP內(nèi)容入棧;⑤禁止外部中斷IF=0,禁止單步中斷TF=0;⑥從中斷向量表中取中斷服務(wù)程序入口地址(4*N單元的字內(nèi)容送IP,4*N+2單元里的內(nèi)容送CS);⑦轉(zhuǎn)中斷服務(wù)程序;⑧執(zhí)行中斷服務(wù)程序并返回,彈出IP,CS,F(xiàn),返回?cái)帱c(diǎn)。外中斷(INTR)執(zhí)行過程①CPU發(fā)出兩個(gè)中斷響應(yīng)信號(hào)INTA,第二個(gè)INTA時(shí),CPU從當(dāng)前數(shù)據(jù)總線上取中斷類型碼N(通常由管理INTR的控制器8259A提供);②(SP)-2→(SP),標(biāo)志寄存器F內(nèi)容入棧;③(SP)-2→(SP),當(dāng)前代碼段CS內(nèi)容入棧;④(SP)-2→(SP),當(dāng)前指令計(jì)數(shù)器IP內(nèi)容入棧;⑤禁止外部中斷IF=0,禁止單步中斷TF=0;⑥首先從中斷向量表中取4*N單元的字內(nèi)容送IP,然后再取4*N+2單元里的內(nèi)容送CS;⑦轉(zhuǎn)中斷服務(wù)程序;⑧執(zhí)行中斷服務(wù)程序并返回,彈出IP,CS,F(xiàn),返回?cái)帱c(diǎn),繼續(xù)執(zhí)行。(6)中斷處理過程(7)多中斷源的中斷識(shí)別與優(yōu)先級(jí)管理

1)中斷優(yōu)先級(jí)編碼電路CPU未響應(yīng)任何中斷,優(yōu)先級(jí)無效,此處為“1”;否則為“0”新中斷源的優(yōu)先級(jí)別高于CPU正在響應(yīng)的中斷源,此處為“1”存放CPU正在響應(yīng)的中斷源的中斷優(yōu)先級(jí)編碼多個(gè)中斷源同時(shí)發(fā)出中斷請求時(shí),只輸出級(jí)別最高的中斷源的優(yōu)先級(jí)編碼。任何一個(gè)中斷請求,均可通過‘或’門送到CPUCPU未響應(yīng)任何中斷時(shí),中斷請求信號(hào)通過與2傳遞給CPU;CPU正在為某一中斷源服務(wù)時(shí),由比較器決定是否通過與1把新中斷請求傳遞給CPU。新中斷源CPU正在響應(yīng)的優(yōu)先級(jí)編碼中斷源的編碼

A2A1A0

B2B1B0

111

111

110

110::000

000A>B,表明“新”級(jí)別高于“正”(7)多中斷源的中斷識(shí)別與優(yōu)先級(jí)管理1)中斷優(yōu)先級(jí)編碼電路2)菊花鏈排隊(duì)電路

IACKInterruptACKnowledge,中斷應(yīng)答(中斷響應(yīng))。該信號(hào)啟動(dòng)鎖存器,把中斷源狀態(tài)送入CPU,作為查詢依據(jù)。*每一個(gè)中斷源配有一個(gè)中斷向量發(fā)生器,當(dāng)IACK信號(hào)送達(dá)某中斷源時(shí),如果該中斷源沒有發(fā)出中斷請求信號(hào),則把IACK信號(hào)傳遞到后面。

如果該中斷源發(fā)出了中斷請求信號(hào),則在IACK信號(hào)作用下,該中斷源通過中斷向量發(fā)生器把自己的識(shí)別碼(中斷向量號(hào))回送CPU。CPU根據(jù)識(shí)別碼,在中斷向量表中,找到相應(yīng)的中斷服務(wù)程序的入口地址。

2)菊花鏈排隊(duì)電路IACKInterru6.2中斷及中斷控制器82596.2.1中斷的基本概念(1)什么是中斷

在日常生活中,中斷現(xiàn)象俯拾皆是……在計(jì)算機(jī)系統(tǒng)中,一個(gè)CPU要處理若干事務(wù):數(shù)據(jù)采集,運(yùn)算,顯示,處理突發(fā)事件,通信,打印…….。這就要求采用中斷技術(shù),才能作到面面俱到而又不誤突發(fā)事件的處理時(shí)機(jī)。計(jì)算機(jī)用于測控領(lǐng)域,必然涉及中斷。在計(jì)算機(jī)中,中斷的含義很狹窄:從程序執(zhí)行的角度看:CPU正在執(zhí)行的當(dāng)前程序被外設(shè)打斷,轉(zhuǎn)而執(zhí)行為外設(shè)服務(wù)的所謂“中斷服務(wù)程序”(ISR:InterruptServiceRoutine)。

當(dāng)前程序外設(shè)n的中斷服務(wù)程序CPUINTR中斷請求觸發(fā)器

外設(shè)n當(dāng)前程序:CALLSUBR:子程序*外設(shè)隨機(jī)誘發(fā)中斷,轉(zhuǎn)入中斷服務(wù)程序*硬、軟件配合尋找入口地址*由CALL指令引起轉(zhuǎn)入子程序*預(yù)知何時(shí)轉(zhuǎn)入子程序*入口地址直接從CALL中取得SUBR

從數(shù)據(jù)傳送的角度看,是主機(jī)與外設(shè)交換信息的一種方式。6.2中斷及中斷控制器82596.2.1中斷的基本概念(2)中斷源與中斷向量表中斷源:能夠引發(fā)CPU中斷的信息源,稱為中斷源。80X86微機(jī)系統(tǒng)中最多允許有256種中斷源,其中中斷源類型編號(hào)為0~255。*中斷系統(tǒng):為了實(shí)現(xiàn)中斷而配置的硬件和軟件構(gòu)成的系統(tǒng)1)內(nèi)中斷(軟中斷)指CPU執(zhí)行某些特殊操作或由INT指令引起的中斷,通常分為以下三類:①執(zhí)行INTn指令引起的中斷,n=00~FFH②CPU中斷在執(zhí)行指令的過程中出現(xiàn)某些需要處理的異常而產(chǎn)生的中斷。③使用調(diào)試程序中的單步或斷點(diǎn)設(shè)置操作引起的中斷.①INTn指令(n=0~255)如INT21H執(zhí)行該指令后,轉(zhuǎn)入系統(tǒng)的“21H型中斷服務(wù)程序”,執(zhí)行由AH指定的子程序

21H型中斷服務(wù)程序根據(jù)AH內(nèi)容進(jìn)入某一子程序AH=01

AH=02

AH=09

AH=0AAH=4C01H功能02H功能09H功能0AH功能4CH功能:::(2)中斷源與中斷向量表1)內(nèi)中斷(軟中斷)①INTn②CPU中斷

此類中斷使用了0、1、3、4、6、7中斷號(hào)*1除法錯(cuò)中斷(屬于CPU的0型中斷)除數(shù)為0或商超過有關(guān)寄存器所能表示的最大值,產(chǎn)生除法錯(cuò)中斷*2INTO指令溢出中斷指令(屬于CPU的4型中斷)例:ADDAL,BL

INTO;當(dāng)OF=0,不引起INTO操作;當(dāng)OF=1時(shí),引起溢出中斷*BOUND指令(數(shù)組邊界檢查指令)中斷檢查帶符號(hào)的數(shù)組下標(biāo)是在由包含上界和下界的存儲(chǔ)器塊所限定的范圍內(nèi)。下標(biāo)超出范圍就產(chǎn)生中斷。

③單步調(diào)試中斷

當(dāng)標(biāo)志寄存器中的自陷位TF=1且中斷允許標(biāo)志位IF=1時(shí),CPU處于單步工作方式。在TD環(huán)境下,F(xiàn)7,F(xiàn)8鍵作為設(shè)定功能鍵,在這兩個(gè)鍵的處理程序中,使TF=1,IF=1。在TD環(huán)境中,可以在程序中需要的位置處插入INT3指令,執(zhí)行到該指令處,CPU中斷正常執(zhí)行過程,便于調(diào)試程序。在用戶程序中執(zhí)行INT3無意義。

②CPU中斷③單步調(diào)試中斷(2)外中斷(重點(diǎn))由外設(shè)向CPU發(fā)出中斷請求。1)非屏蔽中斷NMI(Non-MaskableInterrupt)不受CPU內(nèi)部中斷允許標(biāo)志IF的屏蔽2)可屏蔽中斷INTR(maskableINTRrupt)

受CPU內(nèi)部中斷允許標(biāo)志IF的屏蔽

STI指令,使IF=1,CPU可以接受來自INTR引腳上的中斷請求。術(shù)語:開中斷/中斷允許/允中CLI指令,

使IF=0,CPU不接受來自INTR引腳上的中斷請求。術(shù)語:關(guān)中斷/中斷禁止

CPU

NMI

INTR當(dāng)NMI上有正跳變信號(hào)時(shí),即產(chǎn)生一個(gè)內(nèi)部引導(dǎo)的類型2中斷。NMI引腳上的中斷請求不受IF標(biāo)志的控制,IF不能屏蔽NMI引腳上的中斷請求。IF=1,CPU響應(yīng)INTR引腳上的中斷請求;IF=0,CPU不響應(yīng)INTR引腳上的中斷請求通過INTR引腳傳遞到CPU的可屏蔽中斷,中斷類型號(hào)可以為6~255*中斷系統(tǒng):為了實(shí)現(xiàn)中斷而配置的硬件和軟件構(gòu)成的系統(tǒng)

(2)外中斷(重點(diǎn))CPU當(dāng)NMI上有正跳變信號(hào)時(shí),即(3)中斷向量表(P166)(注意內(nèi)容的展開)1)中斷源的識(shí)別中斷技術(shù)的核心問題——尋找中斷服務(wù)程序的入口地址*識(shí)別中斷源和尋找入口地址的復(fù)雜性在INTR引腳上可以連接250(6~255)個(gè)中斷源。CPUINTR08號(hào)中斷源09號(hào)中斷源0A號(hào)中斷源FF號(hào)中斷源08號(hào)中斷服務(wù)程序09號(hào)中斷服務(wù)程序0A號(hào)中斷服務(wù)程序FF號(hào)中斷服務(wù)程序ADDR00ADDR01ADDR02:ADDR08:ADDRFF中斷向量表中斷控制器中斷向量表是中斷源與中斷服務(wù)程序之間的“紐帶”。ADDR08ADDR09ADDR02ADDRFF::(3)中斷向量表(P166)(注意內(nèi)容的展開)1)中斷源的任何一個(gè)中斷源發(fā)出中斷請求,CPU必須能夠迅速、準(zhǔn)確地找到為該中斷源服務(wù)的中斷服務(wù)程序的入口地址,怎么找?

從應(yīng)用角度看,很多中間過程并不需要用戶通過編程來完成,因而可以大大簡化中斷索引過程的敘述。這里,分四步(#1、#2、#3、#4)來敘述識(shí)別中斷源和尋找入口地址的問題。#1

識(shí)別中斷源及尋找入口地址概要從編程角度看,為了識(shí)別中斷源及尋找入口地址,外設(shè)與CPU必須進(jìn)行如圖所示的交流。CPU向外設(shè)索取的中斷向量號(hào),實(shí)際上就是索取中斷源的“身份證號(hào)”——標(biāo)識(shí)符。CPU取得它,也就識(shí)別了中斷源。當(dāng)CPU取得中斷向量號(hào)以后,又如何取得相應(yīng)中斷源的中斷服務(wù)程序的入口地址呢?必須借助于中斷向量表。

*識(shí)別中斷源及尋找入口地址概要示意任何一個(gè)中斷源發(fā)出中斷請求,CPU必須能夠迅INTRCPU

中斷源N*1請求中斷當(dāng)前程序,執(zhí)行N的中斷服務(wù)程序*2接受中斷請求。但不知道入口地址,請送標(biāo)識(shí)碼(中斷向量號(hào))!*3標(biāo)識(shí)碼是N,請按規(guī)則,在中斷向量表中獲取N的中斷服務(wù)程序的入口地址。什么是“中斷向量表”,如何根據(jù)標(biāo)識(shí)碼從中查找入口地址?#2中斷向量表

①中斷類型號(hào):即中斷源標(biāo)識(shí)碼或中斷向量號(hào)。80X86給每一個(gè)中斷源分配了一個(gè)序號(hào),從00—FFH,共256個(gè)。

在80X86中是通過中斷類型號(hào)來識(shí)別中斷源的。INTR*1請求中斷當(dāng)前程序,*2接受中斷請求。但不知道入口②中斷向量:中斷服務(wù)程序的入口地址

③中斷向量表:*80X86在內(nèi)存0段0000H—03FFH這1K字節(jié)中建立了一個(gè)中斷向量表,用以存放256個(gè)中斷向量。*各中斷源的中斷服務(wù)程序入口地址在內(nèi)存中斷向量表中有固定的存放位置——以中斷類型號(hào)X4開始的連續(xù)四個(gè)字節(jié)單元中,前兩個(gè)字節(jié)存放中斷服務(wù)程序的入口地址的偏移量,后兩個(gè)字節(jié)存放中斷服務(wù)程序的入口地址的段基址。對于0號(hào)中斷而言,設(shè)其中斷服務(wù)程序的入口地址是:

UUVV:XXYY(其物理地址是UUVV0+0XXYY),則有: 0000:0000YY 0000:0001XX 0000:0002VV 0000:0003UU對于0aH號(hào)中斷而言,設(shè)其中斷服務(wù)程序的入口地址是:0100:0051(其物理地址是

01000+0051),則有:

0ax4=0028H中斷向量0000:0028510000:0029000000:002A000000:002B01中斷向量地址②中斷向量:中斷服務(wù)程序的入口地址③中斷向量表:*80X8④中斷向量地址:存放中斷向量(入口地址)的存儲(chǔ)單元的地址,即N×4、N×4+1、N×4+2、N×4+3

#3如何根據(jù)中斷類型號(hào)在中斷向量表中尋找入口地址?

CPU在響應(yīng)中斷時(shí),根據(jù)中斷類型號(hào),從中斷向量表中取出高兩個(gè)字節(jié)(入口地址的段基址)裝入代碼段寄存器CS;低兩個(gè)字節(jié)(入口地址的偏移量)裝入指令指針寄存器IP中,轉(zhuǎn)入中斷服務(wù)程序。

中斷響應(yīng)時(shí),CPU將有以下操作:把F寄存器、IP寄存器和CS寄存器的內(nèi)容壓入堆棧;把0:N×4和0:N×4+1的內(nèi)容送入IP;把0:N×4+2和0:N×4+3的內(nèi)容送入CS;跳到CS:IP去執(zhí)行中斷服務(wù)程序。設(shè)某中斷源的中斷類型號(hào)為0aH,執(zhí)行中斷時(shí),CPU根據(jù)0aH,得到28H,從0028H,0029H,002AH和002BH這四個(gè)單元中取得

0100:0051

并把前兩個(gè)字節(jié)0051H送入IP,后兩個(gè)字節(jié)0100H送入CS。物理地址為01000H+00051H=01051H,即中斷服務(wù)程序的人口地址。

誰提供中斷類型號(hào)?當(dāng)中斷是由指令I(lǐng)NTn產(chǎn)生時(shí),

指令直接提供中斷向量;

④中斷向量地址:存放中斷向量(入口地址)的存儲(chǔ)單元的地址,#當(dāng)中斷是由外設(shè)產(chǎn)生時(shí),應(yīng)由該外設(shè)向CPU提供中斷向量YYXXVVUU

51000001CPU響應(yīng)中斷,則把中斷服務(wù)程序入口地址送入IP和CS0000:0000H

IP

IP

CSCS

IP

CS中斷號(hào)N

N×4內(nèi)存地址中斷向量表

00H

00H

0000:0004H

01H

04H

0AH

28H

0000:0028H

0000:0029H

0000:002AH

0000:002BH

N

N×4

FFH

03FCH

0000:03FCH

0000:03FFH

CPU根據(jù)中斷源提供的標(biāo)識(shí)碼(即:中斷類型號(hào),中斷向量號(hào))即可在中斷向量表中找到該中斷源的中斷服務(wù)程序入口地址。

在硬中斷中,向CPU提供中斷源識(shí)別碼是中斷技術(shù)的關(guān)鍵。需要硬軟件的有機(jī)配合。8259A可編程中斷控制器用于管理中斷,向CPU提供標(biāo)識(shí)碼(中斷向量號(hào)、中斷類型號(hào))當(dāng)中斷是由外設(shè)產(chǎn)生時(shí),應(yīng)由該外設(shè)向CPU提供中斷向量YYCP路線圖:中斷源提供類型號(hào)N—得到中斷向量地址4×N、4×N+1、4×N+2、4×N+3—在中斷向量表中取這4個(gè)單元的內(nèi)容送CS和IP——進(jìn)入中斷服務(wù)程序。例:設(shè)某外設(shè)的識(shí)別碼為0aH,其中斷服務(wù)程序的入口地址為:0100:0051HCPU0ax4=0028HINTR

IACK0aH外設(shè)0aH外設(shè)中斷服務(wù)程序51000001中斷向量表DB用戶編程填寫用戶編寫

中斷發(fā)生之前,用戶先要完成的兩項(xiàng)工作問題:在多個(gè)中斷源的情況下,如何把優(yōu)先級(jí)最高的中斷源的識(shí)別碼送給CPU?怎么送?0000:00280000:00290000:002A0000:002B②①③0a④⑤0100:0051路線圖:例:設(shè)某外設(shè)的識(shí)別碼為0aH,CPU0aH0aH形象地給出了與中斷操作有關(guān)的主要過程。設(shè)中斷類型號(hào)為0aH,其中斷服務(wù)程序的入口地址已經(jīng)填入到中斷向量表中正確的位置。中斷主要過程:①0aH號(hào)中斷源:情況緊急,請求CPU執(zhí)行0aH號(hào)中斷服務(wù)程序。②CPU:現(xiàn)在正好沒有比你更緊迫的事件要處理,可以接受你的請求,但苦于不知道你是誰,請送你的“身份證號(hào)”——中斷類型號(hào)。③0aH號(hào)中斷源:我是0aH號(hào)中斷源。④CPU嚴(yán)格按“游戲規(guī)則”,根據(jù)0aH,得到28H,從0028H,0029H,002AH和002BH這四個(gè)單元中取得0100:0051并把低兩個(gè)字節(jié)0051H送入IP,高兩個(gè)字節(jié)0100H送入CS。絕對地址為01000H+00051H=01051H,即中斷服務(wù)程序的人口地址。⑤CPU執(zhí)行0aH號(hào)中斷服務(wù)程序。

#4中斷向量的填入誰來填寫中斷向量表中各項(xiàng)的內(nèi)容?開機(jī)后,BIOS立即把有關(guān)的中斷向量填入中斷向量表中(包括0—7FH一段),當(dāng)BIOS引導(dǎo)DOS到內(nèi)存后,DOS進(jìn)行初始化時(shí),又把某些中斷向量填入中斷向量表,還要修改由BIOS裝入的某些中斷向量。用戶的中斷服務(wù)程序的入口地址應(yīng)當(dāng)由用戶自己填寫,中斷向量表的設(shè)置當(dāng)CPU響應(yīng)中斷時(shí),將從中斷向量表中讀取中斷向量送給CS和IP,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。因此,用戶必須事先將中斷服務(wù)程序的入口地址填入系統(tǒng)的中斷向量表中,填入的方法有兩種。

形象地給出了與中斷操作有關(guān)的主要過程。設(shè)中斷類型假設(shè)中斷類型號(hào)為32H,斷服務(wù)程序入口處的標(biāo)號(hào)為INTSUB。①用程序設(shè)置中斷向量表、、、CLI;關(guān)中斷MOV AX,0;0段MOV ES,AXMOV DI,4*32H;0段內(nèi)偏移地址LEA AX,INTSUB;取入口地址的偏移地址CLD;增址STOSW;把入口地址的偏移地址存入;0000:4*32字單元MOV AX,SEGINTSUB;取入口地址的段基址STOSW;把入口地址的段基址存入;0000:4*32+2字單元、、、DI+24×32+2DI4×32+0用CLD(ClearDF)設(shè)置DF=0,增址修改AL偏移AH地址AL段基AH址用STOSW指令完成填寫中斷向量中斷向量表

ES0段

假設(shè)中斷類型號(hào)為32H,斷服務(wù)程序入口處的標(biāo)號(hào)為INTSUBP167或:

、、、MOV AX,0;0段MOV DS,AXMOV BX,4*32H;0段內(nèi)偏移地址MOV AX,OFFSETINTSUB;取入口地址的偏移地址MOV[BX],AX;把入口地址的偏移地址存入;0000:4*32字單元MOV AX,SEGINTSUB;取入口地址的段基址MOV[BX+2],AX;把入口地址的段基址存入;0000:4*32+2字單元DI+24×32+2DI4×32+0AL偏移AH地址AL段基AH址中斷向量表

DS0段

用DOS功能設(shè)置中斷向量表(07/10/31007)*中斷向量的置換在中斷向量表中,系統(tǒng)占有若干單元存放系統(tǒng)自己的中斷服務(wù)程序的入口地址(中斷向量),微機(jī)在初始化過程中,把這些中斷向量填寫到中斷向量表中。例如:系統(tǒng)輔串口占用中斷向量號(hào)0BH,系統(tǒng)初始化時(shí),已經(jīng)在0B×4~0B×4+3(002CH~002FH)這4個(gè)單元中填寫了中斷向量;如果用戶也想占用0BH,也必須把用戶的中斷向量寫入這4個(gè)單元。為了不破壞系統(tǒng)設(shè)置的中斷向量,需要進(jìn)行中斷置換:P167或:、、、DI+24×32+2DIIPLIPHCSLCSH用戶中斷服務(wù)程序CS:IP原中斷向量

堆棧

CS:IP1

2

30000:002CH0000:002DH0000:002EH0000:002FH*借用DOS35H號(hào)功能,讀出原中斷向量;

*借用DOS25H號(hào)功能,把用戶中斷向量寫入中斷向量表把原中斷向量填回中斷向量表1)35H號(hào)功能:入口:AL:中斷向量號(hào)

出口:ES存放中斷向量的段基址;BX存放偏移地址2)25H號(hào)功能

入口:AL:中斷向量號(hào);DS:中斷向量的段基址;DX:偏移地址例:設(shè)某外設(shè)的中斷服務(wù)程序的入口地址為INTP,中斷類型號(hào)為0BH。用戶中斷CS:IP原中斷向量堆棧CS:IP1230如果把0BH改變0AH,程序中相關(guān)部分應(yīng)當(dāng)怎么處理?(3)中斷描述符表在DOS環(huán)境下,486工作在實(shí)模式時(shí),中斷服務(wù)程序的屬性比較單一,僅用中斷向量表明它的位置就可以了。:MOVAX,350BH;AH=35H,AL=0BHINT21H;從向量表中讀出原中斷向量

;存人ES:BPUSHES;把原中斷向量壓入堆棧PUSHBX

MOVAX,SEGINTP;取用戶中斷向量段基址MOVDS,AX;25H功能要求基地址送入DSMOVDX,OFFSETINTP;用戶中斷向量偏移地址MOVAX,250BH;AH=25H,AL=0BHINT21H;把用戶中斷服務(wù)程序入口地址:;填入中斷向量表POPDX;取原中斷向量POPDSMOVAX,250BHINT21H;把原中斷向量填回中斷向量表如果把0BH改變0AH,程序中相關(guān)部分應(yīng)當(dāng)怎么處理?(3)中在多任務(wù)操作系統(tǒng)(如:UNIX,WINDOWS)管理下,486工作在保護(hù)模式的時(shí)候,情況要復(fù)雜得多,僅僅用中斷向量已經(jīng)不能全面描述中斷服務(wù)程序的全部屬性了,而必須:用中斷描述符來描述中斷服務(wù)程序;用中斷描述符表來代替中斷向量表。

暫時(shí)了解到此(4)中斷優(yōu)先級(jí)與中斷嵌套CPU在執(zhí)行中斷服務(wù)程序的過程中,被高優(yōu)先級(jí)的中斷源中斷,又轉(zhuǎn)入另一個(gè)中斷服務(wù)程序的操作,叫中斷嵌套。P170圖6.12

嵌套原則:高級(jí)可以中斷低級(jí),低級(jí)不能中斷高級(jí)或同級(jí)。P170表6.1給出了在80486中,各大類中斷源的優(yōu)先級(jí)。(5)CPU響應(yīng)中斷的條件并非一產(chǎn)生中斷請求,CPU就響應(yīng)中斷。CPU響應(yīng)中斷是有一定條件的,其中以可屏蔽中斷的條件最多,以此為例

溫馨提示

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

評(píng)論

0/150

提交評(píng)論