4第四章课件汇编语言程序设计 (2)讲义教材

上传人:yuzo****123 文档编号:143093569 上传时间:2020-08-26 格式:PPT 页数:68 大小:1.05MB
返回 下载 相关 举报
4第四章课件汇编语言程序设计 (2)讲义教材_第1页
第1页 / 共68页
4第四章课件汇编语言程序设计 (2)讲义教材_第2页
第2页 / 共68页
4第四章课件汇编语言程序设计 (2)讲义教材_第3页
第3页 / 共68页
4第四章课件汇编语言程序设计 (2)讲义教材_第4页
第4页 / 共68页
4第四章课件汇编语言程序设计 (2)讲义教材_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《4第四章课件汇编语言程序设计 (2)讲义教材》由会员分享,可在线阅读,更多相关《4第四章课件汇编语言程序设计 (2)讲义教材(68页珍藏版)》请在金锄头文库上搜索。

1、2020/8/26,1,4.1 程序编制的方法和技巧,本章分为四节,主要介绍:,4.3 基本程序结构,4.2 源程序的编辑和汇编,4.4 常用程序举例,2020/8/26,2,4.1 程序编制的方法和技巧,4.1.1程序编制的步骤,一、任务分析,首先,要对单片机应用系统完成的任务进行深入的分析,明确系统的设计任务、功能要求和技术指标。其次,要对系统的硬件资源和工作环境进行分析。这是单片机应用系统程序设计的基础和条件。,2020/8/26,3,二、进行算法的优化,算法是解决具体问题的方法。应用系统经过分析、研究和明确规定后,对应实现的功能和技术指标可以利用严密的数学方法或数学模型来描述,从而把实

2、际问题转化成由计算机进行处理的问题。,同一个问题的算法可以有多种,结果也可能不尽相同,所以,应对各种算法进行分析比较,并进行合理的优化。比如,用迭代法解微分方程,需要考虑收敛速度的快慢(即在一定的时间里能否达到精度要求)。而有的问题则受内存容量的限制而对时间要求并不苛刻。对于后一种情况,速度不快但节省内存的算法则应是首选。,2020/8/26,5,清晰正确的流程图是编制正确无误的应用程序的基础和条件。所以,绘制一个好的流程图,是程序设计的一项重要内容。,流程图可以分为总流程图和局部流程图。总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系。局部流程图反映程序模块的具体实施细节。对于简单的

3、应用程序,可以不画流程图。但是当程序较为复杂时,绘制流程图是一个良好的编程习惯。,2020/8/26,6,常用的流程图符号有:开始和结束符号、工作任务符号、判断分支符号、程序连接符号、程序流向符号等,2020/8/26,7,4.1.2 编制程序的方法和技巧,一、采用模块化程序设计方法,应用系统的程序由包含多个模块的主程序和各种子程序组成。各程序模块都要完成一个明确的任务,实现某个具体的功能,如:发送、接收、延时、打印和显示等。,模块化的程序设计方法具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和

4、可靠性,使程序的结构层次一目了然。,2020/8/26,8,二、尽量采用循环结构和子程序,采用循环结构和子程序可以使程序的长度减少、占用内存空间减少。,多重循环,注意各重循环的初值和循环结束条件,避免出现 “死循环”现象;,通用的子程序,除了用于存放子程序入口参数的寄存器外,子程序中用到的其它寄存器的内容应压入堆栈进行现场保护,并要特别注意堆栈操作的压入和弹出的平衡;,中断处理子程序除了要保护程序中用到的寄存器外,还应保护标志寄存器。,2020/8/26,9,4.1.3 汇编语言的语句格式,语句行由四个字段组成 : 标号:操作码 操作数 ;注释,括号内的部分可以根据实际情况取舍。每个字段之间要

