单片机原理与应用-4汇编语言程序设计.ppt
《单片机原理与应用-4汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《单片机原理与应用-4汇编语言程序设计.ppt(115页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机原理与应用单片机原理与应用-4汇编语言程序设计汇编语言程序设计简介4-1汇编语言概述汇编语言概述汇编语言程序设计汇编语言程序设计4-2顺序程序设计顺序程序设计4-3分支程序设计分支程序设计4-4循环程序设计循环程序设计4-5子程序设计子程序设计4-6汇编语言程序设计实例汇编语言程序设计实例4.1 汇编语言概述1程序设计语言2汇编语言源程序格式3汇编语言伪指令4目标程序的生成一、程序设计语言程序设计语言种类繁多,且还在不断的产生和发展,但总体可以分为以下三类:1.机器语言2.汇编语言3.高级语言机器语言 能直接或经人工(或监控程序)翻译后为机器识别或执行。1.机器语言的两种形式 二进制形式
2、能为机器直接识别和执行 十六进制形式可为监控程序翻译成二进制形式2.机器语言的特点 1)能为机器直接识别和执行 2)有难读、难写、难查错和难交流等四难。汇编语言(Assembly language)汇编语句的集合,是一种面向机器的程序设计语言,因机器而异。1.汇编语句的分类 指示性语句又称伪指令,汇编时不产生机器码,但可为汇编程序识别和执行,以对汇编过程进行控制。指令性语句指令系统中指令的全体汇编语言的特点2.汇编语言的特点:1)符号语言用于编程2)所编程序汇编成机器语言才能为CPU执行3)可直接操作到机器内部的寄存器和RAM单元占用存储空间小,运行速度快。4)汇编语言是面向计算机的,程序设计
3、人员必须对计算机硬件有相当的了解。5)能直接管理和控制硬件设备。6)缺乏通用性,不易移植,编写较困难。高级语言(High-Level Language)是一种面向过程和问题的程序语言,常不因机器而异。例如,Basic,C,C+,Java等特点:1)面向对象和问题的,接近于自然语言和数学表达式。2)独立于机器3)一条语句对应一段汇编语言程序4)经解释(或编译)成机器语言后才能为CPU执行。汇编语言与高级语言的比较:(1)在功能相同条件下,汇编语言源程序生成的目标程序比高级语言源程序生成的目标程序占用存储单元少、执行速度快,一般有速度要求场所尽可能采用汇编语言编写源程序;(2)由于汇编语言的“面向
4、机器”性,能更合理地使用计算机硬件资源,所以在检测、控制、数据采集、通讯等场合比高级语言编程更方便、简捷。二、汇编语言源程序的格式1.名词解释:汇编程序是一种由制造厂家或软件公司提供的实用程序,能把汇编语言源程序翻译成机器语言,供CPU执行。汇编语言源程序设计者编写的程序二、汇编语言源程序格式二、汇编语言源程序格式二、汇编语言源程序格式二、汇编语言源程序格式 汇汇编编语语言言源源程程序序由由源源语语句句组组成成,其其语语句句结结构构四四要要素素按按书写次序依次为:书写次序依次为:1、标号;、标号;2、操作码;、操作码;3、操作数;、操作数;4、注释。、注释。即:即:标号标号:操作码操作码操作数
5、操作数;注释注释如:如:START:MOVR1,30H;(;(30H)R1标号:标号:标号:标号:也叫标号地址或符号地址,位于一条语句的开头也叫标号地址或符号地址,位于一条语句的开头,可以任选或省略。,可以任选或省略。标号由标号由18个英文字母和数字组成,开头必须是个英文字母和数字组成,开头必须是英文字母。当标号的长度超过英文字母。当标号的长度超过8个字符时,汇编程序会个字符时,汇编程序会自动舍去超出的部分。各指令助记符、寄存器名以及伪自动舍去超出的部分。各指令助记符、寄存器名以及伪指令符等保留符号不能用作标号,同一标号也不能在同指令符等保留符号不能用作标号,同一标号也不能在同一程序的不同语句
6、中使用。一程序的不同语句中使用。操作码:操作码:操作码:操作码:用于指示计算机进行何种操作。它可以是指令用于指示计算机进行何种操作。它可以是指令的助记符,如的助记符,如ADD、MOV等;也可以是等;也可以是伪指令语句伪指令语句 中中的定义符,规定这个语句的伪操作功能,如的定义符,规定这个语句的伪操作功能,如END、DB等。等。操作数:操作数:操作数:操作数:一般为立即数、寄存器、直接地址和寄存器间接地一般为立即数、寄存器、直接地址和寄存器间接地址等,具有多种表示形式。址等,具有多种表示形式。对于立即数来说,对于立即数来说,可以是二进制可以是二进制数,加后缀数,加后缀“B”;可以是十进制数,加后
7、缀;可以是十进制数,加后缀“D”或不加后或不加后缀;也可以是十六进制数。缀;也可以是十六进制数。对于直接地址来说,对于直接地址来说,可以是二进可以是二进制数、十进制数或十六进制数,可以是特殊功能寄存器名,制数、十进制数或十六进制数,可以是特殊功能寄存器名,也可以是定义过的标号地址或带加减算符的表达式。例如,也可以是定义过的标号地址或带加减算符的表达式。例如,若若MAX已在某处定义过,则已在某处定义过,则MAX、MAX+2、MAX1等作等作为直接地址来用都是合法的为直接地址来用都是合法的。注释:注释:注释:注释:用于对指令或程序的含义进行注解,一行不够写而需用于对指令或程序的含义进行注解,一行不
8、够写而需另起一行时也要以分号开头。另起一行时也要以分号开头。MCS 51汇编语言的伪指令汇编语言程序变成单片机能执行的机器语言的过程称为汇编,可以手工汇编,也可以由计算机汇编。机器汇编时,在源程序中应向编译软件发出如何完成汇编的指示信息。这些指示信息就是伪指令伪指令。伪指令具有控制汇编程序的输入输出、定义数据和符号、条件汇编、分配存储器空间等功能。不同编译软件的伪指令有所不同。伪指令没有对应的机器码三、汇编语言伪指三、汇编语言伪指三、汇编语言伪指三、汇编语言伪指令令令令伪指令的定义:伪指令的定义:用用汇汇编编语语言言编编写写的的源源程程序序要要通通过过汇汇编编程程序序翻翻译译成成机机器器语语言
9、言表表示示的的目目标标代代码码才才能能被被计计算算机机直直接接识识别别和和执执行行。汇汇编编程程序序对对源源程程序序进进行行汇汇编编时时,还还需需要要一一些些指指令令能能够够对对机机器器的的汇汇编编过过程程进进行行某某种种控控制制,令令其其进进行行一一些些特特殊殊操操作作。例例如如要要指指定定程程序序或或数数据据存存放放的的起起始始地地址址,给给一一些些连连续续存存放放的的数数确定单元以及指示汇编结束等等。这些指令就是伪指令。确定单元以及指示汇编结束等等。这些指令就是伪指令。伪伪指指令令只只是是汇汇编编工工具具的的一一些些约约定定,是是不不能能执执行行的的指指令令,因因而而汇汇编编时时不不会会
10、产产生生可可执执行行的的目目标标代代码码,不不会会影影响响程程序序的的执执行行以以及及代代码码和和数数据据的的分分布。布。汇编语言的构成MCS-51的源程序由指示性语句(伪指令)和指令性语句组成。(1)指令性语句(111条)基本语句,程序设计的主体。特点:指令码 助记符(2)指示性语句(8条)供汇编语言程序识别和执行,对汇编过程进行某种控制。特点:助记符 指令码指令码如下:1.ORG/END伪指令 2.EQU/DATA伪指令 3.DB/DW/DS伪指令 4.BIT伪指令对应对应无对应无对应MCS-51MCS-51常用的伪指令介绍常用的伪指令介绍常用的伪指令介绍常用的伪指令介绍(1 1)ORG
11、ORG(OriginOrigin)定义起始地址伪指令)定义起始地址伪指令格式:格式:标号:标号:ORG 16ORG 16位地址位地址 其中其中方括号方括号中的标号是任选项,可以省略。中的标号是任选项,可以省略。汇汇编编语语言言源源程程序序中中允允许许多多次次使使用用ORGORG伪伪指指令令,但但所所规规定定的的各各程程序序段段存存放放地址不能有重叠。地址不能有重叠。例:例:ORG 1000H START:MOV R1,#01H ADD A,R1 机机器器汇汇编编时时就就把把ORGORG下下面面的的这这段段源源程程序序连连续续存存放放在在以以1000H1000H开开始始的的存存储储单单元内。元内
12、。(2)EQU(Equate)等值伪指令)等值伪指令 格式:格式:字符名称字符名称 EQU 数据或汇编符号数据或汇编符号 该指令通常放在汇编语言源程序的开头,用于给字符名称赋一个特定值,该指令通常放在汇编语言源程序的开头,用于给字符名称赋一个特定值,赋值后,其值在整个程序中都有效。赋值后,其值在整个程序中都有效。在一个源程序中,任何一个标号只能赋值一次。在一个源程序中,任何一个标号只能赋值一次。赋值后的字符名称既可以作地址使用也可以作为立即数使用。赋值后的字符名称既可以作地址使用也可以作为立即数使用。例:例:AA EQU R1 赋值后,赋值后,AA即可代替寄存器即可代替寄存器R1来使用。来使用
13、。例:例:BB EQU 35H TEST EQU 1500HLOOP EQU TEST MOV A,BBLCALL LOOP其中,其中,BB赋值以后被当作直接地址使用,赋值以后被当作直接地址使用,TEST被赋值为被赋值为1500H以后,以后,LOOP也为也为1500H。(3)DATA数据地址赋值伪指令数据地址赋值伪指令格式:格式:字符名称字符名称DATA表达式表达式 该伪指令和该伪指令和EQU类似,用于把右边的表达式赋值给指定的字符名称。类似,用于把右边的表达式赋值给指定的字符名称。DATA伪指令和伪指令和EQU伪指令的区别在于:伪指令的区别在于:DATA伪指令中的表达式除了可以是一个数据或地
14、址以外,还可以是伪指令中的表达式除了可以是一个数据或地址以外,还可以是一个一个包含定义的字符名称在内的表达式包含定义的字符名称在内的表达式,而用,而用EQU定义的字符不能这样定义的字符不能这样使用;使用;EQU可以把汇编符号赋值给字符名,而可以把汇编符号赋值给字符名,而DATA只能把数据赋给字符只能把数据赋给字符名,例如指令名,例如指令AADATAR1就是不合法的;就是不合法的;另外,另外,EQU定义的字符名称必须先定义后使用,而定义的字符名称必须先定义后使用,而DATA没有这种没有这种限制。限制。(4)DB(Define Byte)定义字节伪指令)定义字节伪指令 格式:格式:标号:标号:DB
15、 项或项表项或项表 该伪指令用于从指定的地址单元开始,在该伪指令用于从指定的地址单元开始,在程序存储器中程序存储器中定义一个或若定义一个或若干个字节数据。干个字节数据。其中定义的字节数据可以是二进制数、十进制数、十六进制数,其中定义的字节数据可以是二进制数、十进制数、十六进制数,也可也可以是用引号引起来的以是用引号引起来的ASCII码字符码字符。多个字节数据之间用逗号多个字节数据之间用逗号“,”分隔。分隔。例:例:ORG 2000H TAB1:DB 00101101B,91,02H,AB TAB2:DB 2,8伪指令伪指令ORG指定了标号指定了标号TAB1的地址为的地址为2000H,汇编程序将
16、把以上指令中指定的,汇编程序将把以上指令中指定的内容依次存入从内容依次存入从2000H开始的连续单元中。即汇编后,各单元内容为开始的连续单元中。即汇编后,各单元内容为:(2000H)2DH、(2001H)5BH、(2002H)02H、(2003H)41H、(2004H)42H、(2005H)FEH、(2006H)38H(5)DW(Define Word)定义字伪指令)定义字伪指令格式:格式:标号:标号:DW 1至至8项的项的16位数据位数据 该伪指令功能与该伪指令功能与DB类似,只是在程序存储器中定义的是字类似,只是在程序存储器中定义的是字(16位二进制数),以字为单位先高字节、后低字节依次存
17、入位二进制数),以字为单位先高字节、后低字节依次存入存储单元中。存储单元中。多项数据必须以逗号分开。多项数据必须以逗号分开。例:例:ORG 2000H TAB:DW 2030H,0A3H 汇编后各单元内容依次为汇编后各单元内容依次为:(2000H)20H、(2001H)30H、(2002H)00H、(2003H)A3H(6)DS(Define Storage)定义空间伪指令)定义空间伪指令 格式:格式:标号:标号:DS 表达式表达式 该该伪伪指指令令用用于于从从指指定定地地址址单单元元开开始始,保保留留一一定定数数量量的的内内存存空空间间作作备备用用。汇汇编编时时汇汇编编程程序序根根据据表表达
18、达式式的的值值预预留留相相应应数数量量的的存存储储单单元元而而不不对对这这些些单元赋值。单元赋值。DB、DW和和DS伪指令都只是针对程序存储器而言,不能对数据存储器进伪指令都只是针对程序存储器而言,不能对数据存储器进行相关操作。行相关操作。例:例:ORG 8100H BUFFER DS 10H DW ABDW 100H,1ACH8100H-810FH为缓冲区空间为缓冲区空间;(8110H)=41H;(8111H)=42H;从从(8112H)起存放起存放01H、00H、01H、ACH(7)BIT 位地址赋值伪指令位地址赋值伪指令格式:格式:字符名称字符名称 BIT 位地址位地址 该伪指令用于把位
19、地址赋值给指定的字符名称。该伪指令用于把位地址赋值给指定的字符名称。位地址可以是绝对地址,也可以是符号地址。位地址可以是绝对地址,也可以是符号地址。例:例:A1 BIT ACC.0 A2 BIT 00H前者把前者把ACC.0的位地址赋给的位地址赋给A1,后者把位地址,后者把位地址00H赋给赋给A2,这样定义过的,这样定义过的A1和和A2就可以作为位地址来使用了。就可以作为位地址来使用了。(8)END汇编结束伪指令汇编结束伪指令格式:格式:主程序模块主程序模块标号:标号:END表达式表达式子程序模块子程序模块标号:标号:END 该伪指令是汇编语言源程序的结束标志,用于指示结束汇编。一该伪指令是汇
20、编语言源程序的结束标志,用于指示结束汇编。一个源程序只能有一个个源程序只能有一个END语句,而且必须放在整个程序的末尾。语句,而且必须放在整个程序的末尾。只有只有主程序模块才具有主程序模块才具有表达式表达式,且表达式的值等于该程序模块的,且表达式的值等于该程序模块的入口地址。子程序模块没有该项入口地址。子程序模块没有该项四、目标程序的生成四、目标程序的生成四、目标程序的生成四、目标程序的生成 1、手工汇编:、手工汇编:对对照照汇汇编编语语言言指指令令表表,将将汇汇编编语语言言源源程程序序正正确确翻翻译译成成机机器器语语言言目目标标程程序序,注意多字节指令中的机器码次序。注意多字节指令中的机器码
21、次序。手工汇编需要两次扫描:手工汇编需要两次扫描:(1)第一次扫描:确定每条指令的指令码)第一次扫描:确定每条指令的指令码(2)第第二二次次扫扫描描:确确定定指指令令码码中中的的标标号号值和地址偏移量。值和地址偏移量。2、机器汇编:、机器汇编:借借助助于于PC机机及及汇汇编编程程序序等等工工具具将将汇汇编编语语言源程序翻译成机器语言目标程序。言源程序翻译成机器语言目标程序。通通常常汇汇编编语语言言源源程程序序的的文文件件扩扩展展名名为为“.ASM”,汇汇编编后后生生成成扩扩展展名名为为“.HEX”的的十十六六进进制制机机器器码码文文件件和和扩扩展展名名为为“.LST”的的列表文件等。列表文件等
22、。汇编过程示意图汇编过程示意图 汇编语言程序设计的特点数据的存放、寄存器和工作单元的使用等要由设计者安排。要求设计人员对所使用计算机的硬件结构有较详细的了解,特别是对各类寄存器、端口、定时器/计数器、中断等内容能熟练掌握,以便在程序设计中使用。程序设计的技巧性较高,需要软件与硬件的结合。汇编语言程序设计汇编语言程序设计一、汇编语言程序设计步骤一、汇编语言程序设计步骤二、程序流程图二、程序流程图三、结构程序设计基本模块三、结构程序设计基本模块四、子程序四、子程序一、汇编语言程序设计步骤一、汇编语言程序设计步骤一、汇编语言程序设计步骤一、汇编语言程序设计步骤1、分析问题、分析问题2、确定算法和解决
23、思路、确定算法和解决思路3、绘制程序流程图、绘制程序流程图,分配内存工作单元,分配内存工作单元4、编写汇编语言源程序、编写汇编语言源程序5、程序调试与优化、程序调试与优化二、程序流程图二、程序流程图二、程序流程图二、程序流程图流程图的作用:流程图的作用:流流程程图图是是对对程程序序执执行行过过程程的的图图解解表表示示法法,它它往往往往比比文文字字描描述述更更为为直直观观和和有有效效。其其最最大大特特点点为为各各个个功功能能部部分分以以时时间间为为线线索索有有机机地地联联系系起起来来。从从时时间间顺顺序序上上看看整整个个过过程程条条理理井井然然,所所以以不不仅仅在在程程序序设设计计中中使使用用,
24、还还广广泛泛地地使使用用在在非非计计算算机机操作的其他场合。操作的其他场合。处处理理框框图图:表表示示数数据据处处理理、数数据据传传送送、输输入入/输输出出、某某种种功能等(矩形框)功能等(矩形框)逻逻辑辑判判断断框框图图:有有两两个个走走向向,根根据据条条件件判判断断决决定定程程序序的的去向(棱形)去向(棱形)子子程程序序框框图图:表表示示调调用用子子程程序序(处处理理框框图图中中的的两两端端加加两两竖)竖)起始与终止框图:起始与终止框图:表示程序的开始或结束(鼓形)表示程序的开始或结束(鼓形)连连接接点点框框图图:表表示示程程序序的的连连接接点点,常常用用于于不不同同页页码码中中程程序的连
25、接(小圆)序的连接(小圆)连接箭头符:连接箭头符:表示程序的连接与走向(带箭头线条)表示程序的连接与走向(带箭头线条)常用的流程图的符号:常用的流程图的符号:常用的流程图的符号:常用的流程图的符号:处理框图处理框图起始与终止框起始与终止框逻辑判断框图逻辑判断框图连接点框图连接点框图子程序框图子程序框图连接箭头符连接箭头符n三、结构程序设计基本模块三、结构程序设计基本模块三、结构程序设计基本模块三、结构程序设计基本模块程程序序的的基基本本结结构构是是顺顺序序结结构构、选选择择结结构构和和循循环环结结构构,各种功能复杂的程序都是由这三种基本结构组合而成的。各种功能复杂的程序都是由这三种基本结构组合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 汇编语言 程序设计
限制150内