1樓:苦豆受昆鵬
子程式返回指令完整的功能是改變程式**子指令)和返回指令(返主指令)。
子程式呼叫指令用於實現程式與程式之間的轉移,與轉移指令不同**移指令用於實現同一程式內的轉移)。子程式呼叫指令還可以進行巢狀呼叫,即可呼叫別的子程式,還可以實現遞迴呼叫,即直接或間接自己呼叫自己。
擴充套件資料:在子程式的呼叫與返回過程中,子程式的入口位址是指子程式第一條指令的位址。用於呼叫子程式、控制程式的執行從主程公升困灶序轉向子程式的指令稱為專注指令(子程式呼叫指令、過程呼叫指令)。
為了正確呼叫子程式,必須在轉子指令中給出子程式的入口位址。
主程式中轉子指令的下一條指令的位址稱為斷點,斷點是子程式返回主程式的返回位址,從子程式返回主程式吵扮的指令稱為返回指令。為了在執行尺橋返回指令時能夠正確地返回主程式,轉子指令應具有保護斷點的功能。
百科-子程式呼叫指令。
2樓:宿唱校流婉
reti是中斷返回指令這條指令的功能和ret指令相似,2條指令的不同之處是耐沒:本指令清除了中斷者畝喚響應時,被置1的mcs-51內部不可定址的「優先順序生效」觸發器清零。
每個子程式只有乙個入口。在執行期間,呼叫程式單位被停止執行,即任意時刻只有乙個子程式在執行子程式執行完畢後,總是將控制返回給呼叫程式。
擴充套件資料:子程式的應用。
1、零件上若干處具有相同的輪廓形狀,在這種情況下,只要編寫乙個加工該輪廓形狀的子程式,然後用主程式多次呼叫該子程式的方法完成對工件的加工。
2、加工中反覆出現具有相同軌跡的走刀路線,如果相同軌跡的走刀路線出現在某個加工區域或在這個區首凱域的各個層面上,採用子程式編寫加工程式比較方便,在程式中常用增量值確定切入深度。
子程式的呼叫和返回指令
3樓:科技鑑賞官
子程式的呼叫和返回是一對互逆操作,也是一種特殊的轉移操作。
一方面,之所以說是轉移,是因為當呼叫乙個子程式時,程式的執行順序被改變,cpu將轉而信哪執行滑念碼子程式中的高亮指令序列,在這方面,呼叫子程式的操作含有轉移指令的功能,子程式的返回指令的轉移特性與此類似;
另一方面,轉移指令是一種「一去不復返」的操作,而當子程式完後,還要求cpu能轉而執行呼叫指令之下的指令,它是一種「有去有回」的操作。
為了滿足子程式呼叫和返回操作的特殊性,在指令系統中設定了相應的特定指令。
呼叫指令(call)
呼叫子程式指令的格式如下:
call 子程式名/reg/mem
子程式的呼叫指令分為近(near)呼叫和遠(far)呼叫。如果被呼叫子程式的屬性是近的,那麼,call指令將產生乙個近呼叫,它把該指令之後位址的偏移量(用乙個字來表示的)壓棧,把被呼叫子程式入口位址的偏移量送給指令指標暫存器ip即可實現執行程式的轉移。近呼叫指令的堆疊操作.
如果被呼叫子程式的屬性是遠的,那麼,call指令將產生乙個遠呼叫。這時,呼叫指令不僅要把該指令之後位址的偏移量壓進棧,而且也要把段暫存器cs的值壓進棧。在此之後,再把被呼叫子程式入口位址的偏移量和段值分別送給ip和cs,這樣完成了子程式的遠呼叫操作。
遠呼叫指令的堆疊操。
子程式呼叫指令本身的執行不影響任何標誌位,但子程式體中指令的執行會改變標誌位,所以,如果希望子程式的執行不能改變呼叫指令前後的標誌位,那麼,就要在子程式的開始處保護標誌位,在子程式的返回前恢復標誌位。
例如: call display;display是子程式名。
call bx;bx的內容是子程式的偏移量。
call word1;word1是記憶體字變數,其值是子程式的偏移量。
call dword1;dword1是雙字變數,其值是子程式的偏移量和段值。
call word ptr [bx];bx所指記憶體字單元的值是子程式的偏移量。
call dword ptr [bx];bx所指記憶體雙字單元的值是子程式的偏移量和段值。
子程式呼叫和返回指令有哪四條
4樓:
數控子程式使用具體介紹:1、在主程式中,呼叫子程埋亂序的指令是乙個程式段,其格式隨具體的數控系統而定,fanuc系統子程式呼叫格式為m98p--l--式中m98--子程式呼叫字;p--子程式列號;l--子程式呼叫次數。可以看出,子程式由程式呼叫字、子程式橋液拆號和呼叫次陣列成2、子程式的返回:
子程式是如何呼叫和返回的
5樓:
您好,上述問題將由我為您進行解答。子程式是如何呼叫和返回的:所謂子程式是能夠完成一慶握定功能的程式模組,其自身不能自動執行,而只能靠上一級程式呼叫執行,在結構化程式設計中,子程式是實現整個程式功能的基礎;子程式的執行至少包含呼叫及返回兩個步驟譽賣慶。
通過執行子程式呼叫指令,cpu會自動地儲存當前程式斷點(程式被打斷的地方),然後轉向執行被呼叫的子程式;當子配讓程式執行完畢後,通過執行子程式返回指令使cpu返回斷點處繼續執行指令。希望能幫助的到您!
什麼的子程式只執行不返回
void 型別的,過程不會返回 我仔細看了一下所有人的回答,有根本沒看懂樓主問題答非所問的,也有回答的差不離的,我來切一下重點好了。樓主這所有問題其實歸根結底就是乙個問題,堆疊和sp 堆疊指標 的問題 call指令執行時,就是先把當前程式指標壓入堆疊並使sp加1,然後開始執行call指令呼叫的子程式...
微控制器裡中斷返回和子程式返回的區別是什麼
中斷服務子程式入口位址相對某一中 斷是固定的,呼叫子程式的偏移位址是隨機的 專,基本過程差不多,返回時屬,中斷服務子程式用的是reti呼叫子程式是ret。呼叫中斷服務子程式和呼叫子程式都會把當前偏移位址的下一位址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返回,並會清除內部相應...
FORTRAN的子程式能返回複數嗎
當然沒問題 給你個例子看專屬看 在fortran語言中描述乙個複數,但是實部是變數,怎麼寫 za cmplx zr zi 這樣就可以了 fortran怎樣輸入複數?比如3 2i program www fcode cn implicit none complex c read c write c e...