中斷調用和子程序的調用的異同


1、兩過程定義與作用

子程序是微機基本程序結構中的1種,基本程序結構包括順序(簡單)、分支(判斷)、循環、子程序和查表等5種。

子程序是一組可以公用的指令序列,只要給出子程序的入口地址就能從主程序轉入子程序。子程序在功能上具有相對的獨立性,
在執行主程序的過程中往往被多次調用,甚至被不同的程序所調用。一般微機首先執行主程序,碰到調用指令就轉去執行子程序,子
程序執行完后,返回指令就返回主程序斷點(即調用指令的下一條指令),繼續執行沒有處理完的主程序,這一過程叫做(主程序)
調用子程序過程。

子程序結構可簡化程序,防止重復書寫錯誤,並可節省內存空間。計算機中經常把常用的各種通用的程序段編成子程序,提供給用戶
使用。用戶在自己編寫的程序中,只要會調用這些子程序,就可大大簡化用戶編程的困難。

中斷是計算機中央處理單元CPU與外設I/O交換數據的一種方式,除此方式外,還有無條件、條件(查詢)、存貯器直接存取DMA
和I/O通道等四種方式。由於無條件不可靠,條件效率低,DMA和I/O通道兩方式硬件復雜,而中斷方式CPU效率高,因此一般大多采用
中斷方式。中斷概念是當計算機正在執行某一(主)程序時,收到一中斷請求,如果中斷響應條件成立,計算機就把正在執行的程序暫停
一下,去響應處理這一請求,執行中斷服務程序,處理完服務程序后,中斷返回指令使計算機返回原來還沒有執行完的程序斷點處繼續執
行,這一過程稱為中斷過程。有了中斷,計算機才能具有並行處理,實時處理和故障處理等重要功能。

2、兩過程的聯系與區別

2.1聯系

中斷與調用子程序兩過程屬於完全不同的概念,但它們也有不少相似之處。兩者都需要保護斷點(即下一條指令地址)、跳至子程序
或中斷服務程序、保護現場、子程序或中斷處理、恢復現場、恢復斷點(即返回主程序)。兩者都可實現嵌套,即正在執行的子程序再調
另一子程序或正在處理的中斷程序又被另一新中斷請求所中斷,嵌套可為多級。

正是由於這些表面上的相似處,很容易使學生把兩者混淆起來,特別是把中斷也看為子程序,這就大錯特錯了。

2.2區別

中斷過程與調用子程序過程相似點是表面的,從本質上講兩者是完全不一樣的。

兩者的根本區別主要表現在服務時間與服務對象不一樣上。首先,調用子程序過程發生的時間是已知和固定的,即在主程序中的調用
指令(CALL)執行時發生主程序調用子程序,調用指令所在位置是已知和固定的。而中斷過程發生的時間一般的隨機的,CPU在執行某一
主程序時收到中斷源提出的中斷申請時,就發生中斷過程,而中斷申請一般由硬件電路產生,申請提出時間是隨機的(軟中斷發生時間是固
定的),也可以說,調用子程序是程序設計者事先安排的,而執行中斷服務程序是由系統工作環境隨機決定的;其次,子程序完全為主程序
服務的,兩者屬於主從關系,主程序需要子程序時就去調用子程序,並把調用結果帶回主程序繼續執行。而中斷服務程序與主程序兩者一般
是無關的,不存在誰為誰服務的問題,兩者是平行關系;第三,主程序調用子程序過程完全屬於軟件處理過程,不需要專門的硬件電路,而
中斷處理系統是一個軟、硬件結合系統,需要專門的硬件電路才能完全中斷處理的過程;第四,子程序嵌套可實現若干級,嵌套的最多級數
由計算機內存開辟的堆棧大小限制,而中斷嵌套級數主要由中斷優先級數來決定,一般優先級數不會很大。


免責聲明!

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



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