在程序的執行過程中,當需要執行子程序時,可以在主程序中發出子程序調用指令,而當子程序執行完畢后,給出子程序的入口地址,控制程序的執行序列從主程序轉入子程序;而子程序執行完畢后,可以利用返回指令返回主程序,使得程序重新返回主程序發出子程序調用指令的地方,繼續順序執行。在執行調用指令,通常采用堆棧來保存返回地址,即把下一條指令的地址壓入堆棧中保存,子程序執行完畢后,由返回指令壓入堆棧的返回地址從堆棧中彈出,返回調用程序。
在子程序的調用與返回過程中,子程序的入口地址是指子程序第一條指令的地址。用於調用子程序、控制程序的執行從主程序轉向子程序的指令稱為專注指令(子程序調用指令、過程調用指令)。為了正確調用子程序,必須在轉子指令中給出子程序的入口地址。主程序中轉子指令的下一條指令的地址稱為斷點,斷點是子程序返回主程序的返回地址,從子程序返回主程序的指令稱為返回指令。為了在執行返回指令時能夠正確地返回主程序,轉子指令應具有保護斷點的功能。執行轉子指令時保護斷點的方式有多種,常用的有:將斷點保存到子程序第一條指令的前一個字單元;將斷點保存到某一約定的寄存器中;將斷點壓入堆棧。轉子指令和返回指令通常都是無條件的,但也有帶條件的轉子指令和返回指令。條件轉子指令和條件返回指令所需要的條件與轉移指令的條件類似