5、用分隔符分隔,可以用作分隔符的符号有空格、冒号、逗号、分号等。 如:LOOP:MOV A,# 7FH ;A7FH,2020/8/26,10,一、标号,标号是语句地址的标志符号,用于引导对该语句的非顺序访问。有关标号的规定为:,二、操作码 操作码用于规定语句执行的操作。它是汇编语句中唯一不能空缺的部分。它由指令助记符表示。,由18个ASCII字符组成。第一个字符必须是字母,其余字符可以是字母、数字或其他特定字符; 不能使用已经定义了的符号作为标号。如指令助记符、寄存器符号名称等; 后边必须跟冒号。,2020/8/26,11,三、操作数,操作数用于给指令的操作提供数据或地址。在一条汇编语句中操作数

6、可能是空缺的,也可能包括一项,还可能包括两项或三项。各操作数间以逗号分隔。操作数字段的内容可能包括以下几种情况:,(1)工作寄存器名; (2)特殊功能寄存器名; (3)标号名; (4)常数; (5)符号“$”,表示程序计数器PC的当前值; (6)表达式。,2020/8/26,12,四、注释 注释只是对语句的说明。注释字段可以增加程序的可读性,有助于编程人员的阅读和维护。注释字段必须以分号“;”开头,长度不限,当一行书写不下时,可以换行接着书写,但换行时应注意要在开头使用分号“;”。,五、数据的表示形式 数据可以有以下几种表示形式: 二进制数,末尾以字母 B 标识。如:1000 1111B; 十

7、进制数,末尾以字母 D 标识或将字母D省略。如:88D,66; 十六进制数,末尾以字母 H 标识。如:78H,0A8H(但应注意的是,十六进制数以字母AF开头时应在其前面加上数字“0”。); ASCII码,以单引号括起来标识。如:AB,1245,2020/8/26,13,4.2 源程序的编辑和汇编,一、源程序的编辑 源程序的编写要依据80C51汇编语言的基本规则,特别要用好常用的汇编命令(即伪指令),例如下面的程序段: ORG 0040H MOV A,#7FH MOV R1,#44H END 这里的ORG和END是两条伪指令,其作用是告诉汇编程序此汇编源程序的起止位置。编辑好的源程序应以“ .

8、 ASM”扩展名存盘,以备汇编程序调用。,4.2.1 源程序的编辑与汇编,2020/8/26,14,二、源程序的汇编,将汇编语言源程序转换为单片机能执行的机器码形式的目标程序的过程叫汇编。常用的方法有两种:,手工汇编时,把程序用助记符指令写出后,通过手工方式查指令编码表,逐个把助记符指令翻译成机器码,然后把得到的机器码程序(以十六进制形式)键入到单片机开发机中,并进行调试。,机器汇编是在常用的个人计算机PC上,使用交叉汇编程序将汇编语言源程序转换为机器码形式的目标程序。生成的目标程序由PC机传送到开发机上,经调试无误后,再固化到单片机的程序存储器ROM中。,2020/8/26,15,源程序经过

9、机器汇编后,形成的若干文件中含有两个主要文件,一是列表文件,另一个是目标码文件。因汇编软件的不同,文件的格式及信息会有一些不同。但主要信息如下:,列表文件: 地 址 目标码 汇编程序 ORG 0040H 0040H 747F MOV A,#7FH 0042H 7944 MOV R1,#44H END 目标码文件: 首地址 末地址 目标码 0040H 0044H 747F7944,2020/8/26,16,伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。它不是单片机执行的指令,所以没有对应的可执行目标码,汇编后产生的目标程序中不会再出现伪指令。,4.2.2 伪指令,一、起始地址设定伪

10、指令 ORG 格式为: ORG 表达式 该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址。表达式通常为16进制地址,也可以是已定义的标号地址。,2020/8/26,17,ORG 8000H START:MOV A,#30H 此时规定该段程序的机器码从地址8000H单元开始存放。,在每一个汇编语言源程序的开始,都要设置一条ORG伪指令来指定该程序在存储器中存放的起始位置。若省略ORG伪指令,则该程序段从0000H单元开始存放。在一个源程序中,可以多次使用ORG伪指令规定不同程序段或数据段存放的起始地址,但要求地址值由小到大依序排列,不允许空间重叠。,2020/8/26,18,二

