導航:首頁 > 方法技巧 > 如何進入中斷服務程序入口的方法

如何進入中斷服務程序入口的方法

發布時間:2022-05-12 05:40:46

1. 8088獲得中斷向量後,如何獲取中斷服務程序入口

還用這么老的?!早沒有了吧
我記得中斷程序入口在0地址開始處按順序排列,中斷號乘以4就是它地址存儲處

2. 只知道中斷類型 怎麼就能求出中斷服務入口地址 中斷類型乘4不是中斷向量的地址嗎又不是中斷向量///

8086系統在存儲器的最低1KB區域(00000H~003FFH)建立一個中斷向量表,存放256個中斷類型的中斷向量。

這1024個單元被分成256組,每組包括4個位元組單元,存儲一個中斷向量的段基址和段內偏移地址,高2個位元組用於存放段基址,低兩個位元組用於存放段內偏移地址。

在執行某一條INT n指令時,CPU首先對斷點和現場進行保護,然後將中斷指令中的中斷類型號n乘以4,得到一個地址,這個地址就是n號中斷服務子程序的入口地址在中斷向量表中的存放地址。

按照這個地址,取出連續4個位元組單元的內容,即n號中斷服務子程序入口的段基址(2個位元組)和偏移地址(2個位元組),送入CS和IP,以實現n號中斷調用。

(2)如何進入中斷服務程序入口的方法擴展閱讀:

8086/8088有20條地址線,它的直接定址能力為1MB。也就是在一個系統中可以有多達1MB的存儲器,地址從00000H—FFFFFH。給定任意一個20位物理地址,就可以從中取出需要的指令和操作數。但是8086/8088CPU只能進行16位運算。

與地址有關的寄存器SP、IP、BP、SI、DI也都是16位的,所以對地址的運算也只能是16位的。對於8086/8088來說,無論採用哪種定址方式,尋找操作數的范圍最大是2^16。

系統先將1MB存儲器以64KB為范圍分成若干段。在定址一個具體物理地址時,由一個基本地址再加上由SP或IP等可由CPU處理的16位偏移量來形成20位物理地址。

3. 在PC機中,CPU響應中斷後是如何找到中斷服務子程序入口地址的

cpu在響應中斷前會保護主程序當前指令下面的一條指令的地址。就是將當前的IP和CS的內容入堆棧。cpu響應中斷之後,將指令地址從堆棧中取出即可找到中斷服務子程序入口地址。
CPU響應中斷做如下動作:
①將中斷類型碼放入暫存器保存;
②將標志寄存器內容壓入堆棧,以保護中斷時的狀態;
③將IF和TF標志清0,目的是防止在中斷響應的同時又來別的中斷,而將TF清0是為了防止CPU以單步方式執行中斷處理子程序。這時要特別提醒,因為CPU在中斷響應時自動關閉了IF標志,因此用戶如要進行中斷嵌套時,必須在自己的中斷處理子程序中用開中斷指令來重新設置IF;
④保護斷點,斷點指的是在響應中斷時,主程序當前指令下面的一條指令的地址。因此保護斷點的動作就是將當前的IP和CS的內容入棧,保護斷點是為了以後正確地返回主程序;
⑤根據取到的中斷類型碼,在中斷向量表中找出相應的中斷向量,將其裝入IP和CS,即呆自動轉向中斷服務子程序。

4. 如何將中斷服務程序的入口地址寫入中斷向量表

有兩種基本方法:一是直接寫入法,使用指令將中斷服務程序入口地址的IP寫入n×4的RAM位置,中斷服務程序入口的CS寫入n×4+2的位置;二是DOS功能調用,25H用來寫中斷向量表,35H讀中斷向量表。

5. 單片機80196KC CPU怎麼找到中斷服務程序的入口地址

內存中有固定的一段內存,存放中斷向量。程序按照優先順序將相應服務程序入口地址依次存放在此。中斷發生後,CPU自動保存現場,到相應位置取出服務程序的入口地址,並執行之。執行完,返回中斷處,繼續運行。

6. 什麼是中斷服務程序的入口

中斷服務程序,處理器處理「急件」,可理解為是一種服務,是通過執行事先編好的某個特定的程序來完成的,這種處理「急件」的程序被稱為——中斷服務程序。

比如有3個倉庫,倉庫號分別是111、222、333,對應的鑰匙是111、222、333。

在111倉庫有大米、222倉庫儲存的是高級跑車、333倉庫儲存的是美酒。

某一天,

  1. 你正在與朋友逛街(正在執行的程序);

  2. 這時你有錢的老爸讓你去222倉庫(中斷的入口)把車開到他面前(中斷命令);

  3. 你要聽你爸爸的話(執行中斷);

  4. 找到倉庫222(中斷入口),其他的入口111、333都沒有跑車;

  5. 把車開到你爸爸面前,接著和朋友逛街;

7. ARM中的異常中斷是如何實現進入中斷程序的,比如如何進入...

