請描述cpu相應外部中斷的過程,並分析為什麼8086中斷向量表的大小是位元組

時間 2021-08-31 06:05:46

1樓:匿名使用者

內中斷: 是cpu內部發生情況後而產生的中斷資訊,於是cpu便放下手中的活來處理中斷例程

8086cpu會產生主要這麼幾種內中斷:

1.除法溢位(0號中斷)

2.單步中斷(1號中斷)

3.執行into指令產生的中斷(不清楚)

4.執行int指令產生的中斷(常見的int 21就是屬於這種)

首先,理解清楚什麼是中斷例程, 中斷向量,中斷向量表,中斷資訊,中斷型別碼等概念

1.中斷型別碼是乙個8位的數,也就是0-255的範圍,一共256個中斷型別碼,每乙個號碼對應乙個中斷向量

2.中斷向量裡面包含中斷例程的入口位址(cs:ip),其中cs是16位段暫存器,ip也是16位的所以一共4位元組

3.中斷向量表是一張表儲存著256個中斷向量,而每乙個向量儲存著乙個中斷例程的位址,也就是說總共最多會有256個中斷例程

4.中斷資訊包含很多資訊最重要的就是中斷型別碼,該碼號指出了中斷例程的在記憶體中的置位

5.中斷例程又稱為中斷處理程式,是cpu在接收到中斷資訊後所執行的程式,該程式的入口位於中斷向量表中的中斷向量裡

2樓:哈哈呵呵你好

cpu在intr引腳上接到乙個中斷請求訊號,如果此時if=1,並且,當前的中斷有最高的優先順序,cpu就會在當前指令執行結束完以後開始響應外部中斷請求。這是,cpu通過inta引腳連續傳送兩個負脈衝,外設介面在接到第二個負脈衝後,在資料線上傳送中斷型別碼,cpu接到這個中斷型別碼後做如下操作:

1 將中斷型別碼放入暫存器儲存;

2 將標誌暫存器內容入棧,保護中斷狀態;

3 將if和tf表示清零;

4 保護斷點。ip和cs內容入棧;

5 根據當前中斷型別碼,在中斷向量表找到相應的中斷子程式的首位址,將其裝入ip和cs,這樣就可以實現自動轉向中斷服務子程式處執行。

8086支援256個中斷,對應每個中斷需要安排乙個中斷服務程式。256個中斷服務程式的首位址(cs:ip)按序排列在一起組成乙個中斷向量表, 每個中斷向量由4位元組組成。

這4位元組指明了乙個中斷服務程式的段值(賦值給cs)和段內偏移值(賦給ip)。因此整個向量表的長度為1kb=256*4,佔據實體地址範圍是0x00000 ~ 0x003ff。

8086系統中,中斷型別碼、中斷向量、中斷向量表的關係是什麼?

3樓:匿名使用者

中斷型別碼:,其實就是中斷號,對不同的中斷服務程式不同的名稱記號,以呼叫該中斷程式.

中斷向量:指向中斷服務程式的入口位址.乙個向量代表的入口位址為4個位元組.

中斷向量表:由於存在多個中斷請求,相應有多個中斷服務程式,即有多個存放這些程式的入口位址(即中斷向量).為此系統在記憶體的特定區域安排一張中斷向量表,專門存放所有的中斷向量.

此表即中斷向量表.

以上三者關係:中斷向量=[中斷號x4], 其中方括號的含義是記憶體單元的內容.(即中斷向量表剛好存放在記憶體絕對位址0開始的位置)

4樓:匿名使用者

中斷向量=[中斷x4],包括括號的含義是記憶體單元的內容。(也就是說,只儲存在記憶體位址0中,絕對開始位置)**:中斷型別,實際上被中斷,標記為不同的中斷服務程式的名稱,以呼叫中斷程式。

1、中斷向量:中斷服務程式的入口位址。乙個向量表示4個位元組的輸入位址。

2、對規模的破壞:因為有多個中斷請求,有多個中斷服務例程,對應的儲存有多個程式入口位址(即中斷向量)。這個系統在乙個特定區域的記憶體中安排乙個中斷到規模,專門儲存所有的中斷向量。

這種形式的規模的中斷。

3、在8086系統中,乙個向量中斷用於描述8086系統中中斷型別**、中斷向量和中斷規模之間的關係。

5樓:匿名使用者

5. 2 8086/8088 中斷

系統 一、中斷分類及中斷型別碼

中斷源 :引起中斷的原因或發出中斷請求的裝置稱為中斷源。

