1樓:
子程式入口就是一個地址,執行就是進入了子程式。這時候下一條指令要被記錄起來 以便正常返回。c
子程式呼叫與返回指令
2樓:愛笑的柯南推理
各類通用平臺,子程式呼叫的過程大致都相似。
子程式呼叫指令讀取到並解碼後,首先將當前程式的斷點地址儲存,不同硬體平臺儲存方式有所不同,有的是壓棧,有的是儲存進特定暫存器;然後將子程式的入口地址設定為當前程式地址,之後就會開始讀取並執行子程式了。
子程式結束後會通過指令返**用點,返回值會通過暫存器或堆疊給出,cpu取出原先儲存的斷點地址設定為當前程式指標,然後就繼續主程式的執行。
所以為了保證呼叫後的執行環境與呼叫前相同,子程式開始處通常要儲存相關暫存器環境,在子程式結束前將這些暫存器復原。
微控制器裡中斷返回和子程式返回的區別是什麼? 5
3樓:可以叫我表哥
中斷服務子程式入口地址相對某一中斷是固定的,呼叫子程式的偏移地址是隨機的,基本過程差不多,返回時,中斷服務子程式用的是reti 呼叫子程式是ret。
呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返回,並會清除內部相應的中斷狀態暫存器。
4樓:
基本沒有區別!都會在返回時恢復壓棧的pc指標並繼續執行程式。
中斷處理程式實際上也可以看做是一個普通的子程式,只是它的呼叫是預先設定的地址入口,並且它的呼叫時由中斷觸發的;而子程式是我們人為地呼叫的。
但是中斷子程式的返回有時要考慮對中斷的處理(如開關中斷允許、初始化資料-----比如計數器或者定時器的初始值處理等等)。
5樓:蔥要吃魚
中斷是微控制器的一個重要功能,中斷子程式專為執行中斷功能,它是在發生中斷後,自動執行的,不需要主程式呼叫;子程式要主程式呼叫才能執行。
6樓:匿名使用者
中斷返回後繼續執行斷點以後的程式,子程式返回其實是在編譯時把子程式插在主調程式之中,執行完子程式後順序執行後面的程式而已。
微機原理的一道習題! 中斷返回指令是 () ,該指令將堆疊中儲存的斷點彈出後依次
7樓:做而論道
中斷返回指令是 ( ret ),
該指令將堆疊中儲存的斷點彈出後依次裝入
( ip )暫存器和( cs )暫存器中,將堆疊中儲存的標誌裝入(標誌暫存器 f)中。
中斷服務子程式返回指令reti和普通子程式返回指令ret有什麼區別
8樓:匿名使用者
reti是中斷返回指令
這條指令的功能和ret指令相似,2條指令的不同之處是:本指令清除了中斷響應時,被置1的mcs-51內部不可定址的 「優先順序生效」觸發器清零。
微控制器組合語言指令中中斷返回指令ret和reti有什麼不同?
9樓:匿名使用者
reti 是中斷返回指令;
ret 是子程式返回指令;
reti比ret多一步清除中斷優先順序狀態位,讓同級別的中斷有機會得到響應。
中斷指令「reti」做為中斷跳出指令除了將堆疊中儲存著的地址取出,送回pc;使程式從主程式的中斷處繼續往下執行的作用外,還有將「優先順序生效」觸發器清零的功能。
10樓:做而論道
ret 是子程式返回指令。
reti 是中斷服務程式返回指令。
兩者,用途不同。
11樓:匿名使用者
ret是子程式返回指令,返回到呼叫該子程式處的下一條指令執行,返回的地址是從ret執行前的sp中最後兩個值。
reti是中斷服務程式返回指令,返回到進入中斷服務的斷點處執行,返回的地址是從reti執行前的sp中最後兩個值。
12樓:匿名使用者
ret是普通子程式的返回指令,而不能用reti,所以,ret不是中斷返回指令,就是子程式返回指令。
而reti是用在中斷子程式的返回指令,必須用這個,這才叫中為返回指令,而不能用ret,這就是區別。
13樓:匿名使用者
ret是子程式返回指令,將堆疊中的地址彈出,而reti是中斷返回指令,除了將地址彈出,還將標誌彈出
易語言如何能讓子程式返回整數,易語言如何能讓子程式返回一個整數?
在易語言中,子程式包括 事件處理子程式 都有六部分組成。一 子程式名,就是子程式的名稱,子程式名不可省略,而且在程式中是唯一的。二 返回值型別,可省略,就是呼叫該子程式是否返回資料,常用的型別有 整數型 如1,2,5等等,或整數型的變數,方法 返回 1 邏輯型 真 假,或邏輯型的變數,方法 返回 真...
子程式或函式未定義是什麼意思
子程式是指你程式裡面呼叫的程式,來看一下你的程式,command1 click 裡面 是子程式或者函式,可以發現你呼叫了一個vb的內建函式msg,你想用這個函式來輸出提示資訊,不錯。但是,想法很好,函式卻用錯了,你看一下msdn會發現根本沒有msg 近似的有msgbox 這個函式正是輸出內容的函式。...
matlab主程式和子程式怎麼寫到一塊
寫在同一個m檔案下就可以了,主函式寫在最開始例如 function main function submain1 function submain2 是這個意思麼 寫在一起,必須都是function,如果你的主程式是普通的m程式,不是function,而子程式是function,這兩個程式是不能寫在...