第7章汇编语言程序设计.ppt

上传人:少林足球 文档编号:4174783 上传时间:2019-10-25 格式:PPT 页数:54 大小:1.23MB
返回 下载 相关 举报
第7章汇编语言程序设计.ppt_第1页
第1页 / 共54页
第7章汇编语言程序设计.ppt_第2页
第2页 / 共54页
第7章汇编语言程序设计.ppt_第3页
第3页 / 共54页
第7章汇编语言程序设计.ppt_第4页
第4页 / 共54页
第7章汇编语言程序设计.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《第7章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第7章汇编语言程序设计.ppt(54页珍藏版)》请在三一文库上搜索。

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

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

3、令(Pseudo Instruction)是汇编语言中起 解释说明的命令,它不是单片机的指令。 在单片机的集成开发环境中,向汇编系统说明 程序存储在程序存储器的哪个区域、本汇编语言程 序到何处结束、变量代号对应的单元地址或所代表 的数值等。在汇编时,伪指令不会产生目标代码, 不影响程序的执行。,2019/10/25,单片机原理与应用,5,7.1 伪指令,常用的有以下几种伪指令: (1)设置起始地址伪指令ORG ORG xxxxH 如: ORG 0100H SUB: MOV R0, #30H (2)赋值伪指令EQU 变量代号 EQU 数值 如: LEN EQU 20; 在程序中变量LEN的值为2

4、0H Xdata EQU 4F8BH;在程序中变量Xdata的值 为4F8BH,2019/10/25,单片机原理与应用,6,7.1 伪指令,(3)定义字节数据伪指令DB 标号 DB data 如: 2000H DB 30H ; 伪指令DB也可用来定义多个连续单元为常数, 即用来定义一组单字节数据组成的常数表。 如: ORG 1000H DB 30H,31H,32H,33H,34H,35H,36H, 37H,38H,39H, 2EH,0DH,2019/10/25,单片机原理与应用,7,7.1 伪指令,(4) 定义双字节数据伪指令DW 标号: DW data16 如: ORG 3000H DATA

5、: DW 0FDE1H RET DATAA: DW 1345, 2241, 34556 (5) 位地址赋值伪指令BIT 变量代号 BIT 位地址 如: CS BIT P2.0 FLAG BIT 20H.6 (6) 汇编结束伪指令END END,2019/10/25,单片机原理与应用,8,7.2 算术运算程序的设计,在MCS-51单片机指令系统中,算术运算指令仅支持2个无符号的8位二进制数的运算,二进制数算术运算是按字节的方式进行的。,2019/10/25,单片机原理与应用,9,7.2 算术运算程序的设计,例1 多字节二进制加法。,二进制数加法算法,2019/10/25,单片机原理与应用,10,

6、7.2 算术运算程序的设计,例2 多字节二进制减法。,减法算法,2019/10/25,单片机原理与应用,11,7.2 算术运算程序的设计,例3 多位十进制数加法。,多位十进制加法算法,2019/10/25,单片机原理与应用,12,7.2 算术运算程序的设计,例4 多位十进制减法 2位十进制数减法算法: XYX100Y X9AHY 把十进制减法变换成二进制减法(求十进制减数的补码)和十进制加法2步进行。多位十进制数减法也采用了同样的算法。,2019/10/25,单片机原理与应用,13,7.2 算术运算程序的设计,(1)2位十进制数减法子程序: 入口条件:R0指出被减数所在单元的地址;R1指出减数

7、 所在单元的地址; 出口条件:R0指出差所在单元的地址,进位在Cy中; SH_SUB: MOV A, #9AH SUBB A, R1 ADD A, R0 DA A MOV R0, A INC R0 INC R1 CPL C RET,2019/10/25,单片机原理与应用,14,7.2 算术运算程序的设计,(2)6位十进制数加法程序: MOV R0, #20H MOV R1, #30H MOV R5, #03H CLR C DOSUB: ACALL SH_SUB DJNZ R5, DOSUB RET,2019/10/25,单片机原理与应用,15,7.2 算术运算程序的设计,例5 多字节数二进制乘

8、法,2019/10/25,单片机原理与应用,16,7.2 算术运算程序的设计,例6 多字节二进制除法 2个多字节无符号二进制数的除法是采用移位和 减法运算实现的,实现过程与进行十进制数乘 法形似,每次进行除法运算时,如果余数大于减数 (够减)则商1,否则,商0。 该算法要求被除数的高八位数据必须小于除数,否则,作为溢出处理,子程序把标志位OV的状态置为1,从子程序返回。,2019/10/25,单片机原理与应用,17,7.2 算术运算程序的设计,除法程序流程图,2019/10/25,单片机原理与应用,18,7.3 循环程序的设计,(一)循环结构的组成 循环结构由4部分组成:初始化部分、循环处理

