51单片机 如何利用程序指针实现跳转
展开全部
方法1:
MOV
DPTR
,#LOCA
;取得JMP
@A+DPTR的地址(PC)
MOV
A,#4
;跳转步长
LOCA:
JMP
@A+DPTR
(注:JMP
@A+DPTR是一条1字节的指令,执行该条指令后PC=LOCA+1,如果想取该指令之后的PC,可以用方法2)
方法2:
MOV
DPTR
,#LOCA
;取执行JMP
@A+DPTR后的地址(PC)
MOV
A,#4
;跳转步长
JMP
@A+DPTR
LOCA:
程序行1
程序行2
……
……
……
程序行N
方法3(程序跳转表):
MOV
DPTR
,#LIST
;取程序跳转表首地址
MOV
A,R0
;取跳转偏移(跳转偏移存在R0中)
JMP
@A+DPTR
程序行1
程序行2
……
……
……
程序行N
LIST:
SJMP
FUN1
SJMP
FUN2
SJMP
FUN3
……
FUN1:
……
FUN2:
……
FUN3:
……
MOV
DPTR
,#LOCA
;取得JMP
@A+DPTR的地址(PC)
MOV
A,#4
;跳转步长
LOCA:
JMP
@A+DPTR
(注:JMP
@A+DPTR是一条1字节的指令,执行该条指令后PC=LOCA+1,如果想取该指令之后的PC,可以用方法2)
方法2:
MOV
DPTR
,#LOCA
;取执行JMP
@A+DPTR后的地址(PC)
MOV
A,#4
;跳转步长
JMP
@A+DPTR
LOCA:
程序行1
程序行2
……
……
……
程序行N
方法3(程序跳转表):
MOV
DPTR
,#LIST
;取程序跳转表首地址
MOV
A,R0
;取跳转偏移(跳转偏移存在R0中)
JMP
@A+DPTR
程序行1
程序行2
……
……
……
程序行N
LIST:
SJMP
FUN1
SJMP
FUN2
SJMP
FUN3
……
FUN1:
……
FUN2:
……
FUN3:
……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询