第4章MCS-51单片机汇编语言程序设计

上传人:飞*** 文档编号:4975015 上传时间:2017-08-06 格式:PPT 页数:77 大小:1.66MB
返回 下载 相关 举报
第4章MCS-51单片机汇编语言程序设计_第1页
第1页 / 共77页
第4章MCS-51单片机汇编语言程序设计_第2页
第2页 / 共77页
第4章MCS-51单片机汇编语言程序设计_第3页
第3页 / 共77页
第4章MCS-51单片机汇编语言程序设计_第4页
第4页 / 共77页
第4章MCS-51单片机汇编语言程序设计_第5页
第5页 / 共77页
点击查看更多>>
资源描述

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

1、第4章 汇编语言程序设计,教学目标4.1 单片机汇编语言概述4.2 源程序的设计步骤和汇编 4.3 汇编语言程序设计本章小结思考题与习题,教学目标,通过本章教学,要求达到以下目标: 1. 熟悉汇编语言的语句结构; 2. 了解手工汇编,计算偏移量及转移地址的 方法; 3. 了解程序设计的步骤,会画程序流程图; 4. 掌握顺序程序、分支程序、循环程序、子程 序等基本程序的编制方法。,4.1单片机汇编语言概述,4.1.1 程序设计语言,程序设计语言,机器语言汇编语言高级语言,机器语言,由于构成计算机的电子器件特性所决定, 计算机只能识别二进制代码。 这种以二进制代码来描述指令功能的语言, 称之为机器

2、语言, 用机器语言组成的程序, 称为目标程序。 计算机就是按照机器语言的指令来完成各种功能操作的, 它具有程序简捷、占用存储空间小、执行速度快、控制功能强等特点。,汇编语言,用来替代机器语言的进行程序设计的一种语言,由助记符、保留字和伪指令等组成。很容易让人们所识别、记忆和读写。 汇编语言编写出的程序是汇编语言源程序,可由“汇编程序”翻译成机器语言程序(即目标代码)。,汇编程序,容易让人们所识别、记忆和读写,但不能为机器直接识别执行,001010010101010101010101机器语言程序(即目标代码,机器可以识别执行010101010101)010101010101,高级语言,是面向过程

3、和问题并能独立于机器的通用程序设计语言,是一种接近人们自然语言和常用数学表达式的计算机语言。 高级语言编写的程序是不能被机器直接执行的,但可以被常驻在内存或磁盘上的解释程序或编译程序等编译成目标代码后才能被机器所执行。,独立于机器,可移植性强结构化设计,程序清晰,但是占用存储空间大,编译程序,001010010101010101010101机器语言程序(即目标代码,机器可以识别执行010101010101)010101010101,指令性语句使CPU执行一个具体的操作。伪指令不要求计算机做任何操作,也没有对应的机器码,不产生目标程序,不影响程序的执行,仅仅是能够帮助进行汇编的一些指令。,4.1

4、.2 汇编语言构成,指令性语句:111条指令的助记符语句。指示性语句:伪指令语句。,11,常用伪指令 单片机汇编语言程序设计中,除了使用指令系统规定的指令外,还要用到一些伪指令。伪指令又称指示性指令,具有和指令类似的形式,但汇编时伪指令并不产生可执行的目标代码,只是对汇编过程进行某种控制或提供某些汇编信息。下面对常用的伪指令作一简单介绍。,用来指定程序或数据的起始位置; 给出一些连续存放数据的地址; 为中间运算结果保留一部分存储空间; 为源程序中的符号和标号赋值; 表示源程序结束等等。 不同版本的汇编语言,伪指令的符号和含义可能有所不同,但基本用法是相似的。,伪指令可以,伪指令列表,1、 OR

5、G设置目标程序起始地址伪指令2、 END结束汇编伪指令3、 DB定义字节伪指令4、 DW定义字伪指令 5、 DS预留存储空间伪指令6、 EQU等值伪指令7、 DATA数据地址赋值8、 BIT位地址定义伪指令,14,一、 汇编起始指令 ORG 指令格式为: ORG nn 该伪指令的功能是规定其后面的目标程序或数据块的起始地址。它放在一段源程序(主程序、子程序)或数据块的前面,说明紧跟在其后的程序段或数据块的起始地址就是ORG后面给出的地址。例如: ORG 2000HSTART:MOV A,#7FH 。,例如: ORG 2000HSTART:MOV A,#7FH,格式:标号: ORG 地址(十六进

6、制表示),2000H,1FFFH,2001H,机器码:74 7FH,16,二、 汇编结束指令END 指令格式: 标号: END 地址或标号 格式中标号以及END后面的地址或标号可有可无。功能: 提供汇编结束标志。汇编程序遇到END后就停止汇编, 对 END以后的语句不予处理, 故END应放在程序的结束处。,17,三、等值指令EQU ( Equal )指令格式: 字符名称 EQU 数字或汇编符号功能: 使指令中的字符名称等价于给定的数字或汇编符号。 特别注意: 必须先赋值后使用, 同一个标号只能赋值一次。 例: PA EQU 8001H 即给字符PA赋值为8001H。,书:131页。编程好习惯之

