第四章汇编语言程序设计_第1页
第四章汇编语言程序设计_第2页
第四章汇编语言程序设计_第3页
第四章汇编语言程序设计_第4页
第四章汇编语言程序设计_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院第四章第四章 汇编语言程序设计汇编语言程序设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院知识要点:知识要点: 伪指令及其使用方法;伪指令及其使用方法; 顺序结构、分支结构、循环结构程序设计方法;顺序结构、分支结构、循环结构程序设计方法; 子程序、查表程序设计方法;子程序、查表程序设计方法; 数据运算和处理的典型汇编语言实现方法。数据运算和处理的典型汇编语言实现方法。 本章学习目标本章学习目标: 能够读懂汇编程序,并能够编写较为复杂的汇编语言程序,能够读懂汇编程序,并能够编写较为复杂的汇编语言程序,

2、懂得汇编程序仿真软件的使用,懂得调试汇编程序。懂得汇编程序仿真软件的使用,懂得调试汇编程序。4. 汇编语言程序设计汇编语言程序设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4. 汇编语言程序设计汇编语言程序设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院 程序设计语言的种类程序设计语言的种类 程序的编译和汇编程序的编译和汇编 程序设计的基本过程程序设计的基本过程 汇编语言的基本格式汇编语言的基本格式4.1 程序设计概述程序设计概述单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院1、 程序设计语言的种类程序设计语言的种类

3、高级语言高级语言:接近于人的常用语言形式,是一种面向过程:接近于人的常用语言形式,是一种面向过程 而而独立于机器独立于机器的通用语言的通用语言, , 如如C C 语言。语言。void main()char a = 21;char b = 48;char c;c = a + b;4.1 程序设计概述程序设计概述单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院汇编语言汇编语言:它是一种符号语言,是一种:它是一种符号语言,是一种面向机器面向机器的语言的语言。ORG 0000HMOV A,15HADD A,30HMOV R0,ASJMP $END4.1 程序设计概述程序设计概述单

4、片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院机器语言机器语言:是用二进制:是用二进制0,1 表示指令和数据的最原始的程序设计语言。表示指令和数据的最原始的程序设计语言。RAW DATA: E5 15 25 30 F8 80 FEDisassembled DATA:0000E515MOV A,15H 00022530ADD A,30H 0004F8MOV R0,A 000580FESJMP $ 4.1 程序设计概述程序设计概述单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院选择程序设计语言类型的原则是什么?选择程序设计语言类型的原则是什么?4.1 程

5、序设计概述程序设计概述单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院2、 程序的编译、汇编和链接程序的编译、汇编和链接4.1 程序设计概述程序设计概述单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.1 程序设计概述程序设计概述单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院3 3 、 程序设计的基本过程程序设计的基本过程 分析问题分析问题 确定算法确定算法 设计流程设计流程 分配资源分配资源 编写源程序编写源程序 调试、修改调试、修改4.1 程序设计概述程序设计概述单片机原理与应用单片机原理与应用 光学与电子信息学院光学与

6、电子信息学院4 、 汇编语言的基本格式汇编语言的基本格式例:例: 计算计算 21+48ORG 0200HSTART: MOV A, #21; A 21(1 Cycle)ADDA, #48 ; A A48(1 Cycle)MOV R1, A ; R1 A(1 Cycle)SJMP START ; 原地踏步原地踏步 (2Cycles)END标号:标号: 操作码操作码 第一操作数第一操作数, 第二操作数第二操作数 ;注释注释4.1 程序设计概述程序设计概述其中,其中,Cycle:机器周期:机器周期单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院标号的作用标号的作用: 为程序转移

7、和子程序的调用提供转移目的地址。为程序转移和子程序的调用提供转移目的地址。标号的命名方法:标号的命名方法:1)由字母或数字组成)由字母或数字组成, 标号必须以字母开头。标号必须以字母开头。 2)不可使用关键字不可使用关键字,如助记符、寄存器名。,如助记符、寄存器名。 3)建议使用具有描述性的符号)建议使用具有描述性的符号,能够说明程序功能。能够说明程序功能。标号:标号: 操作码操作码 第一操作数第一操作数, 第二操作数第二操作数 ;注释注释4.1 程序设计概述程序设计概述单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院单片机原理与应用单片机原理与应用 光学与电子信息学院光

