匯編語言之中斷學習


計算機經常會遇到異常,會產生中斷,發出中斷請求。中斷分為內中斷和外中斷。下面主要介紹的是內中斷。

  內中斷,cpu什么時候會發出中斷信號呢?一般有一下四種情況:

  ·除法指令

  ·單步執行

  ·int 0指令

  ·int n指令

  產生中斷信號的情況又被稱為中斷源。cpu接收到中斷信號以后,要根據中斷信號來確定中斷情況。所以,中斷信息里面應該包括中斷的來源以及中斷的情況。因此,CPU將定義一個變量來存儲辨別中斷信息,稱為中斷字節碼(8位變量)可以用中斷字節碼表示256種情況。

  每種中斷情況都對應一種中斷處理程序,但是CPU又如何確定相應中斷處理程序在內存中的地址呢?如何確定相應中斷處理程序的入口地址?so,中斷向量應運而生。中斷向量就是中斷處理程序的入口地址。不同的中斷情況對應不同的中斷處理程序,又對應不同的中斷向量,為了高效的處理中斷,我們又定義了中斷向量表,顧名思義,中斷向量表用來存儲中斷向量,就是中斷處理程序的入口地址。一條中斷向量有占用多少內存地址呢?中斷向量用來存儲中斷處理程序的入口地址,包括段地址和偏移地址,所以占用兩個字的存儲單元,高地址字段用來存儲段地址,低地址字段用來存儲偏移地址。

  CPU知道了相應中斷處理程序的入口地址后,計算機處理中斷,中斷過程。用中斷字節碼找到中斷向量,來設置CS和IP,這個過程由計算機硬件來完成,這個過程叫做中斷過程。 以8086CPU為例,在接收到中斷信息后,要執行的操作:

  1.(從中斷信息中)找到中斷字節碼

  2.標志寄存器的值入堆棧

  3.設置標志寄存器的第8位TF和第9位IF值為0
  4.CS 值入棧
  5.IP值入棧
  6.從內存地址為 終端類型碼4 和 中斷類型碼4+2的兩個字單元讀取中斷處理程序的入口地址,設置CS IP
  中斷處理程序
  由於cpu隨時都有可能檢測到中斷信息,也就是說cpu隨時都要執行中斷處理程序,所以,中斷處理程序必須一致存儲在內存某段空間中。
  中斷處理程序的步驟:
  1.保存用到的寄存器
  2.處理中斷
  3.恢復用到的寄存器
  4.用iret指令返回

  cpu執行完中斷處理程序以后,必須返回到原來的地址繼續執行后面的內容,所以,在執行中斷處理程序之前必須記錄下原來執行指令的地址,便於中斷處理完以后返回。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM