当前课程知识点:单片机原理及应用 > 3 指令系统 > 3.16 无条件转移指令 > 无条件转移指令
同学
你好
今天我们来看一看转移类指令
转移类指令是通过改写PC的当前值
从而改变CPU执行的顺序
使程序发生跳转
因为我们前面也反复强调过
PC是程序计数器
它里面永远存放的是
下一条将要执行的指令所在存储单元的地址
所以那么可以通过改写PC的当前值
来改变程序执行的顺序
因为PC会自动加一
所以的话默认情况下我们的程序是顺序执行
如果想改变程序执行的顺序
就可以通过强行改写PC的当前值
来实现程序的跳转
按照转移的条件分
分转移类指令可以分为无条件转移指令
即无条件的转移到指定处去执行
第二种类型是条件转移
即指令中要给出转移的条件
执行指令时
CPU先会先测试这个条件是否满足
若满足条件则程序发生转移
否则程序仍将按照原来的顺序的去执行
我们可以先来看一看无条件转移指令
该类指令有四条
第一条LJMP addr16
指令中的addr16表示的是
16位的跳转目的地的地址
其为长跳转指令
可以实现ROM中64KB范围的跳转
因为这个目的地址是16位
我们知道2的16次方是64k
所以这条指令可以在整个ROM的64KB范围内
来实现任意的跳转
第二条转移指令是绝对转移指令
AJMP addr11
指令中我们看到
目的地址是11位
所以我们知道2的11次方是2K
所以该指令只能够实现ROM中2KB范围的跳转
第三条转移指令是实现ROM
相对转移的SJMP rel
指令中该目的地址rel
只是一个八位的相对偏移量
所以该条指令只能实现ROM当前指令处
负的128个字节到正的127个单元内的跳转
而JMP @ A+DPTR
它是间接长跳转指令
指令中跳转的目的地地址
是由DPTR寄存器和累加器A一起来提供
由于我们前面也说过
DPTR数据指针寄存器它是16位
所以该条指令可以实现ROM中64KB范围的跳转
真正编程时
我们的转移程序的书写
我们并不是在指令中直接给出目的地的地址
我们都是用标号来代替转移目的地的地址值
而指令中的具体目的地的地址值
都是交给汇编程序计算的
我们程序员不必操心
要跳转到目的地的比如说next处
我们可以像这边屏幕中所说的来写程序
LJMP NEXT或者AJMP NEXT
或者SJMP NEXT
然后把目的指令处加上标号NEXT即可
当然要注意目的地指令与跳转这个指令的
地址偏差范围不能超过相应指令允许的跳转范围
下面我们来看一看跳转指令的具体应用
这道例题要求
处理功能键
要求不同的功能键
执行不同的程序段
那么设每个功能键对应一个键值X
X的范围是0到FH
设X已经存入片内RAM的40H单元中
若X等于0
则执行程序段FUNC0
若X值是1
则执行程序段FUNC1依次类推
那么如何来实现这种按照不同的功能键
来跳转到不同的功能程序去执行相应的功能
在具体的实现程序中我们可以看到
在具体的程序实践中
我们用到了JMP间接长跳转
和AJMP绝对跳转指令
注意每条绝对跳转指令AJMP
将用两个ROM存储单元来存放
这也是程序中我们需要用到
指令ADD A , A的原因
同学们你可以自行地仔细阅读该段程序
理解转移指令的功能
好的
今天我们主要介绍了无条件的转移指令
这些指令可以实现CPU
无条件的转移到你想要去的目的地处
去执行相关的程序
好的
今天的课就到这里
同学们再见
-1.1 单片机的名称
--单片机的名称
-1.2 单片机的相关概念
--单片机的相关概念
-1.3 单片机的设计语言及软件
-1.4 单片机的发展
--单片机的发展
-1.5单片机的应用
--单片机的应用
-1.6 第一单元作业
-2.1 单片机的结构框图
--单片机的结构框图
-2.2 80C51内部结构
-2.3 信号引脚
--信号引脚
-2.4 内部数据存储器RAM
-2.5 特殊功能寄存器
--特殊功能寄存器
-2.6 堆栈
--堆栈
-2.7 内部程序存储器ROM
-2.8 存储器的结构特点
--存储器的结构特点
-2.9 并行输入输出接口电路
-2.10 并口功能与时序
--并口功能与时序
-2.11 工作方式
--工作方式
-2.12 最小应用系统
-- 最小应用系统
-2.13 第二单元作业
-3.1 指令格式
--指令格式
-3.2 立即寻址与直接寻址
-3.3 寄存器寻址与寄存器间接寻址
-3.4 变址间接寻址与位寻址
-3.5 内部RAM传送指令
-3.6 外部RAM传送指令
-3.7 ROM传送指令
--ROM传送指令
-3.8 交换指令
--交换指令
-3.9 堆栈操作指令
--堆栈操作指令
-3.10 传送类指令习题讲解
-3.11 算术运算类指令特点
-3.12 加法指令
--加法指令
-3.13 加法习题、减法和乘除指令
-3.14 逻辑运算指令
--逻辑运算指令
-3.15 布尔变量操作指令
--布尔变量操作指令
-3.16 无条件转移指令
--无条件转移指令
-3.17 条件转移指令
--条件转移指令
-3.18 循环转移指令
--循环转移指令
-3.19 子程序相关指令
--子程序相关指令
-3.20 并口访问指令及指令小结
-3.21 第三单元作业
-4.1 汇编程序约定
--汇编程序约定
-4.2 宏指令
--宏指令
-4.3 汇编控制指令
--汇编控制指令
-4.4 汇编语言程序设计步骤
-4.5 顺序程序举例
-- 顺序程序举例
-4.6 单重分支结构
--单重分支结构
-4.7 多重分支结构
--多重分支结构
-4.8 单重循环结构
--单重循环结构
-4.9 计数控制循环程序
--计数控制循环程序
-4.10 特征控制循环程序
-- 特征控制循环程序
-4.11 多重循环程序
--多重循环程序
-4.12 子程序的概念
--子程序的概念
-4.13 子程序设计注意事项
-4.14 子程序举例
--子程序举例
-4.15 第四单元作业
-5.1 系统扩展
--系统扩展
-5.2 51单片机扩展方法
-5.3 存储器单元位数扩充方法
-5.4 存储器容量单元扩充方法
-5.5 译码线选法
--译码线选法
-5.6 程序存储器的类型
--程序存储器的类型
-5.7 程序存储器的扩展
--程序存储器的扩展
-5.8 数据存储器的扩展
--数据存储器的扩展
-5.9 存储器综合扩展
--存储器综合扩展
-5.10 单片机存储器系统的特点
-- 单片机存储器系统的特点
-5.11 第五单元作业
-6.1 中断技术
--中断技术
-6.2 中断优先级及中断系统内部结构
-6.3 中断控制寄存器及中断响应过程
-6.4 中断请求的撤消
--中断请求的撤消
-6.5 外部中断举例
--外部中断举例
-6.6 定时器/计数器
--定时器/计数器
-6.7 定时计数器工作方式及程序编写
-6.8 定时器举例
--定时器举例
-6.9 第六单元作业
-7.1 并行接口
-- 并行接口
-7.2 并口举例
--并口举例
-7.3 并口扩展芯片
--并口扩展芯片
-7.4 8155连接方式及编程
-7.5 键盘接口技术
--键盘接口技术
-7.6 按键处理程序及举例
-7.7 键盘扫描子程序
-- 键盘扫描子程序
-7.8 显示接口技术
--显示接口技术
-7.9 多位字符静态显示
--多位字符静态显示
-7.10 多位字符动态显示
--多位字符动态显示
-7.11 第七单元作业
-8.1 流水灯控制系统设计
--html
-8.2 数码管显示系统设计
--html
-8.3 按键控制系统设计
--html
-8.4 中断控制系统设计
--html
-8.5 定时计数器系统设计
--html
-8.6 串口通信系统设计
--html
-8.7 汉字显示系统设计
--html
-8.8 单片机烧录方法
--单片机烧录方法
-8.9 第八章作业-作业