9、部分、循环控制部分和循环结束部分。,循环结构组成,2019/10/25,单片机原理与应用,19,7.3 循环程序的设计,汇编语言程序设计中常见的典型循环结构,(1)先处理后判断的结构,(2)先判断后处理的结构,2019/10/25,单片机原理与应用,20,7.3 循环程序的设计,(二)循环程序设计举例 例7 设单片机系统采集的8个单字节数据存储在单片机内部RAM的30H开始的连续单元中,求它们的均值。 一组数据平均值的公式为: 其中, 为第i个数据,N为数据的个数。 要计算出平均值需要进行2种运算:求数据的总和、数据总和除以数据个数。 (1)求数据的总和算法如下:,2019/10/25,单片机

10、原理与应用,21,7.3 循环程序的设计,多个数据求总和的流程图,2019/10/25,单片机原理与应用,22,7.3 循环程序的设计,(2)求均值,采用右移除以2的算法实现。,2019/10/25,单片机原理与应用,23,7.3 循环程序的设计,例8 设有一个字符串以回车符(ASCII码为0DH)为 结束标志,并存放在内部RAM的40H单元开始的连 续存储单元中,编写测试字符串长度的程序。,2019/10/25,单片机原理与应用,24,7.3 循环程序的设计,测试字符串长度的程序流程框图,2019/10/25,单片机原理与应用,25,7.4 查表程序的设计,查表程序是一种在单片机应用系统中常

11、用的程 序,例如,显示输出时,利用查表程序提取字型编 码,数值运算时,利用它可以避免进行复杂的程序 运算或转换运算,可以完成数据插补、修正、计算、 转换等功能 。,2019/10/25,单片机原理与应用,26,地址,ASCII,x,存储ASCII码的单元地址与x的关系为:ASC_TABx。,2019/10/25,单片机原理与应用,27,7.4 查表程序的设计,例10 设字符09、AF的ASCII码已作为常数存储在 程序存储器中,编写子程序由给定x( )查找 其对应的ASCII码。,2019/10/25,单片机原理与应用,28,7.4 查表程序的设计,CHECHUP: MOV DPTR, #AS

12、C_TAB;设置表的首地址 MOV A, R2 ;取x MOVC A, A+DPTR;查表取ASCII码 MOV R2, A ;存查到的ASCII码 RET ASC_TAB: DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H, 46H,2019/10/25,单片机原理与应用,29,7.4 查表程序的设计,地址,数据,单字节x单字节Y (任意长度),存储单元地址与x的关系为: TABx,x,2019/10/25,单片机原理与应用,30,7.4 查表程序的设计,地址,数据,单字节x双字节Y,

13、0,1,2,3,7E,7F,存储单元地址与x的关系为: 第一个字节:TAB2x 第一个字节:TAB2x+1,x,0,1,2,3,7E,7F,2019/10/25,单片机原理与应用,31,7.4 查表程序的设计,单字节x双字节Y (任意长度),地址,数据,0,1,2,3,FE,FF,存储单元地址与x的关系为: 第一个字节:TAB2x 第一个字节:TAB2x+1,0,1,2,3,FE,FF,x,2019/10/25,单片机原理与应用,32,双字节x双字节Y (任意长度),地址,数据,0000,0001,0002,0003,RRRR,HHHH,7.4 查表程序的设计,存储单元地址与x的关系为: 第一

14、个字节:TAB2x 第一个字节:TAB2x+1,0000,0001,0002,0003,RRRR,HHHH,x,2019/10/25,单片机原理与应用,33,地址,数据,单字节x3字节Y,0,1,2,29,存储单元地址与x的关系为: 第一个字节:TAB3x 第二个字节:TAB3x+1 第三个字节:TAB3x+2,2019/10/25,单片机原理与应用,34,7.5 检索程序的设计,数据检索为关键字查找,通常有两种方法:顺 序检索和对分检索。本节介绍前者,对分检索请参 阅相关资料。,数据检索,顺序检索,对分检索,2019/10/25,单片机原理与应用,35,7.5 检索程序的设计,例15 设内部

