那么AJMP addr11 与LCALL addr11的区别在什么地方?
发布网友
发布时间:2022-07-19 12:14
我来回答
共2个回答
热心网友
时间:2023-10-16 01:02
区别如下:
单片机只有ACALL addr11,调用范围同AJMP,也是两KB(因为addr11就是2KB),它实现的功能是,首先PC=PC+2(因为ACALL指令占两个字节),由于是程序调用,所以需要将PC入栈保护起来,接下来就是SP=SP+1,PC(7~0)入栈,SP再加一,PC(15~8)入栈,最后实行与AJMP类似的功能,即PC高五位不变,低十一位等于addr11。
LCALL是长转移,无条件*,单片机中只有LCALL addr16,没有LCALL addr11,所以LCALL的作用就是将addr16直接赋给PC。
热心网友
时间:2023-10-16 01:02
单片机只有ACALL addr11,调用范围同AJMP,也是两KB(因为addr11就是2KB),它实现的功能是,首先PC=PC+2(因为ACALL指令占两个字节),由于是程序调用,所以需要将PC入栈保护起来,接下来就是SP=SP+1,PC(7~0)入栈,SP再加一,PC(15~8)入栈,最后实行与AJMP类似的功能,即PC高五位不变,低十一位等于addr11
LCALL是长转移,无条件*,单片机中只有LCALL addr16,没有LCALL addr11,所以LCALL的作用就是将addr16直接赋给PC