当前课程知识点:单片机原理及应用 >  4 汇编语言程序设计 >  4.13 子程序设计注意事项 >  子程序设计注意事项

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

子程序设计注意事项在线视频

子程序设计注意事项

下一节:子程序举例

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

子程序设计注意事项课程教案、知识点、字幕

同学

你好

前面我们介绍了一下子程序的调用

以及子程序返回的运行机理

下面我们再仔细的谈一谈在汇编程序

汇编源程序设计中

子程序设计要注意的一些关键问题

在汇编语言源程序中

如果你要使用子程序

一般要注意两个问题

即参数的传递和现场的保护

对于参数的传递一般可以采用

以下的办法

传递数据即将数据通过工作寄存器

R0~R7或累加器A来传送

即主程序和子程序在交接处

上述寄存器和累加器A中存储的

是同一个参数

另外一种参数传递的方法就是

不传递数据

传递的是地址

及数据存放在数据存储器RAM中

参数传递时只通过R0、R1、DPTR

传递数据所存放的RAM单元的地址

当然也可以通过堆栈来传递参数

即在调用之前先把要传递的参数压入堆栈

进入子程序后

再将压入堆栈的参数弹出到

工作寄存器或其他内存单元中

在子程序的设计中还要特别注意

一个问题

什么问题

就是保护现场和恢复现场

为什么要做这样的处理

因为在调用子程序时

单片机只是自动保存了断点处的

就是说调用处的地址

但由于调用程序转入到子程序之后

子程序往往会破坏主程序

或调用程序的有关寄存器

比如说工作寄存器和累加器A等等的

里面的内容

也很可能破坏程序状态字PSW中的标志位

从而在子程序返回后

引起调用程序或主程序出错

因此必要时应将这些单元的内容

保护起来即保护现场

对于PSW累加器A B寄存器等

我们可以通过压入堆栈指令

把这些内容压入堆栈来进行保护

工作寄存器我们可以采取选择

不同工作寄存器组的方式来达到保护的目的

一般主程序可以选用工作寄存器0

而子程序我们可以选用

工作寄存器的其他的组

当这个子程序执行完之后

即要返回到主程序时

我们应该先将上述内容

送回到过来时的寄存器中

这后一过程我们又称作是恢复现场

对于像PSW累加器A、B等里面的内容

可以通过弹出堆栈指令来恢复

在编写子程序时还应注意保护和

恢复的顺序即先压入堆栈的数据

你要后弹出

那么千万不要把这个顺序搞反了

否则的话你这个数据不能够恢复到

原来的值

好的

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

在子程序设计中同学们应该重点关注

的两个问题

一个是如何来传递参数与主程序

如何把参数传给子程序

子程序如何把这个运算的结果

返回给主程序

这是第一个要注意的问题

第二个就是在设计子程序时

一定要注意现场的保护和恢复

好的

今天课程到这里

同学们再见

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

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

子程序设计注意事项笔记与讨论

也许你还感兴趣的课程:

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