看来楼主需要系统的总结下了:)
无条件转移指令(共4条)
第一条指令称为长转移指令(Long Jump);
第二条指令叫作绝对转移指令(Absolute Jump);
第三条指令称作短转移指令(Short Jump);
第四條指令是变址寻址转移指令(散转指令)
显然,每条指令均以改变程序计数器PC(Program Counter)中的内容为宗旨
(1)长转移指令(64KB范围内转移指令)
长转移指令为三字节,双周期指令
长转移指令的功能是:把指令码中的目标地址addr16装入程序计数器PC,使机器执行下一条指令时无条件转迻到addr16处执行程序不影响任何标志。由于addr16是一个16位二进制地址(地址范围为0000H—FFFFH)因此长转移指令一条可以在64KB范围内转移的指令。
(2)绝對转移指令(2KB范围内的转移指令)
绝对转移指令是一条双字节双周期指令。
11位地址addr11(a10—a0)在指令中的分布是:
绝对转移指令执行时分为兩步:
第一步是取指令操作程序计数器PC中内容被加1两次;
其中,a10—a0的地址范围是全“0”——全“1”因此,绝对转移指令可以在2KB范围内姠前或向后跳转
如果把单片机64KB寻址区分成32页(每页2KB),则PC15—PC11(00000B—11111B)称为页面地址(即:0页—31页)a10—a0称为页内地址,但应注意:AJMP指令的目标转移地址不是和AJMP指令地址在同一个2KB区域而是应和AJMP指令取出后的PC地址(即:PC+2)在同一个2KB区域。
(3)短转移指令(-126—+129范围内的转移指令)
短转移指令是一条双字节双周期指令。
短转移指令的功能是先使程序计数器PC加1两次(即:取出指令码)然后把加2后的地址和rel相加作為目标转移地址。因此短转移指令是一条相对转移指令,指令码格式为:80H rel(操作码 地址偏移量)这里,80H是SJMP指令的操作码;rel是地址偏移量
(4)变址寻址转移指令(常用于实现分支程序转移)
变址寻址转移指令是一条单字节,双周期指令
在指令执行之前,用户应预先把目标转移地址的基地址送入DPTR目标转移地址对基地址的偏移量放在累加器A中。在指令执行时MCS-51单片机把DPTR中基地址和累加器A中地址偏移量相加,以形成目标转移地址送入程序计数器PC中
通常,DPTR中基地址是一个确定的值常常是一张转移指令表的起始地址,累加器A中之值为表的偏移量地址机器通过变址寻址转移指令便可实现程序的分支转移。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。