8、学与电子信息学院 伪指令的作用伪指令的作用 伪指令详解伪指令详解 伪指令的应用伪指令的应用 4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.2.1 伪指令的作用和使用方法伪指令的作用和使用方法伪指令的作用伪指令的作用 写在源文件中,用于控制汇编过程的命令。如设写在源文件中,用于控制汇编过程的命令。如设置程序或数据存储区的地址、定义符号、判断程序是置程序或数据存储区的地址、定义符号、判断程序是否结束等。否结束等。 没有对应的机器码,它是不可执行的指令。没有对应的机器码,它是不可执行的指令。4.2 汇编语言伪指令汇编语言伪指令单片机原理

9、与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院伪指令种类:伪指令种类:ORG:指定语句行装载的起始地址,可以在同一文件中出现多次。:指定语句行装载的起始地址,可以在同一文件中出现多次。END: 指示语句行到此结束,一般出现在程序行结束以前。指示语句行到此结束,一般出现在程序行结束以前。EQU: 赋值指令,用于定义常数,或地址。赋值指令,用于定义常数,或地址。 等同于等同于C中的中的define语句。语句。DATA:定义字节地址。:定义字节地址。BIT: 定义位符号地址。定义位符号地址。DB: 定义字节数据。用于给代码空间的存储单元进行初始化、定义字节数据。用于给代码空间的存储单元

10、进行初始化、 赋值,或定义表格。赋值,或定义表格。DW: 定义字数据,即两个字节。用于给代码空间的存储单元定义字数据,即两个字节。用于给代码空间的存储单元 进行初始化、赋值,或定义表格。进行初始化、赋值,或定义表格。 DS: 预留若干个存储单元,等同于预留若干个存储单元,等同于C中的中的malloc函数。函数。4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院1、ORG (Origin) 汇编起始地址命令汇编起始地址命令 指定语句行装载的起始地址指定语句行装载的起始地址。 命令格式:命令格式:ORG add16 例如,例如, ORG 20

11、00HSTART: MOV A, #40H 上例说明程序的起始地址是上例说明程序的起始地址是2000H,第一条指令就从,第一条指令就从2000H开始存放。开始存放。4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院 在一个源程序中,在一个源程序中,可以多次使用可以多次使用ORG指令指令,以规定不,以规定不同程序段的起始位置,但所规定的地址应是从小到大,同程序段的起始位置,但所规定的地址应是从小到大,不允许有重叠不允许有重叠,即不同的程序段之间不能有重叠。,即不同的程序段之间不能有重叠。 若若ORG指令不带操作数指令不带操作数,则汇编后目标

12、程序的,则汇编后目标程序的 起始地址为起始地址为0000H。4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院2、END 汇编终止命令汇编终止命令 汇编语言源程序结束的伪指令,汇编语言源程序结束的伪指令,表示源程序结束。表示源程序结束。 在在END以后所写的指令,汇编程序都不予以处理,以后所写的指令,汇编程序都不予以处理,即不再翻译。即不再翻译。 一个源程序一个源程序只能有一个只能有一个END指令,放在程序的末尾。指令,放在程序的末尾。4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学

13、院3、EQU(Equate) 赋值指令。赋值指令。 将操作数段中的地址或数据赋值给标号。将操作数段中的地址或数据赋值给标号。 赋值后的标号,其值在整个程序中不改变,可多次使用。赋值后的标号,其值在整个程序中不改变,可多次使用。 命令格式:命令格式: 标号标号 EQU 数或汇编符号数或汇编符号 例如:例如: COUNTEQU16H ; COUNT = 16H ADDREQU3000H ; ADDR = 3000H MOV A,# COUNT ; A = 16H标号与标号与EQU之间不能用之间不能用“:”来作分隔符来作分隔符。4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光

