问问题描述
答精选答案

call指令 CALL(LCALL)指令执行时,进行两步操作: (1)将程序当前执行的位置IP压入堆栈中; (2)转移到调用的子程序。
(CALL近调用,LCALL远调用, CALL 寻址2K空间范围 LCALL 寻址64K空间范围) 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: djnz r6,d2; djnz r7,d1; ret ; end; 当执行LCALL时,把该语句的IP(或者说PC)压入堆栈,开始进入子程序DELAY,当执行到RET时,堆栈中的IP出栈,LCALL的继续执行下一条语句。
一般来说,执行一条CALL指令相当于执行一条PUSH指令加一条JMP指令
本文来自作者[najingsenlingongangaodeng]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/jingxuan/2732971.html
评论列表(4条)
我是公众科技网的签约作者“najingsenlingongangaodeng”!
希望本篇文章《汇编语言中的call是什么意思》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:call指令 CALL(LCALL)指令执行时,进行两步操作: (1)将程序当前执行的位置IP压入堆栈中; (2)转移到调用的子程序。(CALL近调用,LCALL远调用, CALL 寻址2K空间范围 LCALL 寻址64K空间范围) CALL与RET结合使用,当CALL调用的子程序运行到RET命令时,压入堆栈的IP弹出,跳出子程序,开始执行CALL的下一条语句。例: main: setb p1.0; lcall delay; clr p1.0; lcall delay; ajmp main; delay: