当前课程知识点:单片机原理及应用 >  4 汇编语言程序设计 >  4.11 多重循环程序 >  多重循环程序

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

多重循环程序在线视频

多重循环程序

下一节:子程序的概念

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

多重循环程序课程教案、知识点、字幕

同学

你好

我们前面学习过了单重循环程序设计的方式

有时候

我们除了要设计单重循环程序之外

还需要来设计多重循环

今天我们就来讲一讲如何来设计

多重循环的方式

程序中有时候经常会出现

循环体中嵌套循环结构

一般以双重循环使用较多

例如将内存一串单字节无符号数

按照升序来进行排序

该串单字节字符有N个

从片内的RAM的TAB这个单元开始连续存放

我们可以看到这个图中所示

那么程序我们采用双重循环的结构

具体的逻辑结构图

我们可以看看我们的PPT中所示

我们先总体看一看程序设计的思路和步骤

这个程序的总体的步骤就是

每次取相邻单元的两个数比较

依据大数放到高地址的单元

决定是否需要交换数据的位置

第一次循环总共要比较N减1次

取到数据表的最大值

第二次循环就需要比较N减2次

取到整个数据表的次大值

依次类推

一直到循环N减1次循环

只需要比较一次

然后排序结束

依据这样的一种设计的思想

我们就给出了具体的双重循环

实现升序排序的程序

程序中我们采用的是计数控制的方式

实现内外循环的控制

其中DJNZ R3,L1指令控制内循环

DJNZ R4,L0指令控制外循环

而指令CJNE A,B,L2

和L2:JNC L3

实现相邻两个单元数据的大小比较

下面我们就来仔细的看一看

这个程序中每一条指令的具体的含义

我们首先来看第一条指令

MOV A,#N减1

该条指令的功能就是实现

对累加器A赋一个初值

大小就是十进制数N减1

第二条指令mov R4,A

就是把累加器A的内容

传送给工作寄存器R4

第三条指令MOV A,R4

就是把工作寄存器R4内容

送给A

第四条MOV R3, A

把累加器A的内容送给工作寄存器R3

紧接着还是MOV R0, #TAB

就是把TAB这个地址值

送给工作寄存器R0

再下面L1:MOV A,@R0

这里面的@R0

用的是一个寄存器的间接寻址

R0指向的

RAM单元的数据取出来送给累加器A

然后再MOV B,A把累加器A内容送给寄存器B

INC R0实现R0的自加一

MOV A,@R0

@R0 也是一个寄存器的间接寻址

把R0指向的RAM单元的数据

取出来送给累加器A

接着就是CJNE A,B,L2

就实现

比较不相等跳转指令

把累加器A和累加器B的内容

和B内容相减

减的结果不反存

但是会影响借位标志位C的状态

如果说有A和B不相等的话

就跳到L2实际上相等

顺序执行也到L2这条指令

因此该条指定的核心就是相当于

是通过CJNE指令来实现

有没有借位的判断

然后再利用 L2: JNC L3

来判断有没有借位

如果没有借位跳到L3处去执行DJNZ这个指令

如果有借位的话

顺序执行后面的DEC R0

把R0自减一个1

然后就是XCH A,@R0

实现累加器A和工作寄存器R0

指向的RAM单位的数据实现互换

这是一个交换指令

在INC R0 把R0自加一个1

再就是MOV @R0,A

把累加器A的内容

送给工作寄存器R0指向的

RAM单元存放

L3: DJNZ R3,L1

就是实现把R3先自减一个1

然后看等不等于0

不等于0就跳到L1处去执行L1的MOV指令

如果等于0

就顺序执行下面的DJNZ R4,L0这个指令

这个指令也是把R4自减一个1

如果减1之后R4不为零

跳到L0处执行L0的MOV指令

如果是为零

就结束整个循环到RET

RET表示程序结束

当然我们这里面仅仅是解释

每条指令的含义

同学们你需要依据我们这个前面提到

程序的逻辑框图

要仔细的体会一下每条指令他所完成的功能

这个任务就交给同学们

你们自己下去之后好好的体会一下

这每条指令具体完成什么样的功能

从中领会双重循环程序设计的精髓

好的

今天课就到这里

同学们再见

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

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

多重循环程序笔记与讨论

也许你还感兴趣的课程:

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