14、学与电子信息学院光学与电子信息学院4、DATA 数据地址赋值指令数据地址赋值指令 将将数据地址数据地址或或代码地址代码地址赋予所规定的标号。赋予所规定的标号。 命令格式为命令格式为: 字符名称字符名称 DATA 表达式表达式例如,例如,MN DATA 10H汇编后,汇编后,MN的值为的值为10H。 DATA指令在程序中常用来定义存放数据的单元字节地址。指令在程序中常用来定义存放数据的单元字节地址。4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院5、BIT 位地址符号命令位地址符号命令 将位地址赋予所规定的字符名称,常用于定义位符号地址。

15、将位地址赋予所规定的字符名称,常用于定义位符号地址。 命令格式为:命令格式为: 字符名称字符名称 BIT 位地址位地址 例如,例如, AA BIT P1.0 BB BIT P2.04.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院6、DB(Define Byte)定义字节命令)定义字节命令 定义字节数据。它的作用是从指定的地址单元开始,定义字节数据。它的作用是从指定的地址单元开始,定义数据或定义数据或ASCII码字符,常用于定义数据常数表。码字符,常用于定义数据常数表。 命令格式:命令格式: 标号标号: DB 字节常数表字节常数表例如:例

16、如: ORG 2000HTAB:DB 14H,26,A DB 0AFH,BC汇编结果:汇编结果:(2000H)14H (2001H)1AH(2002H)41H (2003H)= AFH(2004H)42H (2005H)43H4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院7、DW(Define Word)定义字命令)定义字命令 定义定义16位数据。从指定的地址单元开始,定义若干个字常数,位数据。从指定的地址单元开始,定义若干个字常数,常用于定义常用于定义地址表地址表。 命令格式为:命令格式为:标号标号: DW 字常数表字常数表 例如,

17、例如, ORG 2000HTAB: DW 7423H,00ABH,20汇编结果:汇编结果: (2000H)74H (2001H)23H(2002H)00H (2003H) = ABH(2004H)00H (2005H)14H提示:提示: 一个字占两个存储单元,其中高字节数存入低位地址,一个字占两个存储单元,其中高字节数存入低位地址,低字节数存入高位地址,即顺序存放。低字节数存入高位地址,即顺序存放。4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院8、DS(Define Store)定义存储区)定义存储区 定义存储区。从指定的地址开始,保

18、留一定数量的内存单定义存储区。从指定的地址开始,保留一定数量的内存单元,以备程序使用,其区域的大小由指令的操作数确定。元,以备程序使用,其区域的大小由指令的操作数确定。 命令格式:命令格式: 标号:标号: DS 数值数值 例如:例如: ORG 1000HDS 5DB 23H汇编结果:从地址汇编结果:从地址1000H开始,保留开始,保留5个字节个字节的内存单元,而的内存单元,而(1005H)=23H4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院汇编语言伪指令应用实例汇编语言伪指令应用实例4.2 汇编语言伪指令汇编语言伪指令单片机原理与应

19、用单片机原理与应用 光学与电子信息学院光学与电子信息学院ORG的的 应用:应用:4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院EQU、DATA的应用:的应用:4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院BIT的应用:的应用:4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院DB、DW的的 应用:应用:4.2 汇编语言伪指令汇编语言伪指令单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院 使用使用DB

20、、DW定义字符时可以用单引号,也可以定义字符时可以用单引号,也可以用双引号,其作用等同。用双引号,其作用等同。4.2 汇编语言伪指令汇编语言伪指令程序装载之后,程序空间显示结果:程序装载之后,程序空间显示结果:单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计程序的基本结构程序的基本结构顺序顺序分支分支循环循环子程序子程序单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3.1 顺序结构顺序结构例:编写程序实现两个例:编写程序实现