• 中斷的分類

共分為兩類:硬體中斷和軟體中斷

①硬體中斷 :即通過外部的硬體產生的中斷,如印表機、鍵盤等,有時也稱為外部中斷。硬體中斷又可分為兩類:可遮蔽中斷和不可遮蔽中斷。

不可遮蔽中斷 :由 nmi 引腳引入,它不受中斷允許標誌的影響,每個系統中僅允許有乙個,都是用來處理緊急情況的,如掉電處理。這種中斷一旦發生,系統會立即響應;

可遮蔽中斷 :由 intr 引腳引入,它受中斷允許標誌的影響,也就是說,只有當 if = 1 時,可遮蔽中斷才能進入,反之則不允許進入,可遮蔽中斷可有多個,一般是通過優先順序排隊,從多個中斷源中選出乙個進行處理。

②軟體中斷 (內部中斷):即根據某條指令或者對標誌暫存器中某個標誌的設定而產生,它與硬體電路無關,常見的如除數為 0 ,或用 int n 指令產生。

溢位中斷由 int0 指令引起

斷點中斷由 int3 指令引起

單步由標誌 tf 引起 ↘不對應指令

除 0 由計算結果引起 ↙不對應指令

• 中斷型別碼:

8086/8088 為每個中斷源分配了乙個中斷型別碼,其取值範圍為 0 ~ 255 ,即可處理 56 種中斷。其中包括軟體中斷,系統占用的中斷以及開放給使用者使用的中斷。

二、中斷向量和中斷向量表

系統處理中斷的方法很多,處理中斷的步驟中最主要的一步就是如何根據不同的中斷源進入相應的中斷服務子程式,目前用的最多的就是向量式中斷。

中斷向量 :把各個中斷服務子程式的入口都稱為乙個中斷向量;

中斷向量表 :將這些中斷向量按一定的規律排列成乙個表,就是所謂的中斷向量表,當中斷源發出中斷請求時,即可查詢該錶,找出其中斷向量,就可轉入相應的中斷服務子程式。

8086/8088 中斷系統中的中斷向量表是位於 0 段的 0 ~ 3fffh 的存貯區內,每個中斷向量佔四個單元,其中前兩個單元存放中斷處理子程式的入口位址的偏移量( ip ),低位在前,高位在後;後兩個單元存放中斷處理子程式入口位址的段位址( cs ),也是低位在前,高位在後,整個中斷向量的排列是按中斷型別號進行的。見 p 圖 5-14 。

圖示給出了中斷型別碼與中斷向量所在位置之間的對應關係。其中 00h ~ 04h 為專用中斷, 05h ~ 3fh 為系統保留中斷,使用者一般是不能對它們定義的(這裡面有一些為固定的用途,如 int 21h 即為 ms - dos 圖 5-14

的系統呼叫), 40 ~ ff 為使用者定義的中斷。

00h ~ 04h ――系統專用

10h ~ 1fh ―― bios 用

40h ~ ffh ――使用者用

08h ~ 0fh ――硬體中斷

20h ~ 3fh ―― dos 用