11、、汇编结束伪指令 END 格式为: END 该指令的功能是结束汇编。 汇编程序遇到END伪指令后即结束汇编。处于END之后的程序,汇编程序将不处理。,2020/8/26,19,三、字节数据定义伪指令 DB 标号: DB 字节数据表 功能是从标号指定的地址开始,在ROM中定义字节数据。该伪指令将字节数据表中的数据根据从左到右的顺序依次存放在指定的存储单元中。一个数据占一个存储单元。例如:,DB “how are you?” 把字符串中的字符以ASCII码的形式存放在连续的ROM单元中。又如: DB 2,4,6,8,10,18 把6个数转换为十六进制表示(FEH,FCH,FAH,08H,0AH,1

12、2H),并连续地存放在6个ROM。,2020/8/26,20,该伪指令常用于存放数据表格。如要存放显示用的十六进制的字形码,可以用多条DB指令完成: DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H DB 80H,90H,88H,83H DB C6H,A1H,86H,84H,2020/8/26,21,四、字数据定义伪指令 DW 标号: DW 字数据表 功能是从标号指定的地址单元开始,在程序存储器中定义字数据。该伪指令将字或字表中的数据根据从左到右的顺序依次存放在指定的存储单元中。应特别注意:16位的二进制数,高8位存放在低地址单元,低8位存放在高地址单元。例

13、如:,ORG 1400H DATA:DW 324AH,3CH 汇编后,(1400H)=32H,(1401H)= 4AH,(1402H)=00H,(1403H)=3CH。,2020/8/26,22,五、定义存储空间伪指令 DS 标号: DS 表达式 功能是从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数的存储单元作为备用的空间,并都填以零值。例如:,ORG 3000H BUF:DS 50 汇编后,从地址3000H开始保留50个存储单元作为备用单元。,2020/8/26,23,六、赋值伪指令 EQU 符号名 EQU 表达式 功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号

14、名。例如:,2020/8/26,24,LEN EQU 10 SUM EQU 21H BLOCK EQU 22H CLR A MOV R7,LEN MOV R0,BLOCK LOOP:ADD A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A END 该程序的功能是,把BLOCK单元开始存放的10个无符号数进行求和,并将结果存入SUM单元中。,2020/8/26,25,七、位地址符号定义伪指令 BIT 格式为: 符号名 BIT 位地址表达式 功能是将位地址赋给指定的符号名。其中,位地址表达式可以是绝对地址,也可以是符号地址。,例如: ST BIT P1.0 将P1.0的位地址赋

15、给符号名ST,在其后的编程中就可以用ST来代替P1.0。,2020/8/26,26,4.3 基本程序结构,4.3.1 顺序程序 顺序程序是指无分支、无循环结构的程序。其执行流程是依指令在存储器中的存放顺序进行的。 一、数据传送 例 内部RAM的2AH2EH单元中存储的数据如图所示。试编写程序实现图示的数据传送结果。,: :,2020/8/26,27,方法一: MOV A,2EH ;2字节,1个机器周期 MOV 2EH,2DH ;3字节,2个机器周期 MOV 2DH,2CH ;3字节,2个机器周期 MOV 2CH,2BH ;3字节,2个机器周期 MOV 2BH,#00H ;3字节,2个机器周期,2020/8/26,28,方法二: CLR A ;1字节,1个机器周期 XCH A,2BH ;2字节,1个机器周期 XCH A,2CH ;2字节,1个机器周期 XCH A,2DH ;2字节,1个机器周期 XCH A,2EH ;2字节,1个机器周期 以上两种方法均可以实现所要求的传送任务。方法一使用14个字节的指令代码,执行时间为9个机器周期;方法二仅用了9个字节的代码,执行时间也减少到了5个机器周期。实际应用中应尽量采用指令代码字节数少、执行时间短的高效率程序,即注意程序的优化。,2020/8/26,29,例 有

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

最新文档


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

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