15、RAM有一单字节无符号数数据块,存储在以30H单元为首地址的区域中。长度为50个字节,试编程找出其中最小的数,并放在20H单元。,2019/10/25,单片机原理与应用,36,7.5 检索程序的设计,2019/10/25,单片机原理与应用,37,7.5 检索程序的设计,例16 从一个字符串找出一个A的关键字,字符串的结束标志为EOF。设字符串存放在20H单元开始的区域,字符以ASCII码形式存储,找到关键字标志位F0置1,否则清0。,2019/10/25,单片机原理与应用,38,7.5 检索程序的设计,程序流程图,2019/10/25,单片机原理与应用,39,7.6 分支程序的设计,分支程序主

16、要是根据判断条件的成立与否来确定程序的走向。可组成简单分支结构和多分支结构。,2019/10/25,单片机原理与应用,40,7.6 分支程序的设计,(二)多分支选择结构 当程序的判别部分有两个以上的出口流向时, 称为多分支选择结构。,多分支选择结构,2019/10/25,单片机原理与应用,41,7.6 分支程序的设计,例17 x和y为2个带符号单字节数据,以原码方式存 放,编制程序求它们的乘积。,2019/10/25,单片机原理与应用,42,7.6 分支程序的设计,例18 设变量x的值存放在内部RAM的30H单元中, 编程求解下列函数式,将求得的函数值存入40H单 元。,2019/10/25,

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

18、数为 转换时,乘以2可以采用左移方法实现,从最高位 开始,逐位加到BCD码存储单元的最低位,并进行十进制加法调整,然后左移,当最低位 加入后,转换完成。,2019/10/25,单片机原理与应用,45,7.7 码制转换程序的设计,二进制数转换BCD码程序流程图,2019/10/25,单片机原理与应用,46,7.7 码制转换程序的设计,例20 设工作寄存器R6和R7中存储4位十进制数(BCD码形式),把该数转换为二进制数,并存结果于(R3),(R4). 设4位十进制数a3 a2 a1 a0 a3 a2 a1 a0= a3103 +a2102 + a1101 + a0 =(a3101 +a2)102

19、 +( a1101 + a0) 转换算法:(1)子程序: ai+1101 +ai (2)高2位(千位百位)调用子程序后,转换结果100 (3)低2位(十位个位)调用子程序 (4)(2)、(3)两步的结果相加。,2019/10/25,单片机原理与应用,47,7.7 码制转换程序的设计,(二)ASCII代码与十六进制数之间的转换程序设计 例21 把2个ASCII码表示的十六进制数转换成1个字节的十六进制数。,ASCII,16进制字符,2019/10/25,单片机原理与应用,48,ASCII代码转换十六进制数,2019/10/25,单片机原理与应用,49,十六进制数转换ASCII代码,2019/10

20、/25,单片机原理与应用,50,7.7 码制转换程序的设计,(三)ASC1I码与十进制数(BCD码)之间的转换程序设计,ASC1I码与BCD码,BCD码与ASC1I码,2019/10/25,单片机原理与应用,51,7.8 逻辑操作程序,开关量的检测和控制是计算机控制系统中的一 个非常重要的组成部分。如电机启动与停止,继电 器和接触器动作、电磁阀的开闭等等,在控制系统 中,它们动作是由许多信号的逻辑组合后决定的, 这种逻辑运算在MCS-51单片机中可以由位操作指令 方便地实现。 位操作指令是其它MCS-51单片机的一个特色。,2019/10/25,单片机原理与应用,52,7.8 逻辑操作程序,例

21、22 设U 、V、W、Q分别是P1.1、P1.2、P1.3和 P1.5,X和Y为单片机内部人为设置的标志位,它们 分别是27H.1和27H.0,Z为定时/计数器T0的溢出标 志TF0。用软件实现下列逻辑表达式,2019/10/25,单片机原理与应用,53,7.8 逻辑操作程序,程序实现如下: MOV C, 27H.1 ANL C, /P1.1 MOV 20H.0, C ; 暂存 MOV C, 27H.0 ANL C, /P1.1 ANL C, TF0; ; ORL C, 20H.0; MOV 20H.0, C ; 暂存 + MOV C, 27H.1 ANL C, /27H.0 ANL C, TF0 ; ORL C, 20H.0; MOV 20H.0, C ;暂存 MOV C, 27H.0 CPL C ANL C, P1.1 ; ORL C, 20H.0 ; MOV P1.5, C RET,2019/10/25,单片机原理与应用,54,end,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1