第7章汇编语言程序设计

上传人:ni****g 文档编号:569861617 上传时间:2024-07-31 格式:PPT 页数:54 大小:1.26MB
返回 下载 相关 举报
第7章汇编语言程序设计_第1页
第1页 / 共54页
第7章汇编语言程序设计_第2页
第2页 / 共54页
第7章汇编语言程序设计_第3页
第3页 / 共54页
第7章汇编语言程序设计_第4页
第4页 / 共54页
第7章汇编语言程序设计_第5页
第5页 / 共54页
点击查看更多>>
资源描述

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

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

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

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

4、BH2024/7/315单片机原理与应用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 2024/7/316单片机原理与应用7.1 伪指令(4) 定义双字节数据伪指令DW 标号: DW data16如:ORG 3000HDATA: DW 0FDE1H.RET DATAA: DW 1345, 2241, 34556(5) 位地址赋值伪指

5、令BIT 变量代号BIT位地址如: CSBITP2.0 FLAG BIT20H.6(6) 汇编结束伪指令END END2024/7/317单片机原理与应用7.2 算术运算程序的设计 在MCS-51单片机指令系统中,算术运算指令仅支持2个无符号的8位二进制数的运算,二进制数算术运算是按字节的方式进行的。2024/7/318单片机原理与应用7.2 算术运算程序的设计例1 多字节二进制加法。二进制数加法算法2024/7/319单片机原理与应用7.2 算术运算程序的设计例2 多字节二进制减法。减法算法2024/7/3110单片机原理与应用7.2 算术运算程序的设计例3 多位十进制数加法。多位十进制加法

6、算法2024/7/3111单片机原理与应用7.2 算术运算程序的设计例4 多位十进制减法 2位十进制数减法算法: XYX100Y X9AHY把十进制减法变换成二进制减法(求十进制减数的补码)和十进制加法2步进行。多位十进制数减法也采用了同样的算法。2024/7/3112单片机原理与应用7.2 算术运算程序的设计(1)2位十进制数减法子程序:入口条件:R0指出被减数所在单元的地址;R1指出减数 所在单元的地址;出口条件:R0指出差所在单元的地址,进位在Cy中; SH_SUB: MOV A, #9AHSUBB A, R1ADD A, R0DA AMOV R0, AINC R0INC R1CPL C

7、RET2024/7/3113单片机原理与应用7.2 算术运算程序的设计(2)6位十进制数加法程序:MOV R0, #20HMOV R1, #30HMOV R5, #03HCLR C DOSUB:ACALL SH_SUB DJNZ R5, DOSUB RET2024/7/3114单片机原理与应用7.2 算术运算程序的设计例5 多字节数二进制乘法2024/7/3115单片机原理与应用7.2 算术运算程序的设计例6 多字节二进制除法 2个多字节无符号二进制数的除法是采用移位和减法运算实现的,实现过程与进行十进制数乘法形似,每次进行除法运算时,如果余数大于减数(够减)则商1,否则,商0。该算法要求被除

8、数的高八位数据必须小于除数,否则,作为溢出处理,子程序把标志位OV的状态置为1,从子程序返回。2024/7/3116单片机原理与应用7.2 算术运算程序的设计除法程序流程图2024/7/3117单片机原理与应用7.3 循环程序的设计(一)循环结构的组成 循环结构由4部分组成:初始化部分、循环处理部分、循环控制部分和循环结束部分。循环结构组成2024/7/3118单片机原理与应用7.3 循环程序的设计 汇编语言程序设计中常见的典型循环结构(1)先处理后判断的结构(2)先判断后处理的结构2024/7/3119单片机原理与应用7.3 循环程序的设计(二)循环程序设计举例 例7 设单片机系统采集的8个

9、单字节数据存储在单片机内部RAM的30H开始的连续单元中,求它们的均值。 一组数据平均值的公式为: 其中, 为第i个数据,N为数据的个数。 要计算出平均值需要进行2种运算:求数据的总和、数据总和除以数据个数。(1)求数据的总和算法如下: 2024/7/3120单片机原理与应用7.3 循环程序的设计多个数据求总和的流程图2024/7/3121单片机原理与应用7.3 循环程序的设计(2)求均值采用右移除以2的算法实现。2024/7/3122单片机原理与应用7.3 循环程序的设计例8 设有一个字符串以回车符(ASCII码为0DH)为结束标志,并存放在内部RAM的40H单元开始的连续存储单元中,编写测

10、试字符串长度的程序。2024/7/3123单片机原理与应用7.3 循环程序的设计测试字符串长度的程序流程框图 2024/7/3124单片机原理与应用7.4 查表程序的设计 查表程序是一种在单片机应用系统中常用的程序,例如,显示输出时,利用查表程序提取字型编码,数值运算时,利用它可以避免进行复杂的程序运算或转换运算,可以完成数据插补、修正、计算、转换等功能 。2024/7/3125单片机原理与应用301050H311051H321052H331053H341054H351055H361056H371057H381058H391059H41105AH42105BH43105CH44105DH451

11、05EH461056H0123456789ABCDEF地址ASCIIx存储ASCII码的单元地址与x的关系为:ASC_TABx。2024/7/3126单片机原理与应用7.4 查表程序的设计例10 设字符09、AF的ASCII码已作为常数存储在程序存储器中,编写子程序由给定x( )查找其对应的ASCII码。2024/7/3127单片机原理与应用7.4 查表程序的设计CHECHUP: MOV DPTR, #ASC_TAB;设置表的首地址 MOV A,R2;取x MOVC A,A+DPTR;查表取ASCII码 MOVR2,A;存查到的ASCII码 RETASC_TAB: DB 30H, 31H, 3

