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

下载本文档

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

文档简介

1、第7章 汇编语言程序设计7.1 伪指令7.2 算术运算程序的设计7.3 循环程序的设计7.4 查表程序的设计7.5 检索程序的设计7.6 分支程序的设计7.7 码制转换程序的设计7.8 逻辑操作程序主要内容10/13/20221单片机原理及其应用第7章 汇编语言程序设计7.1 伪指令主10/11/2022第7章 汇编语言程序设计 程序设计是为了解决某一个问题,把指令(或语句)按照一定的意图有序地组合在一起。 目前,基于MCS-51单片机的程序开发设计有采用汇编语言和高级语言2种形式,高级语言有采用C语言、BASIC语言、PLM语言等,大多数集成开发环境(Integrated Developme

2、nt Environment,IDE)软件都支持这2种形式。 10/13/20222单片机原理及其应用第7章 汇编语言程序设计 程序设计是为了解决某一个汇编程序设计的步骤: (1)分析题目或课题的要求,正确理解解决什么问题,如何解决问题、有哪些可利用的资源、对计算精度的要求等;另外,了解应用系统硬件的结构和功能与课题任务的关联。(2)确定解决问题的方案,画出程序流程框图;(2)根据解决方案,确定变量及其数据存储格式,给各个变量分配存储空间;(3)根据程序流程图,选用合适的指令编写程序,完成源程序的设计;(4)在集成开发环境上调试,完成设计要求的功能。第7章 汇编语言程序设计10/13/2022

