彙編語的中斷向量號表,彙編語的中斷向量號表

2023-02-04 01:10:42 字數 6734 閱讀 7628

1樓:匿名使用者

中斷向量表,就是一堆地址,對於ibm pc來說,按照中斷號數,從0開始,從小到大,排列在以 0 開始的記憶體地址上:

執行debug,輸入顯示資料命令 d 0:0 ,可得到系統基本硬體中斷向量,如圖:

根據上面的顯示,可得到如下中斷向量

0000:0000    00a7:1068     int 00h —「0」作除數

0000:0004    0070:018b     int 01h —單步中斷

0000:0008    038f:0016     int 02h —非遮蔽中斷(nmi)

0000:000c    0070:018b     int 03h —斷點中斷

0000:0010    0070:018b     int 04h —算術溢位錯誤

0000:0014    020a:06b9     int 05h —列印螢幕和bound越界

0000:0018    020a:0740     int 06h —非法指令錯誤

0000:001c    020a:03ff     int 07h —處理器擴充套件無效

0000:0020    020a:0746     int 08h —時鐘中斷

0000:0024    020a:040a     int 09h —鍵盤輸入

......

......

2樓:做而論道

中斷向量表就是從 0000:0000h 開始的 256 位元組。

3樓:匿名使用者

指的是相應中斷髮生時,微控制器進入的程式地址。

組合語言中斷向量設定的問題

4樓:做而論道

在 0000:0000 開始,稱為中斷向量表。

佔用 1024 位元組,共存放了 256 箇中斷向量 00~ffh。

每個向量佔用 4 個位元組。

7ch*4,即為 7ch 向量的偏移地址。

彙編的中斷向量表:mov ah,06h mov dl,0ffh int 21h,知道的大俠指點一下!

5樓:匿名使用者

ah=06h:直接控制檯io; 入口引數:dl=0ffh 表示輸入;出口引數:若有輸入,al=輸入字元,否則al=0

6樓:匿名使用者

功能: 直接控制檯 i/o

呼叫引數: dl=ff( 輸入 )

dl= 字元 ( 輸出 )

返回引數:al= 輸入字元

8086組合語言與介面設計課程中,求8086中斷向量表及其每個中斷向量作用及如何呼叫

7樓:匿名使用者

8088/8086中斷向量表的作用是什麼?

【答】中斷向量是中斷服務程式的入口地址。將所有中斷向量集中放在一起,形成中斷向量表。8086系統有256個型別的中斷源。

每個型別對應一箇中斷向量,一箇中斷向量由四個位元組組成:2個高地址位元組:存放中斷服務程式的**段的段值;2個低地址位元組:

存放中斷服務程式的偏移地址。中斷向量表放在記憶體的地段地址0單元開始的單元:00000h~03fffh。

8.2 什麼叫中斷向量?它放在**?對應於1ch的中斷向量在**?如1ch中斷程式從5110h:2030h開始,則中斷向量應怎樣存放?

【答】中斷向量是中斷處理子程式的入口地址,它放在中斷向量表中,由1ch*4=70h知中斷向量存放在0000:0070處。由於中斷處理入口地址為5110:

2030所以0070h,0071h,0072h,0073h這四個單元的值分別為30h,20h,10h,51h。

8.4 敘述可遮蔽中斷的響應過程,一個可遮蔽中斷或者非遮蔽中斷響應後,堆疊頂部四個單元中是什麼內容?

【答】當cpu在intr引腳上接受一個高電平的中斷請求訊號並且當前的中斷允許標誌為1,cpu就會在當前指令執行完後開始響應外部的中斷請求,具體如下:

1、 從資料匯流排上讀取外設送來的中斷型別碼,將其存入內部暫存器中;

2、 將標誌暫存器的值推入堆疊;

3、 將標誌暫存器中if和tf清零;

4、 將斷點保護到堆疊中;

5、 根據中斷型別獲取中斷向量轉入中斷處理子程式;

6、 處理完後恢復現場。

響應後堆疊的頂部4個單元是ip,cs。

8.5 從8086/8088的中斷向量表中可以看到,如果一個使用者想定義某個中斷,應該選擇在什麼範圍?

【答】從8086/8088的中斷向量表中可以看出,由於系統佔用了部分中斷型別碼,主要包括:

(1)        專用中斷:0~4,佔中斷向量表000~013h。

(2)        系統備用中斷:5~31h

(3)        使用者使用中斷:32h~0ffh

如果一個使用者想定義一箇中斷,可以選擇中斷型別碼32h-ffh,其中斷向量在中斷向量表的0c8h-01bfh。

我都忘得差不多了。。複製貼上的。。見諒!

希望對你有幫助

8樓:匿名使用者

中斷向量是中斷服務程式的入口地址。將所有中斷向量集中放在一起,形成中斷向量表。8086系統有256個型別的中斷源。

每個型別對應一箇中斷向量,一箇中斷向量由四個位元組組成:2個高地址位元組:存放中斷服務程式的**段的段值;2個低地址位元組:

存放中斷服務程式的偏移地址。中斷向量表放在記憶體的地段地址0單元開始的單元:00000h~03fffh。

中斷向量是中斷處理子程式的入口地址,它放在中斷向量表中,由1ch*4=70h知中斷向量存放在0000:0070處。由於中斷處理入口地址為5110:

2030所以0070h,0071h,0072h,0073h這四個單元的值分別為30h,20h,10h,51h。

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

9樓:匿名使用者

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

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

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

此表即中斷向量表.

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

10樓:匿名使用者

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

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

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

這種形式的規模的中斷。

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

11樓:匿名使用者

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 暫存器賦值,以保證堆疊指標的正確性。

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

組合語言關於assume的用法,彙編中assume的作用?

assume 段暫存器的說明語句 在組合語言源程式中可以定義多個段,每個段都要與一個段暫存器建立一種對應關係。建立這種對應關係的說明語句格式如下 assume 段暫存器名 段名 段暫存器名 段名,其中 段暫存器是cs ds es ss fs和gs,段名是在段定義語句說明時的段名。在一條assume語...

彙編中的TEST指令

test執行的就是and的指令,只不過不會儲存and執行的結果,而是根據and的結果設定flags暫存器的各種標誌 test al,08h 就是測試al的第4位是不是1,8h 0000 1000 同理test ax,0200h 測試ax的第10位,0200h 0000 0010 0000 0000 ...

我想問個關於中斷向量表的問題,8086的中斷向量表中存放的是中斷向量問題

1為啥要搞個dos中斷向量表,為什麼bai不是其他系統的 du?因為你的程zhi序是執行在 daodos環境下,早起回的8086cpu是執行dos的,所以你只有呼叫dos中斷才能實現功能。dos就是一個作業系統,它是給你的程式服務的。2硬中斷向量表是rom實體地址,比如記憶體的0x0000 0x00...