问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于51单片机中的CALL与JMP指令

发布网友 发布时间:2022-04-25 14:44

我来回答

2个回答

热心网友 时间:2023-10-09 17:29

CALL 子程序调用指令:

CALL 是调用,调用的程序跑完了,通过RET返回调用的后一句,是要压栈的。

JMP 是无条件跳转,不会压栈。

在使用JMP 或者 CALL进行程序跳转时

如果是仅仅局限在当前页的范围内,则不用修改(A11、A10),直接将目标地址赋值给A9~A0,【对于JMP指令,这样就行了;对于CALL指令还要将要执行的下一条指令PC+1入栈,以便CALL执行完毕之后,程序正确返回】如果需要跳转到别的页中,则需要首先通过设置R3的PS0、PS1进而载入到PC的A11 A10
如果使用指令直接修改的PC(R2)的值,(如:MOV  R2 A 或者 ADD R2 A 或者 BC R2,0)则PC低8位以上的位会被清零,所以之后产生的 跳转会被*在也页面的256地址。

堆栈
EM78X有五级堆栈,遵循后入先出的原则实现程序多至五级嵌套调用.通常堆栈使用如下:
当CALL和中断响应时PC+1压栈;
当子程序或中断返回,执行RET、RETL(带参数返回)、RETI(中断返回),将栈顶值(栈1)弹回程序计数器PC、同时将堆栈2的值拷
贝到堆栈1,堆栈3的值拷贝到堆栈2,以此类推。
要注意的是RET、RETL、RETI指令并没有改变R3中的PS0~PS1位便返回到原来调用程序的页面,所以当从一次跨页的子程序
调用返回时,一定要用指令恢复R3中原先的PS0、PS1值。

热心网友 时间:2023-10-09 17:30

可能编译器会根据偏移量自动用LCALL或者ACALL代替CALL指令,JMP 标号也类似,你可以看看反汇编的结果,对比一下
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女方早婚早育要离婚未满月孩子该怎么才能判给 家庭暴力,孩子未满月,孩子母亲要求离婚 孩子未满月是否可以离婚 孩子未满月可不可以离婚 新生儿未满月是否可离婚 固原斜视眼有哪些表现? 如何看待儿童斜视问题?固原 固原斜视儿童有必要做手术吗 HOJOJODO皇家金盾S1智能电子锁-详细介绍 皇家金盾智能锁怎么改密码 MCS-51单片机在执行短调用指令(ACALL)时,在调用操作之前为什么PC要先加2? 单片机ACALL XED什么意思 MCS-51系列单片机,长调用LCALL和短调用ACALL什么情况下使用 acall指令的首字母是哪个单词 单片机中的main 是什么意思,还有acall和lcall分别是什么意思? 广告公司所说的A-CALL 是什么意思? 读音类似于“A-CALL”。。。但是不知道他们说的是什么意思。 汇编程序设计中 ACALL与LCALL有什么不同啊 汇编中ACALL是什么意思啊 单片机汇编指令 ACALL 怎么用? 形容龙吟的成语 龙吟注册过商标吗?还有哪些分类可以注册? 龙吟延时活力液使用方法 逆水寒龙吟有几个流派-龙吟流派详解 贵州山里曾经有“龙吟”的声音,世上真有龙的存在吗? 主流intel处理器详细介绍(核心,英文名,中文名,参数,等等) 龙吟的声音到底是什么声音? 龙吟料理是什么意思? 请问“龙吟”是什么? 龙吟的词语释义 贵州出现的“龙吟”在科学上有什么解释,真的有龙吗? 单片机汇编语言中ACALL D20MS是什么意思? 单片机散转程序中ACALL和SJMP的键号必须乘以4才能得到正确的散转偏移量,为什么要乘以4?? 执行ACALL后SP加几? ACALL adr11指令的转移范围 谁有MCS51系列单片机中调用指令(LCALL和ACALL)和RETI指令在程序中的实际应用例子 已知=40h,执行0200h地址指令acall 0780h后,=多少 “乘法”用英语怎么说 ”乘法”用英语怎么说 乘法的英文怎么说? 乘法用英语怎么说? 乘法的英文单词??? “乘以”用英语怎么说 EXCEL表格中乘法的英文符号是? 乘法的函数是哪个英文 英语的加减乘除法怎么说(名词) 乘法口诀用英语怎么翻译 英语 乘法怎么表示? 建设银行网上银行怎么转账给支付宝? 建行支付宝银行卡怎么用 月子里炖汤放什么通草