3、3单片机原理及其应用汇编程序设计的步骤: 第7章 汇编语言程序设计10/11/27.1 伪指令 伪指令(Pseudo Instruction)是汇编语言中起解释说明的命令,它不是单片机的指令。 在单片机的集成开发环境中,向汇编系统说明程序存储在程序存储器的哪个区域、本汇编语言程序到何处结束、变量代号对应的单元地址或所代表的数值等。在汇编时,伪指令不会产生目标代码,不影响程序的执行。 10/13/20224单片机原理及其应用7.1 伪指令 伪指令(Pseudo Instru7.1 伪指令常用的有以下几种伪指令:(1)设置起始地址伪指令ORG ORG xxxxH如: ORG 0100H SUB:

4、MOV R0, #30H (2)赋值伪指令EQU 变量代号 EQU 数值如: LEN EQU 20; 在程序中变量LEN的值为20H XdataEQU 4F8BH;在程序中变量Xdata的值 为4F8BH10/13/20225单片机原理及其应用7.1 伪指令常用的有以下几种伪指令:10/11/202257.1 伪指令(3)定义字节数据伪指令DB xxxxH DB data如: 2000H DB 30H; 伪指令DB也可用来定义多个连续单元为常数,即用来定义一组单字节数据组成的常数表。如: ORG 1000H DB 30H,31H,32H,33H,34H,35H,36H, 37H,38H,39H

5、, 2EH,0DH10/13/20226单片机原理及其应用7.1 伪指令(3)定义字节数据伪指令DB10/11/2027.1 伪指令(4) 定义双字节数据伪指令DW xxxxH DWdata16如:1000H DW 0FDE1H 1100H DW 1345, 2241, 34556(5) 位地址赋值伪指令BIT 变量代号BIT位地址如: CSBITP2.0 FLAG BIT20H.6(6) 汇编结束伪指令END END10/13/20227单片机原理及其应用7.1 伪指令(4) 定义双字节数据伪指令DW10/11/27.2 算术运算程序的设计 在MCS-51单片机指令系统中,算术运算指令仅支持

6、2个无符号的8位二进制数的运算,二进制数算术运算是按字节的方式进行的。10/13/20228单片机原理及其应用7.2 算术运算程序的设计 在MCS-51单片机指7.2 算术运算程序的设计例1 多字节二进制加法。 以三字节无符号二进制数为例,算法如图7.1所示,图中一个方框代表一个单元。Cy表示进位。当最低字节(低8位)运算时,如果令Cy为0,那么,完成3个字节的加法运算进行了3次相同的单字节加法操作,可以采用循环结构实现2个3字节数据的加法运算。 图7.1 二进制数加法算法10/13/20229单片机原理及其应用7.2 算术运算程序的设计例1 多字节二进制加法。图7.1 7.2 算术运算程序的

7、设计例2 多字节二进制减法。 多字节二进制减法与多字节二进制加法相似,图7.2为3字节二进制减法的算法。 图7.2 减法算法10/13/202210单片机原理及其应用7.2 算术运算程序的设计例2 多字节二进制减法。 图7.27.2 算术运算程序的设计例3 多位十进制数加法。 十进制数在计算机中可以采用BCD码的形式存放。采用紧凑形式(或压缩式)BCD码存放十进制数时,一个存储单元可以存储2位。MCS-51单片机仅支持二进制加法运算,采用ADD和ADDC指令的结果是二进制数,因此,2个以BCD码形式存储的数据,在用ADD和ADDC运算之后,必须对其运算结果进行调整。多位十进制数加法的算法与多字

8、节二进制数算法相似,如图7.3所示。10/13/202211单片机原理及其应用7.2 算术运算程序的设计例3 多位十进制数加法。10/117.2 算术运算程序的设计图7.3 多位十进制加法算法10/13/202212单片机原理及其应用7.2 算术运算程序的设计图7.3 多位十进制加法算法10/7.2 算术运算程序的设计例4 多位十进制减法 在第3章的例30中,我们介绍了2位十进制数减法算法:XYX100Y X9AHY,把十进制减法变换成二进制减法(求十进制减数的补码)和十进制加法2步进行。多位十进制数减法也采用了同样的算法。设被减数存放在20H开始的内部RAM存储单元,减数存放在30H开始的存

9、储单元,6位十进制数减法的程序如下10/13/202213单片机原理及其应用7.2 算术运算程序的设计例4 多位十进制减法10/11/27.2 算术运算程序的设计(1)2位十进制数减法子程序:入口条件:R0指出被减数所在单元的地址;R1指出减数 所在单元的地址;出口条件:R0指出差所在单元的地址,进位在Cy中; SH_SUB: MOV A, #9AHSUBB A, R1ADD A, R0DA AMOV R0, AINC R0INC R1CPL CRET10/13/202214单片机原理及其应用7.2 算术运算程序的设计(1)2位十进制数减法子程序:107.2 算术运算程序的设计(2)6位十进制

10、数加法程序:MOV R0, #20HMOV R1, #30HMOV R5, #03HCLR C DOSUB:ACALL SH_SUB DJNZ R5, DOSUB RET10/13/202215单片机原理及其应用7.2 算术运算程序的设计(2)6位十进制数加法程序:10/7.2 算术运算程序的设计例5 多字节数二进制乘法 2个多字节二进制数乘法的算法与按位进行十进制数乘法相似。把它转换为几个多字节与单字节的乘法运算,先分别计算出它们的部分积,然后按照规则把部分积累加计算出乘积。 图7.4为2个16位二进制数相乘的算法原理图。图中被乘数为X,其高八位和低八位分别存储在XH和XL单元,乘数为Y,Y

11、H和YL分别高八位和低八位存储单元。10/13/202216单片机原理及其应用7.2 算术运算程序的设计例5 多字节数二进制乘法10/117.2 算术运算程序的设计 算法分2步进行:首先,分别用乘数的高八位和低八位与被乘数相乘,计算部分积,分别存储在(XYH3),(XYH2),(XYH1)和 (XYL3),(XYL2)(XYL1)单元;在编写程序时,乘法运算可以用子程序调用的方法实现(第3章例33)。第二步,采用加法运算求出乘积存储在(XY4)(XY3)(XY2)(XY1)单元。10/13/202217单片机原理及其应用7.2 算术运算程序的设计 算法分2步进行:首先,分7.2 算术运算程序的

12、设计图7.4 2个16位二进制数乘法算法10/13/202218单片机原理及其应用7.2 算术运算程序的设计图7.4 2个16位二进制数乘法算7.2 算术运算程序的设计例6 多字节二进制除法 2个多字节无符号二进制数的除法是采用移位和减法运算实现的,实现过程与我们进行十进制数乘法形似,每次进行除法运算时,如果余数大于减数(构件)则商1,否则,商0。图7.5为16位二进制数除以8位二进制数的程序流程图。该算法要求被除数的高八位数据必须小于除数,否则,作为溢出处理,子程序把标志位OV的状态置为1,从子程序返回。10/13/202219单片机原理及其应用7.2 算术运算程序的设计例6 多字节二进制除

13、法10/11/7.2 算术运算程序的设计图7.5 除法程序流程图10/13/202220单片机原理及其应用7.2 算术运算程序的设计图7.5 除法程序流程图10/117.3 循环程序的设计(一)循环结构的组成 循环结构由4部分组成:初始化部分、循环处理部分、循环控制部分和循环结束部分。循环结构组成图见图7.6。图7.6 循环结构组成10/13/202221单片机原理及其应用7.3 循环程序的设计(一)循环结构的组成图7.6 循环结7.3 循环程序的设计 汇编语言程序设计中常见的典型循环结构如图7.7所示。(1)先处理后判断的结构 (2)先判断后处理的结构 图7.7 典型循环结构10/13/20

14、2222单片机原理及其应用7.3 循环程序的设计 汇编语言程序设计中常见的典7.3 循环程序的设计(二)循环程序设计举例 例7 设单片机系统采集的8个单字节数据存储在单片机内部RAM的30H开始的连续单元中,求它们的均值。 计算一组数据平均值的公式为: ,其中, 为第i个数据,N为数据的个数。因此,要计算出平均值需要进行2种运算:求数据的总和、数据总和除以数据个数。(1)求数据的总和 设S为数据的总和,在计算机中求多个数据总和的算法如下: 该算法的程序流程框图见图7.8 10/13/202223单片机原理及其应用7.3 循环程序的设计(二)循环程序设计举例 7.3 循环程序的设计图7.8 多个

15、数据求总和的流程图10/13/202224单片机原理及其应用7.3 循环程序的设计图7.8 多个数据求总和的流程图10/7.3 循环程序的设计例8 设有一个字符串以回车符(ASCII码为0DH)为结束标志,并存放在内部RAM的40H单元开始的连续存储单元中,编写测试字符串长度的程序。 这是一个循环次数未知的循环程序设计例题。为了测试字符串的长度,字符串中的每个字符依次与回车符(0DH)比较,如果比较不相等,则字符串长度计数器加1,继续测试;如果比较相等,表示该字符为回车符,则字符串结束,长度计数器的值就是字符串的长度。程序流程框图如图7.9所示。10/13/202225单片机原理及其应用7.3

16、 循环程序的设计例8 设有一个字符串以回车符(ASCI7.3 循环程序的设计图7.9 测试字符串长度的程序流程框图 10/13/202226单片机原理及其应用7.3 循环程序的设计图7.9 测试字符串长度的程序流程框图7.3 循环程序的设计(1)硬件电路原理图 (2)发光二极管布置示意图 图7.10 循环闪烁系统原理与布置示意图10/13/202227单片机原理及其应用7.3 循环程序的设计(1)硬件电路原理图 7.3 循环程序的设计 例9循环闪烁系统原理与布置示意图如图7.10所示,MCS-51单片机的P1口控制8个发光二极管。编制一个循环闪烁的程序,要求每次相邻的2个发光二极管为1组闪烁点

17、亮3次后,转移到下一组,8个发光二极管显示1遍后,全部点亮,然后熄灭,又以每组2个灯的方式闪烁显示,如此不断循环。10/13/202228单片机原理及其应用7.3 循环程序的设计 例9循环闪烁系统原理与布置7.3 循环程序的设计图7.11 循环闪烁系统的程序流程图10/13/202229单片机原理及其应用7.3 循环程序的设计图7.11 循环闪烁系统的程序流程图17.4 查表程序的设计 查表程序是一种在单片机应用系统中常用的程序,例如,显示输出时,利用查表程序提取字型编码,数值运算时,利用它可以避免进行复杂的程序运算或转换运算,可以完成数据插补、修正、计算、转换等功能 。10/13/20223

18、0单片机原理及其应用7.4 查表程序的设计 查表程序是一种在单片机应7.4 查表程序的设计例10 设字符09、AF的ASCII码已作为常数存储在程序存储器中,编写子程序由给定x( )查找其对应的ASCII码。 ASCII码为七位二进制编码,一个单元也可存储一个字符的ASCII码。如果ASCII码表存放在以ASC_TAB单元开始的区域,那么,存储ASCII码的单元地址与x的关系为:ASC_TABx。设存储在寄存器R2中,从子程序返回时ASCII码存储在R2中,子程序程序如下:10/13/202231单片机原理及其应用7.4 查表程序的设计例10 设字符09、AF的ASCI7.4 查表程序的设计C

19、HECHUP: MOV DPTR, #ASC_TAB;设置表的首地址 MOV A,R2;取x MOVCA,A+DPTR;查表取ASCII码 MOVR2,A;存查到的ASCII码 RETASC_TAB: DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H, 46H10/13/202232单片机原理及其应用7.4 查表程序的设计CHECHUP: MOV D7.5 检索程序的设计 数据检索为关键字查找,通常有两种方法:顺序检索和对分检索。本节介绍前者,对分检索请参阅相关资料。 数据检索顺序检索对

20、分检索10/13/202233单片机原理及其应用7.5 检索程序的设计 数据检索为关键字查找,通常7.5 检索程序的设计 例15 设内部RAM有一单字节无符号数数据块,存储在以30H单元为首地址的区域中。长度为50个字节,试编程找出其中最小的数,并放在20H单元。如图7.13例15的程序流程图。 10/13/202234单片机原理及其应用7.5 检索程序的设计 例15 设内部RAM有一单字7.5 检索程序的设计图7.13例15的程序流程图10/13/202235单片机原理及其应用7.5 检索程序的设计图7.13例15的程序流程图10/117.5 检索程序的设计 例16 从一个字符串找出一个A的

21、关键字,字符串的结束标志为EOF。 设字符串存放在20H单元开始的区域,字符以ASCII码形式存储,找到关键字标志位F0置1,否则清0。如图7.14 例16程序流程图。10/13/202236单片机原理及其应用7.5 检索程序的设计 例16 从一个字符串找出一7.5 检索程序的设计图7.14 例16程序流程图10/13/202237单片机原理及其应用7.5 检索程序的设计图7.14 例16程序流程图10/117.6 分支程序的设计 分支程序主要是根据判断条件的成立与否来确定程序的走向。可组成简单分支结构和多分支结构。(一)单分支选择结构 当程序的判断仅有两个出口,两者选一,称为单分支结构。通常

22、用条件判断指令来选择并确定程序的分支出口。这类单分支选择结构有三种典型的形式,见图7.15。(1)如果条件满足,执行程序段2,否则,执行程序段1,结构如图7.15(1)。(2)如果条件满足,则不执行程序段1,仅执行程序段2;否则,先执行程序段1,再执行程序段2。结构如图7.15(2)。(3)在图7.15(3)中,当条件不满足时,重复执行程序段1,只有当条件满足时,才停止执行程序段2。10/13/202238单片机原理及其应用7.6 分支程序的设计 分支程序主要是根据判断条件的成7.6 分支程序的设计(1) (2) (3) 图7.15 单分支选择结构10/13/202239单片机原理及其应用7.

23、6 分支程序的设计(1) 7.6 分支程序的设计(二)多分支选择结构 当程序的判别部分有两个以上的出口流向时,称为多分支选择结构。如图7.16所示。图7.16 多分支选择结构10/13/202240单片机原理及其应用7.6 分支程序的设计(二)多分支选择结构图7.16 多分支7.6 分支程序的设计 例17 和为2个带符号单字节数据,以原码方式存放,编制程序求它们的乘积。 MCS-51单片机的乘法指令支持2个8位无符号二进制数相乘,2个带符号二进制数相乘,的方法如下:2个数符号相同,乘积符号为正,数值为2个数绝对值之积;2个数符号相异,乘积符号为负,数值为2个数绝对值之积。带符号二进制乘法的程序

24、流程图如图7.17所示。10/13/202241单片机原理及其应用7.6 分支程序的设计 例17 和为2个带符号单字节数7.6 分支程序的设计图7.17 带符号二进制乘法的程序流程图10/13/202242单片机原理及其应用7.6 分支程序的设计图7.17 带符号二进制乘法的程序流程7.6 分支程序的设计 例18 设变量的值存放在内部RAM的30H单元中,编程求解下列函数式,将求得的函数值存入40H单元。图7.17 例18程序设计框图10/13/202243单片机原理及其应用7.6 分支程序的设计 例18 设变量的值存放在内部R7.7 码制转换程序的设计 在单片机应用系统中,计算机CPU计算、

25、存储是以二进制形式进行的;人机交换信息时,经常采用十进制;设备与设备之间交换信息时,有时采用ASCII码;等等,码制转换程序是单片机应用系统常用的程序之一。10/13/202244单片机原理及其应用7.7 码制转换程序的设计 在单片机应用系统中,计算机7.7 码制转换程序的设计(一)二进制数与十进制数(BCD码)之间的转换程序设计例20 设工作寄存器R6和R7中存储16位二进制数,R6中存放高八位,把该数转换为BCD码形式,并存结果于(R3),(R4),(R5)二进制数转换为十进制数的方法为按权展开,设16位二进制数 ,则对应的十进制数为 (7.3)转换时,乘以2可以采用左移方法实现,从最高位

26、 开始,逐位加到BCD码存储单元的最低位,并进行十进制加法调整,然后左移,当最低位 加入后,转换完成。程序流程图如图7.18所示 10/13/202245单片机原理及其应用7.7 码制转换程序的设计(一)二进制数与十进制数(BCD码7.7 码制转换程序的设计图7.18 二进制数转换BCD码程序流程图10/13/202246单片机原理及其应用7.7 码制转换程序的设计图7.18 二进制数转换BCD码程7.7 码制转换程序的设计(二)ASCII代码与十六进制数之间的转换程序设计例21 把2个ASCII码表示的十六进制数转换成1个字节的十六进制数。 在ASCII码表中,十六进制数符09的ASCII码 是30H39H,它们与其代表的十六进制数值相差30H;数符AF的ASCII码为41H46H,它们与其代表的十六进制数值相差37H。因此,1位十六进制数的ASCII码转换为十六进制数,当ASCII码减去30H的差小于0AH时,其差值就是转换结果,否则,差值还应再减去07H才能得到转换结果。10/13/202247单片机原理及其应用7.7 码制转换程序的设计(二)ASCII代码与十六进制数之7.7

温馨提示

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

评论

0/150

提交评论