先来说一下 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指令