12、2H, 33H, 34H, 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H, 46H2024/7/3128单片机原理与应用7.4 查表程序的设计3F1000H231001H881002H331003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址数据单字节x单字节Y(任意长度)存储单元地址与存储单元地址与x的关系为:的关系为: TABx00010203040506 FCFDFEFFx2024/7/3129单片机原理与应用7.4 查表程序的设计3F1000H231001H881002H3

13、31003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址数据单字节x双字节Y 0 1 2361007H 3 7E 7F存储单元地址与存储单元地址与x的关系为:的关系为: 第一个字节:第一个字节:TAB2x 第一个字节:第一个字节:TAB2x+1x 0 1 2 3 7E 7F2024/7/3130单片机原理与应用7.4 查表程序的设计单字节x双字节Y(任意长度)3F1000H231001H881002H331003H541004H671005H361006HFF11FCHDB11FDHE711FEH6711FFH地址数据 0 1 2361

14、007H 3 FE FF存储单元地址与存储单元地址与x的关系为:的关系为: 第一个字节:第一个字节:TAB2x 第一个字节:第一个字节:TAB2x+1 0 1 2 3 FE FFx2024/7/3131单片机原理与应用双字节x双字节Y(任意长度)3F1000H231001H881002H331003H541004H671005H361006HFFxxxxHDBXXXX+1HE7YYYYH67YYYY+1H地址数据 0000 0001 0002361007H 0003 RRRRHHHH7.4 查表程序的设计存储单元地址与存储单元地址与x的关系为:的关系为: 第一个字节:第一个字节:TAB2x 第

15、一个字节:第一个字节:TAB2x+1 0000 0001 0002 0003 RRRRHHHHx2024/7/3132单片机原理与应用3F1000H231001H881002H331003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址数据单字节x3字节Y361007H012361008H29存储单元地址与存储单元地址与x的关系为:的关系为: 第一个字节:第一个字节:TAB3x 第二个字节:第二个字节:TAB3x+1 第三个字节:第三个字节:TAB3x+22024/7/3133单片机原理与应用7.5 检索程序的设计 数据检索为关键字查找,

16、通常有两种方法:顺序检索和对分检索。本节介绍前者,对分检索请参阅相关资料。 数据检索顺序检索对分检索2024/7/3134单片机原理与应用7.5 检索程序的设计 例15 设内部RAM有一单字节无符号数数据块,存储在以30H单元为首地址的区域中。长度为50个字节,试编程找出其中最小的数,并放在20H单元。2024/7/3135单片机原理与应用7.5 检索程序的设计2024/7/3136单片机原理与应用7.5 检索程序的设计 例16 从一个字符串找出一个A的关键字,字符串的结束标志为EOF。设字符串存放在20H单元开始的区域,字符以ASCII码形式存储,找到关键字标志位F0置1,否则清0。2024

17、/7/3137单片机原理与应用7.5 检索程序的设计程序流程图2024/7/3138单片机原理与应用7.6 分支程序的设计 分支程序主要是根据判断条件的成立与否来确定程序的走向。可组成简单分支结构和多分支结构。2024/7/3139单片机原理与应用7.6 分支程序的设计(二)多分支选择结构 当程序的判别部分有两个以上的出口流向时,称为多分支选择结构。多分支选择结构2024/7/3140单片机原理与应用7.6 分支程序的设计 例17 x和y为2个带符号单字节数据,以原码方式存放,编制程序求它们的乘积。 2024/7/3141单片机原理与应用7.6 分支程序的设计 例18 设变量x的值存放在内部R

18、AM的30H单元中,编程求解下列函数式,将求得的函数值存入40H单元。2024/7/3142单片机原理与应用7.7 码制转换程序的设计 在单片机应用系统中,计算机CPU计算、存储是以二进制形式进行的;人机交换信息时,经常采用十进制;设备与设备之间交换信息时,有时采用ASCII码;等等,码制转换程序是单片机应用系统常用的程序之一。2024/7/3143单片机原理与应用7.7 码制转换程序的设计(一)二进制数与十进制数(BCD码)之间的转换程序设计例19 设工作寄存器R6和R7中存储16位二进制数,R6中存放高八位,把该数转换为BCD码形式,并存结果于(R3),(R4),(R5).二进制数转换为十

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

20、 =(a3101 +a2)102 +( a1101 + a0) 转换算法:(1)子程序: ai+1101 +ai (2)高2位(千位百位)调用子程序后,转换结果100 (3)低2位(十位个位)调用子程序 (4)(2)、(3)两步的结果相加。2024/7/3146单片机原理与应用7.7 码制转换程序的设计(二)ASCII代码与十六进制数之间的转换程序设计例21 把2个ASCII码表示的十六进制数转换成1个字节的十六进制数。30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 460123456789ABCDEF ASCII16进制字符2024/7/3147单片

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

22、的一个特色。 2024/7/3151单片机原理与应用7.8 逻辑操作程序例22 设U 、V、W、Q分别是P1.1、P1.2、P1.3和P1.5,X和Y为单片机内部人为设置的标志位,它们分别是27H.1和27H.0,Z为定时/计数器T0的溢出标志TF0。用软件实现下列逻辑表达式 2024/7/3152单片机原理与应用7.8 逻辑操作程序程序实现如下:MOVC,27H.1ANLC,/P1.1MOV20H.0, C ; 暂存 MOVC,27H.0 ANLC,/P1.1 ANLC,TF0; ; ORLC,20H.0; MOV20H.0,C ; 暂存 + MOVC,27H.1ANL C, /27H.0ANL C, TF0 ; ORLC,20H.0; MOV20H.0,C;暂存 MOVC,27H.0 CPLCANL C, P1.1; ORL C, 20H.0 ;MOVP1.5,CRET2024/7/3153单片机原理与应用end2024/7/3154单片机原理与应用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 幼儿教育

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