文档详情

秦晓飞系列-单片机原理及应用-第3章指令系统讲述.ppt

发布:2017-03-31约3.17万字共91页下载文档
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3.3 89C51/S51单片机的指令系统 3.3.4 控制程序转移类指令 1. 无条件转移指令(4条) (2)短转移指令(绝对转移,与相对转移指令对应) 这条指令提供了11位地址,可在2K范围内无条件转移到由a10-a0所指出的地址单元中。 因为指令只提供低11位地址,高5位为原PC11-15位值,因此,转移的目标地址必须在AJMP指令后面指令的第一个字节开始的同一2K字节范围内。 AJMP addr11; a10 a9 a8 0 0001 先(PC)+2→PC a7 -a0 后addr11 → PC10-0 (PC15-11)不变 3.3 89C51/S51单片机的指令系统 3.3.4 控制程序转移类指令 1. 无条件转移指令(4条) (2)短转移指令 例1: ORG 0500H 0500H: AJMP 0703H ; 0703H=0000 0111 0000 0011 B ;Addr11= 111 0000 0011 B ;指令地址PC=0500H ;即:PC =0000 0101 0000 0000B ;该指令为二字节指令在执行时先PC+2,(PC=0502H=0000 0101 0000 0010B,PC的高五位为:0000 0B ,于0703H的高五位相同,在同一个2k范围内。)然后将Addr11送PC的低11位:PC= 0000 0 111 0000 0011 B. 指令的机器码:a10 a9 a8 0 0001 =1110 0001= E1H a7 -a0 =0000 0011= 03H 3.3 89C51/S51单片机的指令系统 3.3.4 控制程序转移类指令 1. 无条件转移指令(4条) (2)短转移指令 例2: ORG 0700H 0700H: AJMP 0832H ; 0832H=0000 1000 0011 0010 B ;Addr11= 000 0011 0010 B ;指令地址PC=0700H ;即:PC =0000 0111 0000 0000B ;该指令为二字节指令在执行时先PC+2,(PC=0702H=0000 0111 0000 0010B,PC的高五位为:0000 0B ,于0832H的高五位不同,不在同一个2k范围内。)该指令跨越2k的范围,错误。 3.3 89C51/S51单片机的指令系统 3.3.4 控制程序转移类指令 1. 无条件转移指令(4条) (3)相对转移(短转移)指令 这条指令的操作数是相对地址,rel是一个带符号的偏移字节数(补码表示),其范围为-128~+127,负数表示反向转移,正数表示正向转移。该指令为二字节,执行时先将PC内容加2,再加相对地址,就得到了转目标地址。 例1: 1000H SJMP 55H; 其转移目的地址=? 解: ∵rel=55H=0101 0101B,为正数。 ∴目的 PC=1000H+2+rel =1002H+55H =1057H SJMP rel; 1000 0000 先(PC)+2→PC rel 后(PC)+rel→PC 3.3 89C51/S51单片机的指令系统 3.3.4 控制程序转移类指令 1. 无条件转移指令(4条) (3)相对转移(短转移)指令 例2: 1000H SJMP F6H; 其转移目的地址=? 解: ∵rel=F6H=1111 0110B为负数,表示向低地址方向转移。 ∴目的 PC=1000H+2+rel=1002H+F6H 不能直接相加, 要先计算出F6H的真值。即: F6H=1111 0110B取反加1后为:0000 1010B=0AH ∴目的 PC=1002H+F6H =1002H-0AH =0FF8H 3.3 89C51/S51单片机的指令系统 3.3.4 控制程序转移类指令 1. 无条件转移指令(4
显示全部
相似文档