7汇编语言程序设计培训教材

上传人:yuzo****123 文档编号:143097614 上传时间:2020-08-26 格式:PPT 页数:52 大小:553.50KB
返回 下载 相关 举报
7汇编语言程序设计培训教材_第1页
第1页 / 共52页
7汇编语言程序设计培训教材_第2页
第2页 / 共52页
7汇编语言程序设计培训教材_第3页
第3页 / 共52页
7汇编语言程序设计培训教材_第4页
第4页 / 共52页
7汇编语言程序设计培训教材_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《7汇编语言程序设计培训教材》由会员分享,可在线阅读,更多相关《7汇编语言程序设计培训教材(52页珍藏版)》请在金锄头文库上搜索。

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

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

3、的有以下几种伪指令: (1)设置起始地址伪指令ORG ORG xxxxH 如: ORG 0100H SUB: MOV R0, #30H (2)赋值伪指令EQU 变量代号 EQU 数值 如: LEN EQU 20; 在程序中变量LEN的值为20H XdataEQU 4F8BH;在程序中变量Xdata的值 为4F8BH,2020/8/26,单片机原理及其应用,6,7.1 伪指令,(3)定义字节数据伪指令DB xxxxH DB data 如: 2000H DB 30H; 伪指令DB也可用来定义多个连续单元为常数, 即用来定义一组单字节数据组成的常数表。 如: ORG 1000H DB 30H,31H

4、,32H,33H,34H,35H,36H, 37H,38H,39H, 2EH,0DH,2020/8/26,单片机原理及其应用,7,7.1 伪指令,(4) 定义双字节数据伪指令DW xxxxH DWdata16 如:1000H DW 0FDE1H 1100H DW 1345, 2241, 34556 (5) 位地址赋值伪指令BIT 变量代号BIT位地址 如: CSBITP2.0 FLAG BIT20H.6 (6) 汇编结束伪指令END END,2020/8/26,单片机原理及其应用,8,7.2 算术运算程序的设计,在MCS-51单片机指令系统中,算术运算指令仅 支持2个无符号的8位二进制数的运算

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

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

7、20/8/26,单片机原理及其应用,13,7.2 算术运算程序的设计,例4 多位十进制减法 在第3章的例30中,我们介绍了2位十进制数减 法算法:XYX100Y X9AHY,把十进 制减法变换成二进制减法(求十进制减数的补码) 和十进制加法2步进行。多位十进制数减法也采用了 同样的算法。设被减数存放在20H开始的内部RAM 存储单元,减数存放在30H开始的存储单元,6位十 进制数减法的程序如下,2020/8/26,单片机原理及其应用,14,7.2 算术运算程序的设计,(1)2位十进制数减法子程序: 入口条件:R0指出被减数所在单元的地址;R1指出减数 所在单元的地址; 出口条件:R0指出差所在

8、单元的地址,进位在Cy中; SH_SUB: MOV A, #9AH SUBB A, R1 ADD A, R0 DA A MOV R0, A INC R0 INC R1 CPL C RET,2020/8/26,单片机原理及其应用,15,7.2 算术运算程序的设计,(2)6位十进制数加法程序: MOV R0, #20H MOV R1, #30H MOV R5, #03H CLR C DOSUB:ACALL SH_SUB DJNZ R5, DOSUB RET,2020/8/26,单片机原理及其应用,16,7.2 算术运算程序的设计,例5 多字节数二进制乘法 2个多字节二进制数乘法的算法与按位进行十进

