内容正文:
第三章 MCS-51 系列单片机指令系统
3.6 控制转移类指令
《单片机技术与应用》 高教版 第二版 魏寿明
CONTENTS
目录
01
学习目标
02
新课引入
03
新课教学
04
师生互动
05
课堂练习
06
课堂小结
学习目标
CATALOGUE
一
学会使用控制转移类指令解决实际问题
掌握控制转移类指令的原理
理解控制转移类指令在编程中的应用
学习目标
新课引入
CATALOGUE
二
新课引入
控制转移类指令在生活中有许多应用场景,以下是一些常见的例子:
01 路线导航:在导航系统中,控制转移类指令用于指示车辆或行人应该如何转向或改变方向。通过控制转移指令,导航系统可以提供准确的路线指引,帮助人们到达目的地。
02 交通信号灯:交通信号灯通过控制转移类指令来控制车辆和行人的行进方向。例如,红灯指示车辆停止,绿灯指示车辆可以前进,黄灯指示车辆应该减速或停车。
03 电梯控制:电梯系统使用控制转移类指令来控制电梯的运行和停靠。通过按下楼层按钮或使用电梯内部的控制面板,乘客可以指示电梯前往特定的楼层。
新课教学
CATALOGUE
三
凡是能够使程序改变执行顺序的指令称为控制转移类指令,又称跳转指令。控制转移类指 令共有17条,可分为无条件转移指令、条件转移指令、子程序调用及返回指令。有了丰富的 控制转移类指令,就能很方便地实现程序向前、向后转移,并根据条件实现分支运行、循环运 行及调用子程序等。
控制转移类指令
无条件转移指令
当程序执行到无条件转移指令时,程序将无条件地转移到指令所提供的目标地址处执行。
该指令执行时把指令操作数提供的16位目标地址 A15~A0 装入 PC 中,不影响标志位。 由于指令中提供16位目标地址,因此执行这条指令可以使程序从当前地址转移到64KB 程序 存储器地址空间的任意地址,故得名“长转移”。
(1)长转移指令LJMP addr16
该指令执行后,程序转移的目的地址是由 AJMP 指令所在位置的地址 PC 值加上该指令字 节数2,构成当前PC 值。
(2)绝对转移指令AJMP addr11
无条件转移指令
无条件转移指令
例01 若 AJMP指令地址(PC)=2300H, 执行指令AJMP OFFH后,求转移目的地址。
转移目的地址(PC)=20FFH, 程序向前转到20FFH 单元开始执行。
例02 若 AJMP指令地址(PC)=2FFFH, 执行指令AJMP OFFH 后,求转移目的地址。 转移目的地址(PC)=30FFH, 程序向后转到30FFH 单元开始执行。
由上可见:若addr11 相同,则AJMP指令的机器码相同,但转移的目的地址却可能不同, 这是因为转移的目的地址是由PC 当前值的高5位与 addr11 共同决定的。
(3)短转移指令 SJMP rel
SJMP指令的操作数rel 用8位带符号数补码表示,占指令的1字节。因为8位补码的取值范围 为-128~+127,所以该指令的转移范围是相对 PC 当前值向前转移128字节,向后转移127 字节。
(4)间接转移指令JMP @A+DPTR
该条指令是以数据指针DPTR的内容为基址,以累加器 A 的内容为相对偏移量,在64 KB 范围内无条件转移。
无条件转移指令
无条件转移指令
例: 根据累加器A 的值,转移不同处理程序的人口。
MOV DPTR,#TABLE
JMP @A+DPTR
TABLE:AJMP TAB1
AJMP TAB2
AJMP TAB3
当(A)=0 时转TAB1执行,当(A)=2 时 转TAB2 执行,当(A)=4 时转TAB3 执行,根 据A 的内容进行多分支操作,由于AJMP是双字节指令,因此A的值必须是偶数。
条件类转移指令
条件转移指令是按照某一标志或特定条件转移的指令,当条件满足时,程序转移执行;当 条件不满足时,程序仍按原来顺序执行。
由于该类指令采用相对寻址,因此程序可在以当前 PC值为中心的-128~+127的范围内转移,共256个单元。
条件转移指令可以分为判断累加 器是否为0转移指令、比较条件转移指令和减1条件转移指令三类。
条件类转移指令
条件类转移指令
(1)判断累加器是否为0转移指令
判断累加器是否为0转移指令是以累加器A 的内容是否为0作为转移的条件,累加器 A 为0,则转移,累加器A 不为0,则顺序执行。执行这条指令不作任何运算,也不影 响标志位。
例:编写程序:两个数相加,若和不等于0则和取反,若和为0则将20H 单元清0。
ADD A,RO
JNZ LOOP
MOV 20H,A
LOOP:CPL A
条件类转移指令
(2)比较转移指令
比较转移指令是先对两个规定的操作数进行比较,