1、在查找到转移地址后,不是将其装入DPTR中,而是将它压入堆栈中(先低位字节,后高位字节,即模仿调用指令)。
2、然后通过执行RET指令,将堆栈中的地址d回到PC中实现程序的转移。
KEYA BIT P1.0KEYB BIT P1.1
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
JB KEYA,MAIN1
LCALL DEALA
SJMP MAIN
MAIN1:
JB KEYB,MAIN
LCALL DEALB
SJMP MAIN
DEALA:
..........
RET
DEALB:
............
RET
END
SUBB A, #04H 如果结果Cy=1说明键值小于04H,是合理的,否则键值大于04H就出错。RL A 起键值×2的作用,因为散转表中的每条指令JMP @A+DPTR的代码都是双字节的,所以散转偏移量应该是键值的两倍。如果每组代码是N字节,这里就要×N。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)