21、两个 16bits 无符号数的加法。无符号数的加法。 (徐徐-例例 4.1) X+Y = 0 x5678 + 0 x9876 1、基本原理分析、基本原理分析 1)分两次完成,每次)分两次完成,每次完成完成 8位加法。位加法。2)采用间接寻址方式,)采用间接寻址方式,读取加数和被加数,读取加数和被加数,以及保存结果。以及保存结果。ADDC ADDC ADDADD4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院 2、资源分配、资源分配 33H、32H:存放被加数,以及结果存放被加数,以及结果 37H、36H:存放加数存放加数

22、 22H.0 :存放和的最高位存放和的最高位 R0、R1: 数据指针数据指针 4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院 3、流程图、流程图4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院 4、 源程序源程序4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计 5、程序调试与测试、程序调试与测试 调试方法:调试方法:单步、

23、断点调试方法单步、断点调试方法 程序测试:程序测试:考虑有进位和没有进位两种情况。考虑有进位和没有进位两种情况。单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院思考:思考: 1. 保存和的最高位还有哪些方法?保存和的最高位还有哪些方法? 2. 如何实现多字节数的减法?如何实现多字节数的减法? 3. 如何实现多字节如何实现多字节 BCD 码数的加法,码数的加法, 以及减法?以及减法? 4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院两个两个16位数加法(位数加法(C51 实现参考)实现参考)4.3 汇

24、编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院#include unsigned int data a = 0; /定义被加数变量定义被加数变量 unsigned int data b = 0; /定义加数变量定义加数变量 bit c; /定义进位位变量定义进位位变量 void main(void) a = 0 x5678; /赋值被加数赋值被加数 b = 0 xF876; /赋值加数赋值加数 a = a + b; c = CY; /保存进位位保存进位位 4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机

25、原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计 在源文件中如果需要对芯片的寄存器进行操作,就必须在源文件中如果需要对芯片的寄存器进行操作,就必须 通过通过include 引述引述 头文件头文件reg52.h! 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计unsigned int data a = 0; /定义被加数变量定义被加数变量 unsigned int data b = 0; /定义加数变量定义加数变量 bit c; /定义位变量定义位变量 a 分配到分配到

26、 片上片上08H, 09H 单元单元b 分配到分配到 片上片上0AH, 0BH 单元单元c 分配到分配到 20H.0Compiling.单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计a 分配到分配到 片外数据片外数据0000H, 0001H 单元单元b 分配到分配到 片外数据片外数据0002H, 0003H 单元单元 unsigned int xdata a = 0; /定义被加数变量定义被加数变量 unsigned int xdata b = 0; /定义加数变量定义加数变量 单片机原理与应用单片机原理与应用 光学与

27、电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计存储类型存储类型 描述描述code程序存储区程序存储区(64 KBytes),由操作码,由操作码“MOVC A+DPTR”访问访问 data直接寻址内部数据存储区直接寻址内部数据存储区idata间接寻址内部数据存储区,可访问全部内部地址空间间接寻址内部数据存储区,可访问全部内部地址空间(256 Bytes)bdata可位寻址内部数据存储区,支持位和字节混合访问。可位寻址内部数据存储区,支持位和字节混合访问。xdata外部数据存储区外部数据存储区(64 KBytes),由操作码,由操作码“MOVX DPTR”访问访

28、问 pdata分页分页(256 Bytes)外部数据存储区,由操作码外部数据存储区,由操作码“MOVX Ri访问访问 C51变量的存储类型变量的存储类型单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计存储器模式存储器模式描述描述SMALL参数及局部变量放入可直接寻址的内部存储器参数及局部变量放入可直接寻址的内部存储器(最大最大128 B,默认存储器类型为,默认存储器类型为 data )COMPAT参数及局部变量放入分页外部存储区参数及局部变量放入分页外部存储区(最大最大256 B,默认存储器类型为,默认存储器类型为 pd

29、ata ) LARGE参数及局部变量直接放入外部数据存储器参数及局部变量直接放入外部数据存储器(最大最大64 KB,默认存储器类型为,默认存储器类型为 xdata ) C51的存储器模式的存储器模式单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3.2 分支结构程序设计分支结构程序设计 分支结构形式与转移指令分支结构形式与转移指令 典型分支结构设计典型分支结构设计 二分支结构二分支结构 三分支结构三分支结构 散转结构散转结构4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3.2 分支结构程序

