问问单片机跳转范围的问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 17:17:06
请看下面的程序:
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP PRO1
MAIN: MOV TMOD, #01H
MOV TL0, #00H
MOV THO, #00H
SETB TR0
SETB ET0
SETB EA
HERE: AJMP HERE
ORG 2000H
PR01: INC R7
RETI
END
问题是:是否可以把LJMP PRO1改成AJMP PR01?
我知道是不可以的,因为LJMP的跳转范围是64KB,而AJMP是2KB 但是我不知道具体怎么计算?怎么计算跳转范围是超过2KB而小于64KB?请高手帮忙

LJMP指令的地址在000BH,你跳转的地址是2000H,相差1FF5(16进制)
换算成十进制就是8181,超过2048(2KB)了。
你在2KB以内也可以用LJMP,现在的单片机资源一般不会那么紧张,不要太计较。

在我们使用的学习型程序中用AJMP就可以了,
建议学习c51.

AJMP是11位的 2000H-000BH=0xD8181>2K所以用AJMP是不行的