7、一:上下对齐! ORG 0500HAA EQU R1BB EQU 10HDELAY EQU 07E6H MOV R0, BB ;R0(10H) MOV A, AA ;A R1 LCALL DELAY ;调07E6H子程序,该伪指令的功能与EQU类似,可以将DATA右边表达式的 值赋给左边的字符名称。表达式可以是常数、地址标号或表达式,但不可以是一个汇编符号(如R1等)。 DATA和EQU的主要区别是:EQU中的字符名称是先定义后使用,而DATA中的字符名称没有这种限制。 定义8位数据用DATA,定义16位数据用XDATA。,格式:字符名称 DATA 表达式,格式: 字符名称 EQU 数字或汇编

8、符号,四、数据赋值指令DATA,20,五、 定义字节指令DB指令格式: 标号: DB 8位二进制数表功能: 把 8 位二进制数表依次存入从标号开始的连续的存储单元中。 标号区段可有可无, DB指令之后的 8 位二进制数表是一个字节常数或用逗号隔开的字节串, 也可以是用引号括起来的ASCII码字符串 (一个 ASCII字符相当于一个字节)。,ORG 2000HTAB1: DB 30H,8AH, 73 DB 01011010B, 5, A,2000H,2001H,2002H,2003H,2004H,2005H,由于ORG 2000H,所以TAB1的地址为2000H,因此,以上伪指令经汇编后,将对2

9、000H开始的连续存储单元赋值:,;十进制数73以十六进制数存放; 01011010B=5AH;35H是数字5的ASCII码;41H是字母A的ASCII码,22,六、 定义字指令DW指令格式: 标号: DW 16 位数据表功能:与DB相似, 区别仅在于从指定地址开始存放的是指令中的 16 位数据。每个 16 位数据要占两个存储单元, 高8 位先存, 低 8 位后存, 这和MCS -51指令中的16位数据存放顺序是一致的。,ORG 1500HTAB2: DW 1234H,80H,10,1500H,汇编以后:,1501H,1502H,1503H,1504H,1505H,24,七. 定义空间伪指令D

10、S 格式: 标号: DS 表达式 功能:从指定的地址开始,保留若干个存储单元作为备用的空间。,ORG 1000HSPC:DS 20H DB 30H,8FH,汇编后从1000H开始,预留32(20H)个字节的内存单元,然后从1020H开始,按照下一条DB指令赋值,即(1020H)=30H,(1021H)=8FH。,1000H,1020H,0FFFH,1021H,101FH,26,八、BIT位地址赋值伪指令格式: 字符名称 BIT 位地址功能: 把右边的位地址赋给左边的“字符名”。例如: ORG 0300H A1 BIT 00H A2 BIT P1.0 MOV C,A1 MOV A2,C,4.2

11、源程序的设计步骤和汇编,设计步骤1、拟定设计任务书2、建立数学模型3、确立算法4、绘制程序流程图5、编制汇编语言源程序6、上机调试,28,单片机汇编语言程序设计的基本步骤如下: (1) 题意分析 (2) 画出程序流程图,熟悉并了解汇编语言指令的基本格式和主要特点,明确被控对象对软件的要求,设计出算法。,程序流程图也称为程序框图,是根据控制流程设计的,它可以使程序清晰,结构合理,便于调试。,29,(3) 分配内存工作区及有关端口地址 (4) 编制汇编源程序, 养成在程序的适当位置上加上注释的好习惯。 (5) 编译、仿真、调试程序。 (6) 固化程序。,分配内存工作区,要根据程序区、数据区、暂存区

12、、堆栈区等预计所占空间大小,对片内外存储区进行合理分配并确定每个区域的首地址,便于编程使用。,4.2 源程序的设计步骤和汇编,汇编(汇编程序) 源程序 目标码 (汇编语言) (机器语言) 反汇编(汇编程序),汇编和反汇编示意图,4.2 源程序的设计步骤和汇编,汇编1、人工汇编2、机器汇编,第一次汇编:翻译机器码第二次汇编:计算偏移量,人工汇编,4.2 源程序的设计步骤和汇编,汇编1、人工汇编2、机器汇编,第一次汇编:翻译机器码第二次汇编:计算偏移量,机器汇编,汇编软件,汇编源程序,目标代码(机器语言),4.3.1 简单程序设计4.3.2 分支程序设计4.3.3 散转程序设计4.3.4 循环程序

13、设计4.3.5 查表程序设计4.3.6 子程序设计和参数传递,4.3 汇编语言程序设计,例 1 两个无符号双字节数相加。 设被加数存放于内部RAM的40H(高位字节), 41H(低位字节), 加数存放于50H(高位字节), 51H(低位字节), 和数存入 40H和41H单元中。,4.3.1 简单程序设计,没有分支、顺序执行的程序,+,CY,ORG 0000H LJMP MAIN ORG 0100H MAIN: CLR C ; 将Cy清零 MOV R0, 41H ; 将被加数地址送数据指针R0 MOV R1, 51H ; 将加数地址送数据指针R1 AD1: MOV A, R0 ; 被加数低字节的内容送入A ADD A, R1 ; 两个低字节相加 MOV R0, A ; 低字节的和存入被加数低字节中 DEC R0 ; 指向被加数高位字节 DEC R1 ; 指向加数高位字节 MOV A, R0 ; 被加数高位字节送入A ADDC A, R1 ; 两个高位字节带Cy相加 MOV R0, A ; 高位字节的和送被加数高位字节SJMP $ END,

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

当前位置:首页 > 商业/管理/HR > 其它文档

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