9、 制数乘法相似。把它转换为几个多字节与单字节的 乘法运算,先分别计算出它们的部分积,然后按照 规则把部分积累加计算出乘积。 图7.4为2个16位二进制数相乘的算法原理图。 图中被乘数为X,其高八位和低八位分别存储在XH 和XL单元,乘数为Y,YH和YL分别高八位和低八位 存储单元。,2020/8/26,单片机原理及其应用,17,7.2 算术运算程序的设计,算法分2步进行:首先,分别用乘数的高八位和 低八位与被乘数相乘,计算部分积,分别存储在 (XYH3),(XYH2),(XYH1)和 (XYL3),(XYL2)(XYL1)单 元;在编写程序时,乘法运算可以用子程序调用的 方法实现(第3章例33

10、)。第二步,采用加法运算求 出乘积存储在(XY4)(XY3)(XY2)(XY1)单 元。,2020/8/26,单片机原理及其应用,18,7.2 算术运算程序的设计,图7.4 2个16位二进制数乘法算法,2020/8/26,单片机原理及其应用,19,7.2 算术运算程序的设计,例6 多字节二进制除法 2个多字节无符号二进制数的除法是采用移位和 减法运算实现的,实现过程与我们进行十进制数乘 法形似,每次进行除法运算时,如果余数大于减数 (构件)则商1,否则,商0。图7.5为16位二进制数 除以8位二进制数的程序流程图。该算法要求被除数 的高八位数据必须小于除数,否则,作为溢出处 理,子程序把标志位

11、OV的状态置为1,从子程序返 回。,2020/8/26,单片机原理及其应用,20,7.2 算术运算程序的设计,图7.5 除法程序流程图,2020/8/26,单片机原理及其应用,21,7.3 循环程序的设计,(一)循环结构的组成 循环结构由4部分组成:初始化部分、循环处理 部分、循环控制部分和循环结束部分。循环结构组 成图见图7.6。,图7.6 循环结构组成,2020/8/26,单片机原理及其应用,22,7.3 循环程序的设计,汇编语言程序设计中常见的典型循环结构如图 7.7所示。,(1)先处理后判断的结构 (2)先判断后处理的结构 图7.7 典型循环结构,2020/8/26,单片机原理及其应用

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

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

14、1)硬件电路原理图 (2)发光二极管布置示意图 图7.10 循环闪烁系统原理与布置示意图,2020/8/26,单片机原理及其应用,28,7.3 循环程序的设计,例9循环闪烁系统原理与布置示意图如图7.10所 示,MCS-51单片机的P1口控制8个发光二极管。编 制一个循环闪烁的程序,要求每次相邻的2个发光二 极管为1组闪烁点亮3次后,转移到下一组,8个发光 二极管显示1遍后,全部点亮,然后熄灭,又以每组 2个灯的方式闪烁显示,如此不断循环。,2020/8/26,单片机原理及其应用,29,7.3 循环程序的设计,图7.11 循环闪烁系统的程序流程图,2020/8/26,单片机原理及其应用,30,

15、7.4 查表程序的设计,查表程序是一种在单片机应用系统中常用的程 序,例如,显示输出时,利用查表程序提取字型编 码,数值运算时,利用它可以避免进行复杂的程序 运算或转换运算,可以完成数据插补、修正、计算、 转换等功能 。,2020/8/26,单片机原理及其应用,31,7.4 查表程序的设计,例10 设字符09、AF的ASCII码已作为常数存储在 程序存储器中,编写子程序由给定x( )查找 其对应的ASCII码。 ASCII码为七位二进制编码,一个单元也可存储 一个字符的ASCII码。如果ASCII码表存放在以 ASC_TAB单元开始的区域,那么,存储ASCII码的单 元地址与x的关系为:ASC

16、_TABx。设存储在寄存 器R2中,从子程序返回时ASCII码存储在R2中,子 程序程序如下:,2020/8/26,单片机原理及其应用,32,7.4 查表程序的设计,CHECHUP: MOV DPTR, #ASC_TAB;设置表的首地址 MOV A,R2;取x MOVCA,A+DPTR;查表取ASCII码 MOVR2,A;存查到的ASCII码 RET ASC_TAB: DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H, 46H,2020/8/26,单片机原理及其应用,33,7.5 检索程序的设计,数据检索为关键字查找,通常有两种方法:顺 序检索和对分检索。本节介绍前者,对分检索请参 阅

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号