已知(SP)=66H,(PC)=25F0H,执行ACALL2900H后,堆栈指针SP堆栈中内容以及程序计数器PC中的内容是什么

2020-10-28 社会 132阅读
先来说一下 ACALL指令
ACALL addr11 addr11为11位地址,PC加2后的地址PUSH进堆栈,再将PC的地址高5位与指令中的低11位地址构成目标地址,程序跳到目标地址继续运行
所以SP=67H 堆栈中内容为25F2H
PC=25F0H(0010010111110000)中高5位(00100)并上2900H(0010100100000000)中的低11位(00100000000)=2100H(0010000100000000)
看出结果这个跳转其实出错了,因为ACALL指令最大跳转范围只有2K(刚好是11位二进制数的最大值) 如果你真的想跳转到2900H处,那么这里应该使用LCALL指令
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com