内容正文:
第四章 汇编语言程序设计方法
4.2 分支程序设计
《单片机技术与应用》 高教版 第二版 魏寿明
CONTENTS
目录
01
学习目标
02
新课引入
03
新课教学
04
师生互动
05
课堂练习
06
课堂小结
学习目标
CATALOGUE
一
掌握分支程序设计的基本概念
理解分支程序设计的原理和方法
掌握分支指令的用法和技巧
掌握分支程序设计的基本概念
新课引入
CATALOGUE
二
分支程序设计是汇编语言中非常重要的一个部分,它能够让程序根据不同的条件执行不同的代码,从而实现更加灵活和高效的程序流程控制。
分支程序设计在各种应用场景中都有广泛的应用,如操作系统中的任务调度、数据库系统中的查询优化、游戏中的AI算法等。
分支程序设计能够提高程序的执行效率和响应速度,同时也能使程序更加易于维护和调试。
分支程序设计的重要性和应用场景
本节课我们将进一步学习分支程序设计,通过条件判断和跳转指令来实现更加复杂的程序流程控制。
分支程序设计是汇编语言中非常重要的一个部分,它能够让程序根据不同的条件执行不同的代码,从而实现更加灵活和高效的程序流程控制。
在上节课中,我们学习了汇编语言的基本指令和数据类型,以及如何使用这些指令进行简单的程序流程控制。
回顾上节课内容
新课教学
CATALOGUE
三
在处理实际问题时,只用简单程序设计的方法是不够的。例如,有多个子程序时,为判断 执行哪个子程序,就需要使用分支结构的程序。
分支程序是通过控制转移指令来实现的,每个 分支都需要一个单独的程序段
为了实现程序跳转,在相应程序段的起始地址定义一个地址标 号,使得条件满足时能够转向指定的地址单元去执行,条件不满足时顺序执行;当然也可以是 满足条件顺序执行,而不满足条件跳转执行。
01
02
03
分支程序设计
控制转移指令
指令 功能
JZrel A的内容为0转移
JNZrel A的内容非0转移
JCrel CY =1转移
JNCrel CY =0转移
JBbit,rel 此位为1转移
JNB bit.re 此位非1转移
JBC bit.re 此位为1转移,并将此位清0
CJNE A,direct.re 两数不相等转移
CJNEA,#data,rel 两数不相等转移
CJNE Rn.#data.re 两数不相等转移
CJNE@Ri,#data,rel 两数不相等转移
DJNZ Rn.re 寄存器内容减1不为0转移
DJNZdirect,rel 直接寻址字节内容减1不为0转移
通过条件判断实现分支程序转移的指令有JZ 、JNZ 、CJNE 、DJNZ等。此外还有以位状态 作为条件进行程序分支的指令,如JC 、JNC 、JB 、JNB 、JBC 等。使用这些指令可以完成以为 0、1、 正、负,以及相等、不相等作为条件判断依据的程序转移。
分支结构有两种形式:单分支程序和多分支程序。
控制转移指令
单分支程序是指根据一个条件判断结果来决定程序流程的程序。
它通常包含一个条件判断语句和两个分支(即满足条件和不满足条件时的操作)。
单分支程序是程序设计中常见的基本结构之一,用于实现基于条件的控制流程。
单分支程序
1
2
3
汇编语言中,可以使用跳转指令来实现单分支程序。
当条件满足时,使用跳转指令将程序流程跳转到相应的分支;当条件不满足时,程序继续执行下一条指令。
常用的跳转指令包括JZ(跳转当ZF标志位为1时)、JNZ(跳转当ZF标志位为0时)等。
单分支程序-汇编指令实现
单分支程序-实际应用场景
单分支程序在实际应用中广泛使用,例如在判断一个数是否为正数、负数或零时,根据不同的情况执行不同的操作。
另外,在实现一些算法逻辑时,如二分查找、冒泡排序等,也需要使用单分支结构来控制程序的流程。
单分支程序
单分支程序中的判断部分有两个出口,根据判断结果执行其中的一个分支。单分支常见结构形式有两种。
单分支程序
03
分支类型
常见的多分支结构有if-else、switch-case等,根据实际需求选择合适的分支结构。
01
多分支程序
在程序中,根据不同的条件执行不同的代码段,实现多种分支路径的程序结构。
02
条件判断
在多分支程序中,需要使用条件判断语句,根据条件的结果决定执行哪个分支的代码。
多分支程序
JZ/JE指令
当ZF标志位为1时,表示结果为零,跳转到指定地址执行。
JMP指令
无条件跳转指令,直接跳转到指定地址执行。
JNZ/JNE指令
当ZF标志位为0时,表示结果不为零,跳转到指定地址执行。
多分支程序-汇编指令实现
在用户输入数据时,根据输入的内容进行判断,执行相应的处理逻辑。
输入验证
根据用户在菜单中选择的操作,执行相应的功能代码。
菜单选择
在算法中根据不同的条件选择不同的分支路径,实现