call指令

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指令是調用子程式,後面緊跟的應該是子程式名或者過程名。

相關詞條

相關搜尋

熱門詞條

聯絡我們