call指令

計算機轉移到調用的子程序

call指令是計算機轉移到調用的子程序。

基本介紹


CALL(LCALL)指令執行時,進行兩步操作:
(1)將程序下一條指令的位置的IP壓入堆棧中;
(2)轉移到調用的子程序。
(CALL近調用,LCALL遠調用,
CALL定址2K空間範圍
LCALL定址64K空間範圍)先壓CS,再壓IP!
CALL與RET結合使用,當CALL調用的子程序運行到RET命令時,壓入堆棧的IP彈出,跳齣子程序,開始執行CALL的下一條語句。
例:
main:setb p1.0;
lcall delay;
clr p1.0;
lcall delay;
ajmp main;
delay:mov r7,#250;
d1:mov r6,#250;
d2:djnzr6,d2;
djnzr7,d1;
ret;
end;
當執行LCALL時,把該語句的IP(或者說PC)壓入堆棧,開始進入子程序DELAY,當執行到RET時,堆棧中的IP出棧,LCALL的繼續執行下一條語句。
一般來說,執行一條CALL指令相當於執行一條PUSH指令加一條JMP指令。
call指令是調用子程序,後面緊跟的應該是子程序名或者過程名。