第2节 51系列单片机的指令系统.pptVIP

  • 4
  • 0
  • 约1.54万字
  • 约 60页
  • 2018-09-20 发布于湖北
  • 举报
CY CY RR A RL A RLC A RRC A 4.移位指令(仅对 A )00101101 A A 设A 1 CYA 0A 1 CY CY 2.4 控制转移指令 这一类指令的功能是改变指令的执行顺序,转到指令指示的新的PC地址执行。修改PC的方式有直接修改16位地址或11位地址,或将当前PC加一个单字节有符号数. MCS-51单片机的控制转移指令有以下类型: 无条件转移:无需判断,执行该指令就转移到目的地址。 条件转移:需判断标志位是否满足条件,满足条件转移到目的地址,否则顺序执行。 绝对转移:转移的目的地址用绝对地址指示,通常为无条件转移。 相对转移:转移的目的地址用相对于当前PC的偏差(偏移量)指示,通常为条件转移。 长转移或长调用:目的地址距当前PC 64KB地址范围内。 短转移或短调用:目的地址距当前PC 2KB地址范围。 1.长调用 LCALL addrl16 ;addr16→PC0~15 说明: (1)该指令功能是 ①保护断点,即当前PC(本指令的下一条指令的首地 址)压入堆栈。 ②子程序的入口地址 addr16 送PC,转子程序执行。 (2)本指令为64KB地址范围内的调子程序指令,子程序可在64KB地址空间的任一处。 (3)本指令的机器码为三字节 12 addr16。 2.4.1 调用程序和返回类指令 2.短调用 ACALL addr11 ;addr11→PC0~10 说明: (1)该指令的功能是 ①保护断点,即当前PC压入堆栈。 ② addrl11→PC0~10,而PC11~15保持原值不变。 (2)本指令为2KB地址范围的调子程序指令,子程序入口距当前PC不得超过2KB地址范围。 (3)本指令的机器码为二字节,设addr11的各位是a10a9a8…a2a1a0,则ACALL指令机器码a10a9a810001a7a6a5a4a3a2a1a0,其中10001是ACALL指令的操作码。 例 子程序调用指令ACALL在 程序存储器中的首地址为0100H,子程序入口地址为0205H。试确定能否使用ACALL指令实现调用? 解: 因为ACALL指令首地址在0100H,而ACALL是 2字节指令,所以下一条指令的首地址在0102H。0102H和0250H在同一2KB地址范围内,故可用ACALL调用。 3.子程序返回指令 RET ;从调用子程序返回。 功能:从栈顶弹出断点到PC。 RETI ; 从中断服务程序返回。 功能:从栈顶弹出断点到PC,并恢复中断优先级状态触发器。 2.4.2 转移指令 1. 无条件转移指令 (1)短转移 AJMP addr11 ;addr11→PC0~10 说明: ①转移范围:本指令为2KB地址范围内的转移指令。对转移目的地址的要求与ACALL指令对子程序入口地址的要求相同。 ②机器码形式:本指令为2字节指令。设addr11的各位是a10a9a8…a2a1a0,则指令的机器码为a10a9a800001a7a6a5a4a3a2a1a0。 (2)长转移 LJMP addr16 ;addr16→PC0~15 说明: ①本指令为64KB程序存储空间的全范围转移指令。转移地址可为16位地址中的任意值。 ②本指令为3字节指令02 addr16。 (3)间接转移(散转指令) JMP @A+DPTR ;A+DPTR→PC 例 A=02H,DPTR=2000H,指令JMP @A+DPTR执行后,PC=2002H。也就是说,程序转移到2002H地址单元去执行。 例 现有一段程序如下: MOV DPTR,#TABLE JMP @A+DPTR TABLE:AJMP PROC0 AJMP PROC1 AJMP PROC2 AJMP PROC2 根据JMP @A+DPTR指令的操作可知, 当A=00H时,程序转入到地址 PROC0 处执行; 当A=02H时,转到PROC1处执行…… 可见这是一段多路转移程序,进入的路数由A确定。因为AJMP指令是2字节指令,所以 A 必须为偶数。 以上均为绝对转移指

文档评论(0)

1亿VIP精品文档

相关文档