30、设计分支结构程序设计分支结构形式分支结构形式if thenelse 4.3 汇编语言程序结构与设计汇编语言程序结构与设计switch ( )单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院转移指令转移指令1. 无条件转移无条件转移 SJMP :短跳转,转移范围短跳转,转移范围128 B 127B AJMP :绝对跳转,转移范围绝对跳转,转移范围2KB LJMP :长跳转长跳转 ,转移范围,转移范围64KB JMP : 散转指令,实现多分支散转指令,实现多分支2. 条件转移条件转移JZ /JNZ ;测试;测试AJC/JNC;测试;测试Cy JB/JBC/JNB ;测试某一比

31、特位;测试某一比特位CJNE ;比较两数的大小;可用于形成三分支结构;比较两数的大小;可用于形成三分支结构 DJNZ ;可用于循环结构;可用于循环结构4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院1、二分支结构设计、二分支结构设计例:求取例:求取|x|(x 为为8bits 符号数)符号数)解:基本原理解:基本原理 当当x 255时,时, 需要执行需要执行 INC DPHNEXT:JMP A+DPTR ;散转;散转ENTRY: LJMP R_KEY0; 转移指令表转移指令表: 3 字节字节LJMP R_KEY1LJMP

32、R_KEY2 LJMP R_KEY99LJMP指令与散转结构指令与散转结构 (zf) 99 3 = 297 = 1 29 H单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计;MAJMP.asmORG 0400HSTART: MOV DPTR, #ENTRY ;赋指令表入口地址;赋指令表入口地址MOV A, R3;计算偏移量;计算偏移量ADD A, R3JMP A+DPTR ;散转;散转ENTRY:AJMP R_KEY0; 转移指令表转移指令表: 2 字节字节AJMP R_KEY1AJMP R_KEY2R_KEY0: CL

33、R P1.0SJMP STARTR_KEY1: SETB P1.0SJMP STARTR_KEY2: MOV P1, #0AAHSJMP STARTENDAJMP指令与散转结构指令与散转结构 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计4.3.3 循环结构循环结构 基本知识基本知识 循环结构三要素循环结构三要素 典型程序设计典型程序设计 延时程序延时程序 数据块求和、寻找最大数、均值滤波数据块求和、寻找最大数、均值滤波 4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信

