单片机中的短跳转指令AJMP其转移目标指令地址怎么算

[复制链接]
查看11 | 回复3 | 2010-5-24 10:53:26 | 显示全部楼层 |阅读模式
例如;KWP:AJMP addrll
如果addrll=00100000000B,标号KWR地址为1030H,则执行该条指令后,程序转移到1100H;当KWR为3030H时,转移到3100H。
为什么会转移到1100H和3100H。
求助求助!!!

回复

使用道具 举报

千问 | 2010-5-24 10:53:26 | 显示全部楼层
AJMP addr11
说明:把11位的addr11内容直接给PC(16位的指针)的PC0——PC10位。这样的话addr11=00100000000B=0100H,原来PC=1030推出转移地址为:1100同样的道理原来的PC=3030时,算出转移地址为:3100仔细看一下书本,看你的困惑不是不了解这个地址是11位的问题,应该是和其他的指令搞混淆了。SJMP rel
PC=(PC)+rel LJMP addr16 PC=addr16AJMP addr11 PC10-0=addr11这下你明白了吗,个人认为自己回答的还很透彻,记得给分哟
回复

使用道具 举报

千问 | 2010-5-24 10:53:26 | 显示全部楼层
51单片机的地址范围是16位数,AJMP addrll 指令,只是改变其中的_低11位数_,高5位数不变。所以才有:在1030H,执行时,将转到1100H;在3030H,执行时,转移到3100H。
回复

使用道具 举报

千问 | 2010-5-24 10:53:26 | 显示全部楼层
51单片机寻址范围是16Bit,但是可以用SJMP短跳转,AJMP绝对跳转,LJMP长跳转三种方式.LJMP addr16-------------0000HTOFFFFHAJMP addr11-------------0000HTO07FFHSJMP rel----------------负80HTO7FH当执行SJ
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行