ORG 2000H
MOV SP, #40H
MOV A, #30H
LCALL SUBR
ADD A, #10H
MOV B, A
L1: SJMP L1
SUBR: MOV DPTR, #200AH
PUSH DPL
PUSH DPH
RET
请问执行后SP,A , B, PC,等于多少?具体怎么来的。特别是调用子程序回来继续这一步 的详细过程?
多谢大神回答
你好,关于2,LCALL进行了两次SP+1,而子程序也进行了两次PUSH操作以及RET。栈顶地址的变化是啊41,42,43,44,43,42。前两个是 LCALL指令引起的,后来43,44是PUSH,后来又因为RET,才降为42的吗?
追答LCALL 之前,SP=#40H,然后,进入 SUBR 子程序:
SUBR: MOV DPTR, #200AH ; 执行后 SP = #42H