34、息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计 1、基本知识、基本知识应用背景:常常某一段代码需要执行多次。应用背景:常常某一段代码需要执行多次。常见常见C 语言形式语言形式1)for (i=0; i(R1)转转NEXT MOV A, R1 ;A(R1), A (R1) SJMP NEXT1NEXT: ADD A,R1 ;恢复;恢复ANEXT1: INC R1 DJNZ R2, LOOP MOV MAX, A ;存结果;存结果LP: SJMP LP单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与

35、设计思考:思考: 1. 若寻找最小数,应如何修改程序若寻找最小数,应如何修改程序? 2. 比较两数的大小还可使用什么指令?有何特点?比较两数的大小还可使用什么指令?有何特点? 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计比较转移指令比较转移指令CJNE A, direct,relCJNE A,#data,relCJNE Rn,#data,relCJNE Ri,#data,relCJNE指令不改变第一、第二操作数的内容。指令不改变第一、第二操作数的内容。单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息

36、学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计例:例: 均值滤波均值滤波 (胡(胡 例例 4.2.12) 求算术平均值求算术平均值 在数据采集系统中,常采用算术平均滤波的方法对采样值进行平在数据采集系统中,常采用算术平均滤波的方法对采样值进行平滑加工,即在一个采样周期中把滑加工,即在一个采样周期中把N N次采样的值相加,然后除以采样次次采样的值相加,然后除以采样次数数N N,便得到该采样周期的值,设从,便得到该采样周期的值,设从P1P1口读入采样数据,在一个采样口读入采样数据,在一个采样周期内连续采样周期内连续采样8 8次,要求计算机它的平均值次,要求计算机它的平均值。 应用领域:数

37、字滤波应用领域:数字滤波 基本原理:基本原理: y(X1+X2+X3+X8)8 利用利用RRC 指令实现双字节除指令实现双字节除8单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计 资源分配:资源分配:R0R0、R1R1: 累加和,前者存放高位累加和,前者存放高位R2R2: 计数器计数器单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计1000 10010100 10001000 100100100 01001R0R1CyCy0100 10001010

38、 01000CyRRC RRC 如何实现双字节无符号数右移一次?如何实现双字节无符号数右移一次?单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计如何保证从如何保证从P1口正确输入采样值?口正确输入采样值? 编程中不要忘记写编程中不要忘记写“读预备指令读预备指令” MOV P1, # 0FFH ; 读预备指令读预备指令 ;保证;保证P1 能够正确输入外部信息能够正确输入外部信息 MOV A, P1 ; 读入电压值读入电压值MOV A, P1;读引脚,;读引脚, 执行过执行过程中会发出程中会发出read pin 信号信号 。

39、单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计均值滤波均值滤波源程序源程序单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计4.3.4 查表程序设计查表程序设计 表格的用途表格的用途 表格的定义方法表格的定义方法 表格的结构和表项地址求取方法表格的结构和表项地址求取方法 查表指令查表指令 查表程序典型应用查表程序典型应用 应用应用1:已知十六进制数,求取其:已知十六进制数,求取其ASCII 应用应用2:利用散转地址表,实现多分支:利用散转地址表,实

40、现多分支 应用应用3:利用顺序查表法,寻找关键字符:利用顺序查表法,寻找关键字符单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计4.3.4 查表程序设计查表程序设计表格表格是计算机的一种基本数据结构。是计算机的一种基本数据结构。查表法查表法是一种非数值计算方法,不需复杂计算。是一种非数值计算方法,不需复杂计算。主要优点主要优点:可以大大简化程序,提高程序执行速度。:可以大大简化程序,提高程序执行速度。主要缺点主要缺点:如果表格过大,会占用较多的存储单元。:如果表格过大,会占用较多的存储单元。常用查表方法常用查表方法:计算

41、查表法、顺序查表法、对分查表法。:计算查表法、顺序查表法、对分查表法。单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计1、表格的用途、表格的用途例:求例:求sin(x)=?sin(x)=x-x3/3!+x5/5!-+(-1)nx2n+1/(2n+1)!+求函数值、传感器非线性校正、码制转换、求函数值、传感器非线性校正、码制转换、LED 字模转换字模转换2、表格的定义方法、表格的定义方法 (zf)表格使用表格使用DB、DW 伪指令定义,存放于代码段中。伪指令定义,存放于代码段中。单片机原理与应用单片机原理与应用 光学与电子

42、信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计3、表格的结构和表项地址求取方法、表格的结构和表项地址求取方法表项首地址表首地址表项序号表项首地址表首地址表项序号表项大小表项大小表项序号:表项序号:0,1,2,3表项大小:表项大小:8单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计4、查表指令查表指令MOVC A, A + DPTR ;对应于;对应于DPTR 查表方式查表方式MOVC A, A + PC ;对应于;对应于PC 查表方式查表方式5、查表程序典型应用、查表程序典型应用 应用应用1

43、:已知十六进制数,求取其:已知十六进制数,求取其ASCII 应用应用2:利用散转地址表,实现多分支:利用散转地址表,实现多分支 应用应用3:利用顺序查表法,寻找关键字符:利用顺序查表法,寻找关键字符单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计例:利用查表法求取字符例:利用查表法求取字符0F 的的ASCII 码码 (lkup1.asm)基本原理:基本原理: 利用利用 DB 语句定义字符的语句定义字符的 ASCII 码表;码表; 利用利用 MOVC 指令读取程序空间中的表格内容。指令读取程序空间中的表格内容。 采用采用

44、DPTR 方式查表时,方式查表时,DPTR的初始值为表格首地址。的初始值为表格首地址。 采用采用 PC 方式查表时,需要计算方式查表时,需要计算PC与表格首地址间的偏移量。与表格首地址间的偏移量。单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计寻找寻找ASCII单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计指令长度估算方法:指令长度估算方法: 指令基本长度为指令基本长度为1 字节;字节; 逢立即数(逢立即数(8bits)长度加)长度加1; 逢立即

45、数(逢立即数(16bits)长度加)长度加2; 逢直接寻址方式,指令长度加逢直接寻址方式,指令长度加1。单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计两种查表方式特点比较两种查表方式特点比较单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计例例 :利用散转地址表实现多分支:利用散转地址表实现多分支 基本原理:基本原理: 利用利用 DW 伪指令将程序入口地址定义在程序空间中;伪指令将程序入口地址定义在程序空间中; 利用利用 MOVC 分两次读取分两次

46、读取16位散转地址;位散转地址; 利用利用 JMP 指令实现散转。指令实现散转。 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计例例 :利用散转地址表实现多分支:利用散转地址表实现多分支 解解 :利用:利用DW伪指令将程序入口地址定义在程序空间中。伪指令将程序入口地址定义在程序空间中。散转地址散转地址散转地址存放散转地址存放的单元地址的单元地址单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计源程序源程序:利用散利用散转地址转地址表实现表实现多分支

47、多分支MDWJMP.asm 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计例:利用顺序查表,在无序表中查找关键字。例:利用顺序查表,在无序表中查找关键字。任务要求:任务要求: 有一个长度为有一个长度为100字节的表格,其中数据无序存放,在其中找字节的表格,其中数据无序存放,在其中找出出KEY,并记录其在表中的地址号。若表中无此关键字,则返回,并记录其在表中的地址号。若表中无此关键字,则返回0。基本原理:顺序读取表中内容,将其与基本原理:顺序读取表中内容,将其与KEY比较,判断是否相同。比较,判断是否相同。单片机原理与应

48、用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计采用采用DPTR查表方式,其步骤:查表方式,其步骤:1)表的起始地址送入)表的起始地址送入DPTR;2)表格的长度放在某一个寄存器中)表格的长度放在某一个寄存器中;3)要查找的关键字放在某一内存单元中)要查找的关键字放在某一内存单元中;4)用)用MOVC A, A+DPTR指令取数指令取数;5)用)用CJNE A,direct,rel 指令判断是否是要找的关指令判断是否是要找的关键字。键字。单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设

