04第四章课件(汇编语言程序设计).ppt
《04第四章课件(汇编语言程序设计).ppt》由会员分享,可在线阅读,更多相关《04第四章课件(汇编语言程序设计).ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、14.1 程序编制的方法和技巧程序编制的方法和技巧.2本章分为四节,主要介绍:本章分为四节,主要介绍:4.3 基本程序结构基本程序结构.264.2 源程序的编辑和汇编源程序的编辑和汇编.13 4.4 常用程序举例常用程序举例.5524.1 程序编制的方法和技巧程序编制的方法和技巧 4.1.14.1.1程序程序编编制的步制的步骤骤一、任务分析一、任务分析 首先,要对单片机应用系统要完成的任首先,要对单片机应用系统要完成的任务进行深入的分析,明确系统的务进行深入的分析,明确系统的设计任务、设计任务、功能要求和技术指标。功能要求和技术指标。其次,要对系统的其次,要对系统的硬件资源硬件资源和和工作环境
2、工作环境进行分析。这是单片进行分析。这是单片机应用系统程序设计的基础和条件。机应用系统程序设计的基础和条件。3二、进行算法的优化二、进行算法的优化 算法是解决具体问题的方法算法是解决具体问题的方法。应用系统经过分析、。应用系统经过分析、研究和明确规定后,对应实现的功能和技术指标可研究和明确规定后,对应实现的功能和技术指标可以利用严密的数学方法或数学模型来描述,从而把以利用严密的数学方法或数学模型来描述,从而把实际问题转化成由计算机进行处理的问题。实际问题转化成由计算机进行处理的问题。同一个问题的算法可以有多种,结果也可能不尽同一个问题的算法可以有多种,结果也可能不尽相同,所以,应对各种算法进行
3、分析比较,并进行相同,所以,应对各种算法进行分析比较,并进行合理的优化。合理的优化。比如,用迭代法解微分方程,需要考比如,用迭代法解微分方程,需要考虑收敛速度的快慢(即在一定的时间里能否达到精虑收敛速度的快慢(即在一定的时间里能否达到精度要求)。而有的问题则受内存容量的限制而对时度要求)。而有的问题则受内存容量的限制而对时间要求并不苛刻。对于后一种情况,速度不快但节间要求并不苛刻。对于后一种情况,速度不快但节省内存的算法则应是首选。省内存的算法则应是首选。4三、程序总体设计及流程图绘制三、程序总体设计及流程图绘制 经过任务分析、算法优化后,就可以进经过任务分析、算法优化后,就可以进行程序的行程
4、序的总体构思总体构思,确定,确定程序的结构程序的结构和和数数据形式,据形式,并考虑并考虑资源的分配资源的分配和和参数的计算参数的计算等。然后根据程序运行的过程,勾画出等。然后根据程序运行的过程,勾画出程程序执行的逻辑顺序,用图形符号将总体设序执行的逻辑顺序,用图形符号将总体设计思路及程序流向绘制在平面图上计思路及程序流向绘制在平面图上,从而,从而使程序的结构关系直观明了,便于检查和使程序的结构关系直观明了,便于检查和修改。修改。5清晰正确的流程图是编制正确无误的应用程清晰正确的流程图是编制正确无误的应用程序的基础和条件。所以,绘制一个好的流程序的基础和条件。所以,绘制一个好的流程图,是程序设计
5、的一项重要内容。图,是程序设计的一项重要内容。流程图可以分为流程图可以分为总流程图总流程图和和局部流程图局部流程图。总。总流程图侧重反映程序的逻辑结构和各程序模流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系。局部流程图反映程序模块之间的相互关系。局部流程图反映程序模块的具体实施细节。对于简单的应用程序,块的具体实施细节。对于简单的应用程序,可以不画流程图。可以不画流程图。但是当程序较为复杂时,但是当程序较为复杂时,绘制流程图是一个良好的编程习惯。绘制流程图是一个良好的编程习惯。6常用的流程图符号有:开始和结束符号、工常用的流程图符号有:开始和结束符号、工作任务符号、判断分支符号、程序连
6、接符号、作任务符号、判断分支符号、程序连接符号、程序流向符号等程序流向符号等 74.1.2 4.1.2 编编制程序的方法和技巧制程序的方法和技巧一、采用模块化程序设计方法一、采用模块化程序设计方法 应应用用系系统统的的程程序序由由包包含含多多个个模模块块的的主主程程序序和和各各种种子子程程序序组组成成。各各程程序序模模块块都都要要完完成成一一个个明明确确的的任任务务,实实现现某某个个具具体体的的功功能能,如如:数数据据采采集集、数数据据处处理理、发送、接收、延时、打印和显示等。发送、接收、延时、打印和显示等。模模块块化化的的程程序序设设计计方方法法具具有有明明显显的的优优点点。把把一一个个多多
7、功功能能的的复复杂杂的的程程序序划划分分为为若若干干个个简简单单的的、功功能能单单一一的的程程序序模模块块,有有利利于于程程序序的的设设计计和和调调试试,有有利利于于程程序序的的优优化化和和分分工工,提提高高了了程程序序的的阅阅读读性性和和可可靠靠性性,使程序的结构层次一目了然。使程序的结构层次一目了然。8二、尽量采用循环结构和子程序二、尽量采用循环结构和子程序 采用循环结构和子程序可以使程序的长度采用循环结构和子程序可以使程序的长度减少、占用内存空间减少。减少、占用内存空间减少。多重循环多重循环,注意各重循环的初值和循环结束条件,注意各重循环的初值和循环结束条件,避免出现避免出现“死循环死循
8、环”现象;现象;通用的子程序通用的子程序,除了用于存放子程序入口参数的,除了用于存放子程序入口参数的寄存器外,子程序中用到的其它寄存器的内容应寄存器外,子程序中用到的其它寄存器的内容应压入堆栈进行现场保护,并要特别注意堆栈操作压入堆栈进行现场保护,并要特别注意堆栈操作的压入和弹出的平衡;的压入和弹出的平衡;中断处理子程序中断处理子程序除了要保护程序中用到的除了要保护程序中用到的寄存器外,还应保护标志寄存器。寄存器外,还应保护标志寄存器。94.1.3 4.1.3 汇编语汇编语言的言的语语句格式句格式语语句行由四个字段句行由四个字段组组成成 :标标号:号:操作操作码码 操作数操作数 ;注;注释释
9、括号内的部分可以根据括号内的部分可以根据实际实际情况取舍。每个情况取舍。每个字段之字段之间间要用分隔符分隔,可以用作分隔符的要用分隔符分隔,可以用作分隔符的符号有空格、冒号、逗号、分号等。符号有空格、冒号、逗号、分号等。如:如:LOOPLOOP:MOV AMOV A,#7FH#7FH;A7FHA7FH10一、标号一、标号 标号标号是语句地址的标志符号是语句地址的标志符号,用于引导对该语句的,用于引导对该语句的非顺序访问。非顺序访问。有关标号的规定有关标号的规定为:为:二、操作码二、操作码 操作码用于操作码用于规定语句执行的操作规定语句执行的操作。它是汇编语句中。它是汇编语句中唯一不能空缺的部分
10、。它由指令助记符表示。唯一不能空缺的部分。它由指令助记符表示。由由18个个ASCII字符组成。字符组成。第一个字符必须是字母第一个字符必须是字母,其余字符可以是字母、数字或其他特定字符;其余字符可以是字母、数字或其他特定字符;不能使用已经定义了的符号作为标号。如指令助记不能使用已经定义了的符号作为标号。如指令助记符、寄存器符号名称等;符、寄存器符号名称等;后边必须跟冒号。后边必须跟冒号。11三、操作数三、操作数 操作数用于给指令的操作操作数用于给指令的操作提供数据提供数据或或地址地址。在一。在一条汇编语句中操作数可能是空缺的,也可能包括一条汇编语句中操作数可能是空缺的,也可能包括一项,还可能包
11、括两项或三项。各操作数间以逗号分项,还可能包括两项或三项。各操作数间以逗号分隔。操作数字段的内容可能包括以下几种情况:隔。操作数字段的内容可能包括以下几种情况:(1)工作寄存器名;)工作寄存器名;(2)特殊功能寄存器名;)特殊功能寄存器名;(3)标号名;)标号名;(4)常数;)常数;(5)符号)符号“$”,表示程序计数器,表示程序计数器PC的当前值;的当前值;(6)表达式。)表达式。12四、注释四、注释 注释只是对语句的说明注释只是对语句的说明。注释字段可以增加程序的。注释字段可以增加程序的可读性,有助于编程人员的阅读和维护。注释字段必须可读性,有助于编程人员的阅读和维护。注释字段必须以分号以
12、分号“;”开头,长度不限,当一行书写不下时,可开头,长度不限,当一行书写不下时,可以换行接着书写,但换行时应注意要在开头使用分号以换行接着书写,但换行时应注意要在开头使用分号“;”。五、数据的表示形式五、数据的表示形式数据数据可以有以下几种表示形式:可以有以下几种表示形式:二进制数,末尾以字母二进制数,末尾以字母 B 标识。如:标识。如:1000 1111B;十进制数,末尾以字母十进制数,末尾以字母 D 标识或将字母标识或将字母D省略。如:省略。如:88D,66;十六进制数,末尾以字母十六进制数,末尾以字母 H 标识。如:标识。如:78H,0A8H(但应注意的是,(但应注意的是,十六进制数以字
13、母十六进制数以字母AF开头时应在其前面加上数字开头时应在其前面加上数字“0”。);。);ASCII码码,以单引号括起来标识。如:,以单引号括起来标识。如:AB,1245 134.2 源程序的源程序的编辑编辑和和汇编汇编 一、源程序的编辑一、源程序的编辑 源程序的编写要依据源程序的编写要依据80C51汇编语言的基本规则,汇编语言的基本规则,特别要用好常用的汇编命令(即伪指令),例如下特别要用好常用的汇编命令(即伪指令),例如下面的程序段:面的程序段:ORG 0040H MOV A,#7FH MOV R1,#44H END 这里的这里的ORG和和END是两条伪指令,其作用是告诉是两条伪指令,其作用
14、是告诉汇编程序此汇编源程序的起止位置。编辑好的源程汇编程序此汇编源程序的起止位置。编辑好的源程序应以序应以“.ASM”扩展名存盘,以备汇编程序调用。扩展名存盘,以备汇编程序调用。4.2.1 4.2.1 源程序的源程序的编辑编辑与与汇编汇编14二、源程序的汇编二、源程序的汇编 将汇编语言源程序转换为单片机能执行的机器码形将汇编语言源程序转换为单片机能执行的机器码形式的目标程序的过程叫汇编式的目标程序的过程叫汇编。常用的方法有两种:。常用的方法有两种:手工汇编手工汇编时,把程序用助记符指令写出后,通过手工时,把程序用助记符指令写出后,通过手工方式查指令编码表,逐个把助记符指令翻译成机器码,方式查指
15、令编码表,逐个把助记符指令翻译成机器码,然后把得到的机器码程序(以十六进制形式)键入到然后把得到的机器码程序(以十六进制形式)键入到单片机开发机中,并进行调试。单片机开发机中,并进行调试。机器汇编机器汇编是在常用的个人计算机是在常用的个人计算机PC上,使用交叉汇上,使用交叉汇编程序将汇编语言源程序转换为机器码形式的目标程编程序将汇编语言源程序转换为机器码形式的目标程序。生成的目标程序由序。生成的目标程序由PC机传送到开发机上,经调试机传送到开发机上,经调试无误后,再固化到单片机的程序存储器无误后,再固化到单片机的程序存储器ROM中。中。15 源程序经过机器汇编后,形成的若干文件源程序经过机器汇
16、编后,形成的若干文件中含有两个主要文件,中含有两个主要文件,一是列表文件一是列表文件,另一个另一个是目标码文件是目标码文件。因汇编软件的不同,文件的格。因汇编软件的不同,文件的格式及信息会有一些不同。但主要信息如下:式及信息会有一些不同。但主要信息如下:列表文件:列表文件:地地 址址 目标码目标码 汇编程序汇编程序 ORG 0040H0040H 747F MOV A,#7FH0042H 7944 MOV R1,#44H END目标码文件:目标码文件:首地址首地址 末地址末地址 目标码目标码0040H 0044H 747F794416 伪指令伪指令是汇编程序能够识别并对汇编过程进行是汇编程序能够
17、识别并对汇编过程进行某种控制的汇编命令。它不是单片机执行的指令,某种控制的汇编命令。它不是单片机执行的指令,所以没有对应的可执行目标码,汇编后产生的目所以没有对应的可执行目标码,汇编后产生的目标程序中不会再出现伪指令。标程序中不会再出现伪指令。4.2.2 4.2.2 伪伪指令指令一、起始地址设定伪指令一、起始地址设定伪指令 ORG格式为:格式为:ORG 表达式表达式 该指令的该指令的功能功能是向汇编程序说明下面紧接的程是向汇编程序说明下面紧接的程序段或数据段存放的起始地址。表达式通常为序段或数据段存放的起始地址。表达式通常为16进制地址,也可以是已定义的标号地址。进制地址,也可以是已定义的标号
18、地址。17 ORG 8000HSTART:MOV A,#30H 此时规定该段程序的机器码从地址此时规定该段程序的机器码从地址8000H单元单元开始存放。开始存放。在每一个汇编语言源程序的开始,在每一个汇编语言源程序的开始,都要设置一条都要设置一条ORG伪指令来指定该程序在存储器中存放的起始位伪指令来指定该程序在存储器中存放的起始位置。置。若省略若省略ORG伪指令,则该程序段从伪指令,则该程序段从0000H单元单元开始存放。在一个源程序中,开始存放。在一个源程序中,可以多次使用可以多次使用ORG伪伪指令规定不同程序段或数据段存放的起始地址,但指令规定不同程序段或数据段存放的起始地址,但要求地址值
19、由小到大依序排列要求地址值由小到大依序排列,不允许空间重叠。,不允许空间重叠。18二、汇编结束伪指令二、汇编结束伪指令 END格式为:格式为:END 该指令的该指令的功能功能是结束汇编。是结束汇编。汇编程序遇到汇编程序遇到END伪指令后即结束汇编。伪指令后即结束汇编。处于处于END之后的程序,汇编程序将不处理。之后的程序,汇编程序将不处理。19三、字节数据定义伪指令三、字节数据定义伪指令 DB 标号:标号:DB 字节数据表字节数据表 功能功能是从标号指定的地址开始,在是从标号指定的地址开始,在ROM中定义中定义字节数据。该伪指令将字节数据表中的数据根据从字节数据。该伪指令将字节数据表中的数据根
20、据从左到右的顺序依次存放在指定的存储单元中。一个左到右的顺序依次存放在指定的存储单元中。一个数据占一个存储单元。例如:数据占一个存储单元。例如:DB “how are you?”把字符串中的字符以把字符串中的字符以ASCII码的形式存放在连续的码的形式存放在连续的ROM单元中。又如:单元中。又如:DB -2,-4,-6,8,10,18把把6个数转换为十六进制表示(个数转换为十六进制表示(FEH,FCH,FAH,08H,0AH,12H),并连续地存放在),并连续地存放在6个个ROM。20 该伪指令常用于存放数据表格。如要存放该伪指令常用于存放数据表格。如要存放显示用的十六进制的字形码,可以用多条
21、显示用的十六进制的字形码,可以用多条DB指令完成:指令完成:DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H DB 80H,90H,88H,83H DB C6H,A1H,86H,84H21四、字数据定义伪指令四、字数据定义伪指令 DW 标号:标号:DW 字数据表字数据表 功能功能是从标号指定的地址单元开始,在程序存储是从标号指定的地址单元开始,在程序存储器中定义字数据。该伪指令将字或字表中的数据根器中定义字数据。该伪指令将字或字表中的数据根据从左到右的顺序依次存放在指定的存储单元中。据从左到右的顺序依次存放在指定的存储单元中。应特别注意:应特别注意:16位的
22、二进制数,高位的二进制数,高8位存放在低地址位存放在低地址单元,低单元,低8位存放在高地址单元。例如:位存放在高地址单元。例如:ORG 1400HDATA:DW 324AH,3CH 汇编后,(汇编后,(1400H)=32H,(,(1401H)=4AH,(1402H)=00H,(,(1403H)=3CH。22五、空间定义伪指令五、空间定义伪指令 DS 标号:标号:DS 表达式表达式 功能功能是从标号指定的地址单元开始,在程序存储是从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数的存储单元作为备器中保留由表达式所指定的个数的存储单元作为备用的空间,并都填以零值。例如:用的空间,并都
23、填以零值。例如:ORG 3000HBUF:DS 50 汇编后,从地址汇编后,从地址3000H开始保留开始保留50个存储个存储单元作为备用单元单元作为备用单元。23六、赋值伪指令六、赋值伪指令 EQU符号名符号名 EQU 表达式表达式 功能功能是将表达式的值或特定的某个汇是将表达式的值或特定的某个汇编符号定义为一个指定的符号名。例如:编符号定义为一个指定的符号名。例如:24LEN EQU 10SUM EQU 21HBLOCK EQU 22H CLR A MOV R7,LEN MOV R0,BLOCKLOOP:ADD A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A END 该
24、程序的功能是,把BLOCK单元开始存放的10个无符号数进行求和,并将结果存入SUM单元中。25七、位地址符号定义伪指令七、位地址符号定义伪指令 BIT格式为:格式为:符号名符号名 BIT 位地址表达式位地址表达式 功能功能是将位地址赋给指定的符号名。其中,是将位地址赋给指定的符号名。其中,位地址表达式可以是绝对地址,也可以是符号位地址表达式可以是绝对地址,也可以是符号地址。地址。例如:例如:ST BIT P1.0将将P1.0的位地址赋给符号名的位地址赋给符号名ST,在其后的编,在其后的编程中就可以用程中就可以用ST来代替来代替P1.0。264.3 基本程序基本程序结结构构 4.3.1 顺序程序
25、顺序程序 顺序程序是指无分支、无循环结构的程序。其执行流程是顺序程序是指无分支、无循环结构的程序。其执行流程是依指令在存储器中的存放顺序进行的。依指令在存储器中的存放顺序进行的。一、数据传送一、数据传送 例例 内部内部RAM的的2AH2EH单元中存储的数据如图所示。单元中存储的数据如图所示。试编写程序实现图示的数据传送结果。试编写程序实现图示的数据传送结果。27方法一:方法一:MOV A,2EH ;2字节,字节,1个机器周期个机器周期MOV 2EH,2DH ;3字节,字节,2个机器周期个机器周期MOV 2DH,2CH ;3字节,字节,2个机器周期个机器周期MOV 2CH,2BH ;3字节,字节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 第四 课件 汇编语言 程序设计
限制150内