首页 理论教育 MCS-51系列单片机常用程序设计模式及汇编语言要点

MCS-51系列单片机常用程序设计模式及汇编语言要点

时间:2023-10-22 理论教育 版权反馈
【摘要】:MCS-51系列单片机程序设计常见的五类程序设计模式如下。MCS-51系列单片机汇编语言程序的分支程序设计实际上就是如何正确运用这13条条件转移指令来进行汇编的问题。用于存放执行循环程序所得结果以及恢复各工作单元的初值。设计子程序应满足通用性的要求,不针对具体数据编程。入口参数是调用子程序之前,需要传给子程序的参数;出口参数是子程序送回调用程序的结果参数。子程序的参数传递方式通常有三种:1)寄存器传送参数。

MCS-51系列单片机常用程序设计模式及汇编语言要点

MCS-51系列单片机程序设计常见的五类程序设计模式如下。

(1)顺序程序 顺序执行各条指令,流程示意如图4-2所示。

(2)分支程序 根据不同条件,执行不同的程序段,流程示意如图4-3所示。

978-7-111-46831-8-Chapter04-4.jpg

图4-2 顺序程序流程示意图

978-7-111-46831-8-Chapter04-5.jpg

图4-3 分支程序流程示意图

a)单分支 b)多分支

分支程序的特点是程序中含有转移指令。由于转移指令有无条件转移和条件转移之分,因此分支程序也可分为无条件分支程序和条件分支程序两类。无条件分支程序中含有无条件转移指令,因为这类程序十分简单就不做专门讨论;条件分支程序中含有条件转移指令,这类程序极为普遍,是讨论的重点。

条件分支程序体现了计算机执行程序时的分析判断能力。若某条件满足,则机器就转移到另一分支上执行程序;若条件不满足,则机器就按源程序继续执行。在MCS-51系列单片机指令系统中,条件转移指令共13条,分为累加器A判零条件转移、比较条件转移、减1条件转移和位控制条件转移四类。MCS-51系列单片机汇编语言程序的分支程序设计实际上就是如何正确运用这13条条件转移指令来进行汇编的问题。

(3)循环程序 在执行程序中,重复执行同样一组操作,流程示意如图4-4所示。

978-7-111-46831-8-Chapter04-6.jpg

图4-4 循环程序流程示意图

a)先处理后判断 b)先判断后处理

循环程序的特点是程序中含有可以重复执行的程序段,该程序段通常称为循环体。循环程序设计不仅可以大大缩短所编程序长度和使程序所占内存单元数最少,也能使程序结构紧凑和可读性好。循环程序由以下四部分组成:(www.xing528.com)

1)循环初始化。循环初始化程序段位于循环程序开头,用于完成循环前的准备工作。例如:给循环体中循环计数器(控制循环次数)和各工作寄存器设置初值。

2)循环处理。这部分程序位于循环体内,是循环程序的工作程序,需要重复执行,要求编写得尽可能简练,以提高程序的执行速度。

3)循环控制。在循环体内,常常由循环计数器修改和条件转移语句等组成,用于控制循环执行次数。

4)循环结束。用于存放执行循环程序所得结果以及恢复各工作单元的初值。

(4)查表程序 通过查询程序存储器数据表来获得变量的值,

(5)子程序 能完成某一特定任务的程序段,其调用示意如图4-5所示。设计子程序应满足通用性的要求,不针对具体数据编程。通过入口参数、出口参数与主程序进行数据传递。入口参数是调用子程序之前,需要传给子程序的参数;出口参数是子程序送回调用程序的结果参数。

子程序的参数传递方式通常有三种:

1)寄存器传送参数。

2)存储器传送参数。

3)堆栈传送参数。

978-7-111-46831-8-Chapter04-7.jpg

图4-5 子程序调用示意图

在主程序中一定要用LCALL(或ACALL)指令调用子程序,同时,子程序一定用RET(中断服务子程序用RETI)指令结尾。其具体的硬件动作是CPU执行调用子程序指令后,先将PC当前值(该调用指令的下一条指令首地址)返回地址压入堆栈,然后将子程序入口地址装入PC中,开始执行子程序,执行到RET指令后,将堆栈栈顶的连续两个单元内容(正好是返回地址)弹出,送给PC,实现准确返回主程序。

在子程序中使用堆栈要特别注意,PUSH和POP指令要严格对应,否则会压住或丢失返回地址,造成程序“跑飞”。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