49、计汇编语言程序结构与设计 流程图流程图单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计无序表无序表中搜索中搜索关键字关键字单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计调试结果:调试结果:当(当(KEY)= 08H, 即希望查找数据即希望查找数据 8程序运行后有:程序运行后有:单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计思考:1)如果不知道表的长度,但知道表格的结束标志

50、是)如果不知道表的长度,但知道表格的结束标志是 $, 应该如何修改程序?应该如何修改程序?2)表格能放在上电入口)表格能放在上电入口0000H的地方吗?的地方吗? 为什么?为什么? 会有什么严重后果?会有什么严重后果? ORG 0000H DB ! , 3, 4, 8, 10, 4,. 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计2)表格能放在上电入口)表格能放在上电入口0000H的地方吗?的地方吗? ORG 0000HDB ! , 3, 4, 8, 10, 4,.不能!不能!程序汇编和装载以后,程序空间结果如下:程

51、序汇编和装载以后,程序空间结果如下:反汇编结果:反汇编结果: 表格数据被解表格数据被解析为指令,导致结析为指令,导致结果不可预见。果不可预见。单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计4.3.5 子程序设计子程序设计 子程序的作用子程序的作用 调用和返回指令调用和返回指令 子程序的定义和调用方法子程序的定义和调用方法 参数传递方法参数传递方法 典型应用典型应用 :多字节加法:多字节加法 现场与现场保护方法现场与现场保护方法 堆栈冲突及其规避堆栈冲突及其规避 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与

