C51汇编程序出错解决
最近开始学习了一点汇编语言,刚好应课程要求,就来编一些简单的C51程序,结果在定时器中断跳转的时候出错了,错误截图如下:
demo.asm(8): error A51: TARGET OUT OF RANGE
源程序代码块是报错在CJNE指令这里
ORG 000BH
INC R1
CJNE R1,#4000,MAINLOOP
CPL P0.0
MOV R1, #0
RETI
错误原因:通俗讲是因为MAINLOOP代码块距离这个中断代码块的地址太远,所以超出范围,无法跳转过去,所以要解决就必须中间设置一个类似中转站的地方。
错误解决之后的代码如下:
ORG 000BH
INC R1
CJNE R1,#4000,0048H
CPL P0.0
MOV R1, #0
RETI
ORG 0048H
JMP MAINLOOP