ARM中的異常中斷是如何實現進入中斷程序的,比如如何進入...
swi(0x00) void SwiHandle1(int Handle);其實沒有函數體,執行這個語句後就自動把Handle的值賦給了R0,接著執行下面的代碼。__swi(0x00)是軟體中斷,0為軟中斷指令中的24位立即數,但是通過R0寄存器來傳遞參數具體的函數體,當然是要在swi的中斷處理程序中去找了可以在復位時的異常向量表裡面找到swi中斷服務程序的入口地址。
SWI 執行的流程是,先進入異常中斷向量表,然後跳到向量地址處,接著一小段匯編操作,把功能號讀入到一個寄存器中,然後 switch 判斷這個功能號是多少,接著跳轉到對應的終端服務程序,如果函數有參數,則根據ATPCS規則進行參數的傳遞;如只有一個參數,則用 R0 來傳遞,超過4個參數,超出的部分用堆棧來傳遞。
__swi是ADS編譯器的關鍵字,用它做前綴可以聲明一個軟中斷調用,格式為:
__swi(功能號) 返回值 名稱 (參數列表)
功能號:即軟中斷指令中的24位立即數,軟中斷號
名 稱:即調用軟中斷時用於描述軟中斷的函數名稱
參 數:軟中斷函數的參數,根據ATPCS規則,如果軟中斷函數有不超過4個參數時,通過R0~R3傳遞,超過4個參數時用堆棧來傳遞。
__swi(0x00) void SwiHandle1(int Handle)。其中0x00為軟中斷功能號(軟中斷號);軟中斷函數名稱為SwiHandle1;只有一個參數,則使用R0來傳遞;函數沒有返回值。緊接著這句代碼的是定義了4個宏,分別表示禁能IRQ函數、使能IRQ函數、禁能FIQ函數、使能IFQ函數,其實調用的軟中斷函數是一樣的,只是參數不同而已。例如在用戶程序中調用「IRQEnable( );」時,處理器會產生軟中斷。位於啟動代碼中的那些是軟中斷處理函數,當發生軟中斷時,PC被強制指向0x00000008,這個地址中存放的是軟中斷異常的處理函數的地址,所以程序會跳轉至標號「SoftwareInterrupt 」處執行。SoftwareInterrupt 函數的功能是判斷R0的值(R0的值為軟中斷函數傳遞過來的參數)是否小於4,如果小於4則跳轉至標號「SwiFunction」執行,如果不是則函數返回。SwiFunction函數是一個散轉函數,它的功能是根據R0的值跳轉至對應的函數處執行,即如果參數為1,則函數會跳轉至IRQEnable處執行,將IRQ中斷使能。

本文件SWI.s位於ARM Executable Image for LPC2294工程模板中,故不考慮SWI觸發前為Thumb態;SWI異常一旦觸發,內核硬體完成:
♂ 進入Supervisor模式;
♂ 拷貝CPSR至SPSR_svc
♂ 拷貝異常返回地址至LR_svc
♂ 將0x00000008裝入PC
因此,當觸發SWI軟中斷前內核處於Supervisor模式,SPSR_svc、LR_svc中的值將被破壞;
3、SWI指令編碼中自帶24bit數據作為軟中斷號(swi_num),因此可通過取SWI指令編碼獲取軟中斷號;LDR r0,[lr,#-4]就是這樣;
4、SWI_Exception_Function函數一般採用C編碼(也可匯編),採用C編碼可直接套用switch根據swi_nun軟中斷號切換,SWI_Exception_Function函數的編制是靈活的,比如可以為帶參或不帶參函數;
5、一個SWI調用允許帶1~4個字型參數和1~4個字型返回值,觸發SWI調用時四個參數依次保存在R0~R3中,返回值也......

8. 中斷向量表和中斷描述符表的功能是什麼如何利用它們獲得中斷服務程序的入口地址

中斷向量表是存放一系列中斷向量的表(好像有點廢話...不過確實是這樣)
中斷向量代表著中斷服務程序的入口地址
中斷描述符用最通俗的語言來講就是用來獲取中斷向量用的,為什麼要獲取中斷向量呢?就是要通過中斷向量知道中斷服務程序的入口地址.三者的關系應該明了了吧...
引用樓上的例子INT 21H 這里21H就是一個中斷描述符
21H*4 =84H 得到的就是中斷向量(就是這么規定的)
以84H為首地址(85H 86H 87H) 其中存放的就是中斷服務程序的地址
還是舉個例子吧
87H 33
86H 22
85H 11
84H 00
那麼中斷服務程序的入口地址就是 (CS:IP)3322:1100

9. CPU是如何根據中斷類型碼找到相應的中斷服務程序入口地址的

cpu在響應中斷前會保護主程序當前指令下面的一條指令的地址。就是將當前的IP和CS的內容入堆棧。cpu響應中斷之後,將指令地址從堆棧中取出即可找到中斷服務子程序入口地址。CPU響應中斷做如下動作: ①將中斷類型碼放入暫存器保存;

10. 8086cpu如何通過中斷碼尋找中斷服務程序入口的

系統是把所有的中斷向量集中起來,按中斷類型號從小到大的順序存放到存儲器的某一區域內,這個存放中斷向量的存儲區叫做中斷向量表,即中斷服務程序入口地址表。
至於這個中斷向量表的區域從哪裡開始,是由CPU的寄存器控制的。

閱讀全文

與如何進入中斷服務程序入口的方法相關的資料

熱點內容
直尺直線度測量方法 瀏覽:472
菜餅堆肥製作方法視頻 瀏覽:121
成果解決教學問題的方法如何寫 瀏覽:899
太陽能光電板安裝方法 瀏覽:445
城市人口增多的問題和解決方法 瀏覽:270
人物形象的方法技巧 瀏覽:425
真假海螺肉的鑒別方法 瀏覽:772
鬍子有點黃用什麼方法洗 瀏覽:246
安卓手機亮屏時間哪裡設置方法 瀏覽:358
激光筆的使用方法 瀏覽:625
架接果樹方法視頻 瀏覽:685
名師閱讀教學方法 瀏覽:759
長發快速剪發方法視頻 瀏覽:74
銅絲球連接方法 瀏覽:42
駁口金油使用方法 瀏覽:858
足背伸的鍛煉方法 瀏覽:794
牛舍風機安裝方法 瀏覽:393
道路綠地覆蓋率的計算方法 瀏覽:766
做木珠子最簡單的方法 瀏覽:396
燈光控制手機的使用方法 瀏覽:83