中斷型別號* 4 即可計算某個中斷型別的中斷向量在整個中斷向量表中的位置。如型別號為 20h ,則中斷向量的存放位置為 20h * 4 = 80h ,(設中斷服務子程式的入口位址為 4030 : 2010 ,則在 0000 :

0080h ~ 0000 : 0083h 中就應順序放入 10h 、 20h 、 30h 、 40h 。當系統響應 20h 號中斷時,會自動查詢中斷向量,找出對應的中斷向量裝入 cs 、 ip ,即轉入該中斷服務子程式。

三、中斷響應過程與時序

8086/8088 對軟體中斷和硬體中斷響應的過程是不同的,這是由於軟體中斷和硬體中斷所產生的原因不同,下面主要討論硬體中斷的情況。

• 硬體中斷的響應過程

硬體中斷指的是由 nmi 引腳進入的非遮蔽中斷或由 intr 引腳進入的可遮蔽中斷。下面以可遮蔽中斷為例。

cpu 在 intr 引腳上接到乙個中斷請求訊號,如果此時 if = 1 , cpu 就會在當前指令執行完以後開始響應外部的中斷請求,這時, cpu 在 引腳連續發兩個負脈衝,外設在接到第二個負脈衝以後,在資料線上傳送中斷型別碼,接到這個中斷型別碼後, cpu 做如下動作:

①將中斷型別碼放入暫存器儲存;

②將標誌暫存器內容壓入堆疊,以保護中斷時的狀態;

③將 if 和 tf 標誌清 0 ,目的是防止在中斷響應的同時又來別的中斷,而將 tf 清 0 是為了防止 cpu 以單步方式執行中斷處理子程式。這時要特別提醒,因為 cpu 在中斷響應時自動關閉了 if 標誌,因此使用者如要進行中斷巢狀時,必須在自己的中斷處理子程式中用開中斷指令來重新設定 if ;

④保護斷點,斷點指的是在響應中斷時,主程式當前指令下面的一條指令的位址。因此保護斷點的動作就是將當前的 ip 和 cs 的內容入棧,保護斷點是為了以後正確地返回主程式;

⑤根據取到的中斷型別碼,在中斷向量表中找出相應的中斷向量,將其裝入 ip 和 cs ,即呆自動轉向中斷服務子程式。

對 nmi 進入的中斷請求,由於其型別碼固定為 2 ,因此 cpu 不用從外設讀取型別碼,也不需計算中斷向量表的位址,只要將中斷向量表中 0000 : 0008h ~ 0000 : 000bh 單元內容分別裝入 ip 和 cs 即可。

圖 5-15 給出了 8086/8088 中斷響應過程的流程圖,對這個圖我們做幾點說明:

① 8086/8088 除軟體中斷外,內部「非遮蔽中斷」、「可遮蔽中斷」均設立有優先順序,其中內中(除單步外)――即 0 、 1 、 3 、 4 號中斷的優先順序高於非遮蔽中斷,非遮蔽中斷高於可遮蔽中斷,單步中斷優先順序最低;

②只有在可遮蔽中斷的情況下才判 if = 1 ?,才取中斷型別碼,其餘的沒有這個動作。

③關於單步中斷,它是每執行一條指令中斷一次,顯示出當時各暫存器的內容,供使用者參考,當進入單步中斷響應時, cpu 自動清除了 tf ,在中斷返回後,由於恢復了響應時的標誌暫存器的值,因此 tf = 1 ,執行完一條指令後又進入單步中斷,直到程式將 tf 改為 0 為止。

④關於中斷的巢狀, nmi 總是可以響應的,若在中斷處理子程式中設立了開中斷指令, intr 的請求也能響應。

⑤彈出 ip 、 cs 、標誌,返回斷點的動作由 iret 指令完成。

⑥有些情況下,即使條件滿足, cpu 也不能馬上響應中斷,必須執行完下一條指令(而不是當前指令)才行。

• 正好執行 lock 指令;

• 執行往 ss 暫存器賦值的傳送指令,因為一般要求連續用兩條指令對 ss 和 sp 暫存器賦值,以保證堆疊指標的正確性。

⑦當遇到等待指令或串操作指令時,允許在指令執行的過程中進入中斷。這時需注意在中斷處理子程式中保護現場,以保證中斷返回後能繼續正確地執行這些指令。

為什麼要使用外部中斷外部中斷是幹嘛的為什麼要設定IT1和IT0為什麼要把P1賦值為0f

這堆問題讓我很尷尬。一個一個來吧 為什麼要使用外部中斷?這個問題可以和第二個一起回答。首先,你要知道什麼是中斷。中斷顧名思義,就是當達到某種條件或遇到某個事件時,微控制器立刻停下當前工作,馬上去處理這個條件,或解決事件,當處理完之後,又回到事件前工作狀態。外部中斷,就是當微控制器某個管腳的電平觸發設...

關於微控制器外部中斷的問題,求教高手。

從你的波形看,需要放大是肯定的,需不需要整形,要靠你動手測一下,微控制器輸入大於等於2v屬於高電平,小於等於屬於低電平,也就是說,電壓波動要在這個範圍,就可以不要整形了,當然從學習角度講,你可以嘗試對他經行整形,可以使用555定時器搭建乙個施密特觸發器,將你剛才那個波動的波形變成標準的方波!太低了,...

關於51微控制器的中斷問題,51微控制器外部中斷0的問題

優先中斷,就是在執行乙個中斷的時候,又來了乙個中斷 如果新來的中斷,其優先順序高於正在執行的中斷,那麼就會暫停現在的中斷而去執行新來的中斷,等這個新中斷執行完之後再會回去繼續執行剛才那個沒執行完也就是那個被打斷的中斷 如果新來的中斷,其優先順序不如正在執行的中斷的優先順序高,那麼程式會繼續執行這個中...