当前课程知识点:单片机原理及应用 >  4 汇编语言程序设计 >  4.12 子程序的概念 >  子程序的概念

返回《单片机原理及应用》慕课在线视频课程列表

子程序的概念在线视频

子程序的概念

下一节:子程序设计注意事项

返回《单片机原理及应用》慕课在线视频列表

子程序的概念课程教案、知识点、字幕

同学

你好

今天我们将学习一下子程序的设计方法

我们通常把一些基本操作功能

会编制为程序段

来作为一个独立的子程序

以供不同程序或同一程序中反复调用

在程序中需要执行这种操作的地方

我们就会放一条调用指令

当程序执行到调用指令处

就可以转移到子程序中去完成规定的操作

当子程序结束完之后

会自动的返回到原来的程序调用处

继续去执行原来的子程序

和子程序调用以及返回相关的指令

我们前面在51单片机的指定系统中

也学习过

这里面我们来看一看

调用子程序的指令有两个

一个是ACALL

一个是LCALL

在执行调用指令时

CPU会先将程序地址指针PC改变一下

具体怎么变

如果是用的是ACALL调用指令

那PC的值会加2

如果你用的是LCALL这条调用指令

PC的值的话会加3

然后cpu会把PC的值压入堆栈来保存

在这个子程序执行完之后

如果执行返回指令时的话

cpu会将保存在堆栈中的

PC的值弹出来

返还给PC

子程序调用中主程序

应该先把有关的参数存入到约定的位置

子程序在执行时可以从约定的位置

取得参数

当子程序执行完后

将得到的结果再存入到约定的位置

返回主程序后主程序的话可以从这些

约定的位置上取得需要的结果

这叫做参数的传递

下面我们可以用一个示意图来

展示子程序调用和返回的具体细节

我们来看这个图

图中有主程序和子程序

在主程序中比如说正常执行

正常情况下是顺序的执行

当执行到ACALL addr这条指令时

这条指令我们知道是一条子程序

调用指令

这个时候cpu会暂停正在执行的主程序

由于用的是ACALL这条调用指令

这条指令我们知道在用两个单元存放

所以他下一条指令的地址就是nnnnH加2

我们的CPU会把nnnnH加2

地址压入堆栈保存

然后把子程序的第一个指令的首地址addr

就送给pc

相当于程序就跳转到子程序去执行子程序

当子程序执行完之后

会遇到一个RET这个指令

这个是子程序的返回指令怎么返回

CPU会把压入到堆栈中的原来

nnnnH加2的地址会从堆栈中

弹出来弹给谁

弹给pc我们前面一再强调过

pc中永远存放的是下一条将要执行的

指令的地址

所以由于已经把nnnnH加2这个地址

弹给了PC

我们的CPU就会返回到主程序处

从主程序的nnnnH加2指令

这个地址数去取指令

相当于什么

是继续的来执行后面的主程序

在主程序在顺序执行过程中

如果又遇到一个LCALL addr这条指令

相当于又是一个子程序的跳转调用

执行的cpu执行的过程类似

只不过由于LCALL它是一个三字节的

一个指令

所以主程序的下一条指令的地址

应该是mmmmH加上一个3

这个时候会把地址压入堆栈

然后再把子程序的地址addr

送给PC

这个时候相当于CPU就会转移到

子程序数去执行子程序

然后子程序执行完之后又是一个RET

子程序的返回怎么返回

我们前面说过就是把压入堆栈的

mmmmH加3的地址弹出来送给PC

相当于CPU又转回到主程序的LCALL这条指令的

下一条指令mmmmH加3的

地址对应的单元责令中去继续的来

执行后面的主程序

通过这个示意图同学们就可以

理解子程序的调用以及子程序返回的

那么具体的执行的机理 好的

今天的话我们主要介绍了一下

什么是子程序以及子程序调用

和子程序返回的机理

请同学们仔细的领会一下子程序调用

和返回的它的机理

好的

本节课到这里

同学们再见

单片机原理及应用课程列表:

1 单片机系统概述

-1.1 单片机的名称

--单片机的名称

-1.2 单片机的相关概念

--单片机的相关概念

-1.3 单片机的设计语言及软件

--单片机的设计语言及软件

-1.4 单片机的发展

--单片机的发展

-1.5单片机的应用

--单片机的应用

-1.6 第一单元作业

2 单片机的硬件结构

-2.1 单片机的结构框图

--单片机的结构框图

-2.2 80C51内部结构

--80C51内部结构

-2.3 信号引脚

--信号引脚

-2.4 内部数据存储器RAM

--内部数据存储器RAM

-2.5 特殊功能寄存器

--特殊功能寄存器

-2.6 堆栈

--堆栈

-2.7 内部程序存储器ROM

--内部程序存储器ROM

-2.8 存储器的结构特点

--存储器的结构特点

-2.9 并行输入输出接口电路

--并行输入输出接口电路

-2.10 并口功能与时序

--并口功能与时序

-2.11 工作方式

--工作方式

-2.12 最小应用系统

-- 最小应用系统

-2.13 第二单元作业

3 指令系统

-3.1 指令格式

--指令格式

-3.2 立即寻址与直接寻址

--立即寻址与直接寻址

-3.3 寄存器寻址与寄存器间接寻址

--寄存器寻址与寄存器间接寻址

-3.4 变址间接寻址与位寻址

--变址间接寻址与位寻址

-3.5 内部RAM传送指令

--内部RAM传送指令

-3.6 外部RAM传送指令

--外部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 汇编语言程序设计

-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 单片机存储器扩展

-5.1 系统扩展

--系统扩展

-5.2 51单片机扩展方法

--51单片机扩展方法

-5.3 存储器单元位数扩充方法

--存储器单元位数扩充方法

-5.4 存储器容量单元扩充方法

--存储器容量单元扩充方法

-5.5 译码线选法

--译码线选法

-5.6 程序存储器的类型

--程序存储器的类型

-5.7 程序存储器的扩展

--程序存储器的扩展

-5.8 数据存储器的扩展

--数据存储器的扩展

-5.9 存储器综合扩展

--存储器综合扩展

-5.10 单片机存储器系统的特点

-- 单片机存储器系统的特点

-5.11 第五单元作业

6 中断与定时系统

-6.1 中断技术

--中断技术

-6.2 中断优先级及中断系统内部结构

--中断优先级及中断系统内部结构

-6.3 中断控制寄存器及中断响应过程

--中断控制寄存器及中断响应过程

-6.4 中断请求的撤消

--中断请求的撤消

-6.5 外部中断举例

--外部中断举例

-6.6 定时器/计数器

--定时器/计数器

-6.7 定时计数器工作方式及程序编写

--定时计数器工作方式及程序编写

-6.8 定时器举例

--定时器举例

-6.9 第六单元作业

7 I/O扩展及应用

-7.1 并行接口

-- 并行接口

-7.2 并口举例

--并口举例

-7.3 并口扩展芯片

--并口扩展芯片

-7.4 8155连接方式及编程

--8155连接方式及编程

-7.5 键盘接口技术

--键盘接口技术

-7.6 按键处理程序及举例

--按键处理程序及举例

-7.7 键盘扫描子程序

-- 键盘扫描子程序

-7.8 显示接口技术

--显示接口技术

-7.9 多位字符静态显示

--多位字符静态显示

-7.10 多位字符动态显示

--多位字符动态显示

-7.11 第七单元作业

8 单片机实验

-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 第八章作业-作业

子程序的概念笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。