发表于:2014/10/26 21:46:57
#0楼
如果累加器A中存放待处理命令编号(0~7),程序存储器中存放着标号为PMTB的转移表首址,则执行下面的程序,将根据A中命令编号转向相应的命令处理程序。
PM: MOV R1 ,A ;(A)*3→A
RL A
ADD A,R1
MOV DPTR,#PMTB; 转移表首址→DPTR
JMP @A+DPTR ;据A值跳转到不同入口
PMTB:LJMP PM0 ;转向命令0处理入口
LJMP PM1 ;转向命令1处理入口
LJMP PM2 ;转向命令2处理入口
LJMP PM3 ;转向命令3处理入口
LJMP PM4 ;转向命令4处理入口
LJMP PM5 ;转向命令5处理入口
LJMP PM6 ;转向命令6处理入口
LJMP PM7 ;转向命令7处理入口
PM: MOV R1 ,A ;(A)*3→A
RL A
ADD A,R1
MOV DPTR,#PMTB; 转移表首址→DPTR
JMP @A+DPTR ;据A值跳转到不同入口
PMTB:LJMP PM0 ;转向命令0处理入口
LJMP PM1 ;转向命令1处理入口
LJMP PM2 ;转向命令2处理入口
LJMP PM3 ;转向命令3处理入口
LJMP PM4 ;转向命令4处理入口
LJMP PM5 ;转向命令5处理入口
LJMP PM6 ;转向命令6处理入口
LJMP PM7 ;转向命令7处理入口