52、电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计子程序的作用子程序的作用:提高程序的模块性,压缩代码长度。:提高程序的模块性,压缩代码长度。4.3.5 子程序设计子程序设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计子程序设计要素:子程序设计要素:1)子程序需命名。子程序的第一条指令应加标号,)子程序需命名。子程序的第一条指令应加标号, 以便调用。以便调用。2)要正确传送参数。)要正确传送参数。3)注意保护和恢复现场。)注意保护和恢复现场。4)子程序的末尾必须是)子程序的末尾必须是RET指令。指令。单

53、片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计1、调用和返回指令、调用和返回指令调用指令:调用指令:LCALL,ACALL返回指令:返回指令:RET ,RETI(用于中断返回)(用于中断返回)ACALL : 绝对调用绝对调用LCALL: 长调用长调用 RET: 子程序返回子程序返回单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计LCALL addr16 ;PCPC+ 3, ;SPSP+1,(SP)PC70 ;SPSP+1,(SP) PC158 ;P

54、Caddr16单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计 RET ;PC158(SP),SPSP-1;PC70(SP),SPSP-1 子程序返回指令。子程序返回指令。 功能:将堆栈内的返回地址送入功能:将堆栈内的返回地址送入PC, 使使CPU返回到原断点地址处,继续执行原程序。返回到原断点地址处,继续执行原程序。 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计2、子程定义和调用方法、子程定义和调用方法ORG 0030HSTART: MOV

55、SP, # 40HAGAIN: SETB P1.0LCALL DELAYCLR P1.0LCALL DELAYSJMP AGAIN;-DELAY: MOV R6, # 40DLOOP: NOPDJNZ R6, DLOOPRETEND单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计LCALL 指令执行后:指令执行后: 返回地址返回地址 0038H 存入堆栈,存入堆栈,SP指针向上移动两个单元指针向上移动

56、两个单元380041H42Hxx40HSP单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计准备执行准备执行LCALL指令指令.SP 0 x40SP - max 0 x40单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计PC转移到子程序转移到子程序DELAY的入口的入口SP 0 x42SP - max 0 x42单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计PC返回主程序返回

57、主程序SP 0 x40SP - max 0 x42单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计片上片上RAM空间空间 信息信息 0 x40: 00 00 00 00 00 片上片上RAM空间空间 信息信息 0 x40: 00 38 00 00 00 单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计3、参数传递方法、参数传递方法入口参数:入口参数: 子程序执行中所必须的子程序执行中所必须的寄存器值寄存器值或或存储单元内容存储单元内容(或地址)(或

58、地址) 。出口参数:出口参数: 子程序执行完毕后,结果存放的子程序执行完毕后,结果存放的寄存器或存储单寄存器或存储单元元(或地址)。(或地址)。单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计MOV A, #4LCALL SQRSQR: MOV B, AMUL ABRET 入口参数入口参数: A 出口参数出口参数: A, B单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计入口参数、出口参数传递方法入口参数、出口参数传递方法:1. 利用利用A2. 利

59、用寄存器,或存储单元利用寄存器,或存储单元3. 利用堆栈利用堆栈MOV R6,40HLCALL DELAY;-DELAY: NOPDLOOP: NOP DJNZ R6, DLOOP RET单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计例:两个例:两个3字节数加法字节数加法 入口参数:入口参数:R0,R1 出口参数:出口参数:R020H21H22H30H31H32H20H21H22H+23HR0R1单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计多

60、字节加法多字节加法单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计思考:程序执行后,思考:程序执行后,R0指向哪个单元?指向哪个单元?20H21H22H30H31H32H20H21H22H+23HR0R1R0单片机原理与应用单片机原理与应用 光学与电子信息学院光学与电子信息学院4.3 汇编语言程序结构与设计汇编语言程序结构与设计 4、现场保护、现场保护何谓何谓“现场现场”?如何保护?如何保护?ORG 0100HMOV R0, #30HMOV R2, #0AHCLR ALOOP: MOV R0, AINC R0ACALL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论