d幻灯片定稿第4章mcs-51汇编语言程序设计-1

上传人:tia****nde 文档编号:68923427 上传时间:2019-01-11 格式:PPT 页数:87 大小:767.31KB
返回 下载 相关 举报
d幻灯片定稿第4章mcs-51汇编语言程序设计-1_第1页
第1页 / 共87页
d幻灯片定稿第4章mcs-51汇编语言程序设计-1_第2页
第2页 / 共87页
d幻灯片定稿第4章mcs-51汇编语言程序设计-1_第3页
第3页 / 共87页
d幻灯片定稿第4章mcs-51汇编语言程序设计-1_第4页
第4页 / 共87页
d幻灯片定稿第4章mcs-51汇编语言程序设计-1_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《d幻灯片定稿第4章mcs-51汇编语言程序设计-1》由会员分享,可在线阅读,更多相关《d幻灯片定稿第4章mcs-51汇编语言程序设计-1(87页珍藏版)》请在金锄头文库上搜索。

1、第4章MCS51汇编语言程序设计,本章要点:,程序设计语言分类及特点 汇编语言程序编写方法 顺序结构程序的编写方法 分支结构程序的编写方法 循环结构程序的编写方法 子程序的编写方法,4.1 汇编语言概述,4.1.1 程序设计语言的分类及特点 能够完成一定功能的指令序列称为程序,用来设计计算机程序的语言称为程序设计语言,按照语言的结构及功能程序设计语言可分为:机器语言、汇编语言和高级语言。 1机器语言 是计算机所能识别的唯一语言,由二进制代码0和1构成指令和数据。其具有效率高、响应速度快的特点,但由于机器语言编写的程序依赖于计算机的结构,可移植性差,繁琐且难于记忆、识别和调试,通常编程时,不采用

2、机器语言。,2汇编语言,是一种符号语言,指令由助记符表示。与机器语言相比,汇编语言具有指令容易记忆、理解、识别和可读性好的优点,但实质上由于汇编语言也是面向机器的语言,是机器语言程序的符号表示,所以用户必须熟悉机器的硬件结构和指令系统,掌握计算机的工作过程才能熟练编程。汇编语言程序通常用于实时控制领域,其所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件一般运行效率较高。 另外,汇编语言所编写的源程序与经过汇编所产生的机器代码程序之间有明显的一一对应关系,所以汇编语言编写的程序同样也存在通用性差,程序不能移植的缺点。,3高级语言,高级语言是接近于人的自然语言形式的计算机

3、编程语言的总称,例如C语言、BASIC语言等都是高级语言。和汇编语言相比,高级语言指令简单易学,用户容易掌握,且高级语言程序不依赖于具体的硬件结构和指令系统,程序可移植性好,但是高级语言编写的源程序必须经过编译或解释程序翻译成目标程序,机器才能执行,而生成的目标程序需占用较多的存储单元,执行时间较长,运行效率较低。 由于目前有些高级语言不具有直接处理接口和中断技术的功能,因此高级语言一般很少应用于实时控制,但随着语言的发展,这种情况将会有所改变。,4.12 单片机汇编语言源程序的编辑和汇编,汇编语言的指令类型 用汇编语言编写的、具有特定功能的指令序列,称为汇编语言源程序。源程序由两种类型的汇编

4、语言语句(即指令)构成。语句是汇编语言的基本组成单位,按性质不同分为两类:指令性语句(机器指令)和指示性语句(伪指令)。 (1)机器指令 即指令系统中的全部指令,每条指令都有对应的机器代码,是机器真正能够执行的指令。 (2) 伪指令 为汇编程序在汇编过程中提供控制或指示信息,并不直接产生机器代码,属于机器不能执行的指令类型。 汇编 计算机不能直接识别和执行源程序。因此源程序必须经过汇编程序汇编产生机器码目标程序文件,程序才能执行。这种将汇编语言源程序转换成机器语言程序的过程称为汇编。对于初学者来说,应注意汇编语言源程序和汇编程序两个术语的区别,它们的功能示例如图4-1所示。,图4-1 汇编过程

5、,汇编语言源程序,汇编程序,目标文件和源程序列表,经过,汇编后,汇编语言源程序的汇编过程分为手工汇编和机器汇编。 所谓手工汇编,即采用人工查指令表的方法将汇编指令翻译成相应机器代码。通常源程序的人工汇编需要两次才能完成,第一次汇编查找每条指令的机器代码,第二次汇编完成地址偏移量的计算。由于手工汇编需要计算和查找,繁琐而且容易出错,而且程序修改时可能会引起指令的地址变化,转移指令的偏移量也随之改变,需要重新计算,所以手工汇编主要应用于设计短小程序或调试程序的场合。 所谓机器汇编,即采用汇编程序对源程序进行自动汇编,由于单片机软硬件资源的限制,该过程通常借助于PC系统机实现,象这种借助于一种计算机

6、而为另一种计算机产生目标代码的汇编方式又称为交叉汇编。交叉汇编的原理类似于手工汇编,在汇编程序中通常存入了两张表,即MCS-51单片机的指令代码表和伪指令表。汇编程序通常通过两次扫描完成汇编,第一次扫描查找源程序中每条指令的机器代码,第二次扫描完成地址偏移量的计算,汇编后生成目标文件和列表文件。这是目前应用较广的汇编方法。,纵上,汇编的主要功能为: (1)确定程序中每条汇编语言指令的指令机器码。 (2)确定每条指令在程序存储器中的存放地址。 (3)提供语法、编辑等方面的错误信息,但不能提供程序的逻辑错误。 (4)产生目标执行文件(*.OBJ/*.HEX)和列表文件(*.LST)。,4.1.3

7、MCS51汇编语言的伪指令,所谓“伪”指令,即不是真正的可执行指令。如前所述,伪指令只能在对源程序进行汇编时起控制作用,例如设置程序的起始地址,定义符号,给程序分配一定的存储空间等。常用的伪指令共有8条,下面分别介绍。 1ORG(Origin)设置起始地址指令 用来设定程序或数据存储区的起始地址。指令格式为: ORG 16位地址 例如,有程序段如下,则表示程序存放的起始地址为1000H。 指令地址 机器码 源程序 ORG 1000H 1000H 78 2 MAIN:MOV R0,#20H 1002H E6 MOV A,R0 若省略ORG指令后的16位地址,则汇编后目标程序的起始地址默认为000

8、0H。ORG指令在一个源程序中可以多次使用以指定不同程序段的起始地址,但是指定的多个地址应从小到大,不能使程序段之间产生重叠。,2DB(Define Byte) 定义字节型常数指令 指令的功能为从指定的存储单元开始,定义或存储一个或多个字节数据。指令格式为: 标号:DB 字节常数表 例如, ORG 1000H TAB: DB 0A3H,18,AB 汇编结果为:(1000H)=A3H (1001H)=12H (1003H)=41H (1004H)=42H 3DW(Define Word)定义字型常数指令 指令的功能为从指定的存储单元开始,定义或存储一个或多个字数据。通常用于在程序中定义地址表。指

9、令格式为: 标号:DW 字常数表 一个字数据占用两个存储单元,存放时高字节存入低位地址,低字节存入高位地址。 例如, ORG 1000H TAB:DW 1234H,18,00A3H 汇编结果:(1000H)=12H (1001H)=34H (1002H)=00H (1003H)=12H (1004H)=00H (1005H)=A3H,4. EQU(Equate)等值指令 指令功能是把操作数段中的地址或数据赋值给标号。赋值后的标号可在整个源程序中使用。指令格式如下: 标号 EQU 数据或汇编符号 注意,与程序中一般意义的标号不同的是,这里的标号后不能加“:”。 例如, ADDR EQU 1000

10、H ;给ADDR赋值1000H DAT1 EQU 0AH ;给DAT1赋值0AH MAIN: MOV DPTR,#ADDR;DPTR1000H MOV A,DAT1 ;A(0AH) 上例中,ADDR被赋值以后,在程序中作为立即数使用,而DAT1赋值后被当作直接地址使用。需要说明的是,使用EQU指令时必须先赋值后使用。,5DS(Define Store)定义存储区指令 指令功能为从指定的单元地址开始,保留一定数量的存储单元,以备使用。指令格式如下: 标号:DS 表达式 其中,表达式指定保留的内存单元个数。 例如,ORG 1000H DS 10 TAB: DB 10H 汇编结果:从1000H地址处

11、开始,保留10个字节单元。(100AH)=10H。 6BIT位地址符号指令 指令功能为将位地址赋值给指定的符号名称,通常用于位符号地址的定义。指令功能如下: 字符名称 BIT 位地址 例如,X1 BIT P1.0 汇编结果为将位地址P1.0赋给变量X1,即在程序中便可使用X1代替位地址P1.0。,7DATA数据地址赋值指令 指令功能为将数据地址或指令代码地址赋值给所指定的标号。通常在程序中用于定义数据地址。指令格式如下: 标号:DATA 表达式 例如,AA:DATA 2000H 汇编结果为:AA=2000H。 注意,DATA与EQU的区别在于:EQU定义的标识符在汇编时不在符号表中登记,因此必

12、须先定义后使用,而DATA定义的标识符汇编时在符号表中登记,所以可以先使用后定义。 8. END 汇编语言源程序结束指令 指令功能,表示源程序到此结束,END指令以后的指令汇编程序将不予处理。一个程序中只能在末尾有一个END指令。 例如, START: END START,4.2 汇编语言程序设计 对于简单程序的编写,程序设计者往往能够立即完成软件的构思与编写,而对于比较复杂的程序设计问题,则需要科学合理的程序设计步骤。从软件工程角度来说,开发一个应用程序,一般需要经过以下几个步骤: 1分析问题,建立数学模型 如果拿到问题,立即着手编写程序代码往往是很难成功的,通常需要首先分析题目的已知条件,

13、了解系统的硬件配制,明确题目的要求和要实现的功能,然后建立数学模型。 2了解系统的硬件配置和性能指标,确定方案算法 所谓算法就是为了解决问题而采取的方法和步骤。在分析问题后,应根据系统的具体硬件配置和性能指标等实际情况确定具体有效且计算机能够执行的方法和步骤。 3用流程图表示出程序算法 确定算法后,应用简单直观的方法描述算法,以便为进一步编程做好准备。算法的描述方法很多,其中比较常用的是流程图法。一般流程图的符号如图4-2所示。 4根据流程图编写源程序 使用汇编语言编写源程序时,应首先合理规划和分配存储器单元,确定程序和数据的存放区域,了解系统的I/O接口地址,最后按照流程图写出源程序。 5调

14、试运行程序 通常情况下,源程序编制好后必须经过上机调试才能运行。调试程序的一个重要功能是修正语法和逻辑错误,直到达到题目的要求为止。,4.2.1 顺序程序设计 顺序程序是程序设计中最基本的结构,又称为简单程序。特点为顺序执行每一条指令,直到最后。其执行过程如图4-3所示。,【例4-1】编写一程序,将累加器A中的两位压缩BCD转换成ASCII码存入1000H、1001H片外存储单元中。开始R0 AA取A的低4位AA+30H存入1000H单元A取A的高4位AR0AA+30H存入1001H单元结束 分析:由ASCII码表可知,09的的ASCII码为30H39H,即BCD码与ASCII码值的差值为30

15、H。因此只要将两位BCD码分别取出与30H相加即可获得相应的ASCII码值,其算法流程图如图4-4所示。,程序如下: ORG 2000H MOV DPTR,#1000H MOV R0,A ANL A,#00001111B ORL A,#30H MOV DPTR,A MOV A,R0 SWAP A ORL A,#30H INC DPTR MOVX DPTR,A END,【例4-2】已知如图4-5所示,双字节4位压缩BCD码数 X 存于片内RAM30H、31H单元,Y存于32H、33H单元,编程求 Z=X+Y,并将结果Z存入片内RAM单元34H、35H、36H中 ADDSUM:MOV A,30H

16、ADD A,32H ;低位字节相加 DA A ;BCD码修正 MOV 34H,A ;低位字节存入34H中 MOV A,31H ADDC A,33H ;高位字节与低位进位相加 DA A MOV 35H,A ;高位字节之和存入35H中 MOV A,#0 ADDC A,#0 DA A MOV 36H,A ;高位字节的进位存入36H中 END。,从该例可以看出,多字节BCD码相加时,应从低位字节开始相加,每进行一次加法运算进行一次BCD码调整才能得到正确结果。,4.2.2 分支程序设计,1分支程序结构的基本形式 分支程序是程序设计中应用非常广泛的一种基本结构。比如我们经常遇到需要计算机进行逻辑判断的情况,然后根据判断的结果进行不同的处理。例如,比较两个数的大小,并输出判断结果;根据输入压力的不同,用不同的方法计算发动机功率等

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

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

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