项目4汇编语言程序设计ppt课件_第1页
项目4汇编语言程序设计ppt课件_第2页
项目4汇编语言程序设计ppt课件_第3页
项目4汇编语言程序设计ppt课件_第4页
项目4汇编语言程序设计ppt课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、工程4 汇编言语程序设计什么是程序设计?程序设计=构造+算法。程序设计就像盖房子,数据构培育像砖、瓦,而算法就是设计图纸。他假想象盖房子首先必需有原料数据构造,但是这些原料不能自动地盖起了他想要的房子;他必需按照设计图纸算法上的阐明一砖一瓦地去砌。这样他才干拥有他想要的房子。程序设计也一样,程序设计时他得按照程序规定的功能去编写,而程序的功能是实现就是算法的详细表达。所以通俗地说:他必需按照特定的规那么,把特定的功能语句和根本构造按照特定的顺序陈列起来,构成一个有特定功能的程序,这就是:程序设计=构造+算法。普通说来,计算机程序设计言语种类很多,不仅有机器言语和汇编言语,还有很多高级言语。对单

2、片机而言,通常运用汇编言语或C言语进展程序设计,程序较大时普通采用C言语编写,但用汇编言语编写的程序执行的效率较高。程序设计完成后,然后利用计算机或人工方法将汇编言语或C言语程序转化为单片机可以执行的机器言语。转换前的汇编言语或C言语程序被称为源程序,转换后的机器言语程序被称为目的程序,转换过程也叫汇编过程,经过计算机或人工转换的方法又被称为计算机汇编或手工汇编。计算机汇编要运用专门的软件,叫汇编软件。工程4 汇编言语程序设计4.1 源程序的编制4.1.1程序设计步骤在对单片机系统进展程序设计时,必需思索硬件资源的配置,当硬件系统设计完成后,可以按照以下步骤进展程序设计。1.预完成义务的分析2

3、.进展算法的优化3.绘制程序流程图4.分配资源5.编写源程序6.程序优化 7.编译,调试,修正和最后确定源程序工程4 汇编言语程序设计用图形符号将总体设计思绪及程序流向绘制在平面图上。从而使程序的构造关系直观明了,便于检查和修正,它直观明晰的表达了程序的设计思绪,是程序设计的根据。绘制流程图时,首先画出简单的功能流程图粗框图,再对功能流程图进展扩展和详细化,即对存储器标志位等单元做详细的分配和阐明,把功能图上的每一个粗框图转化为详细的存储器或地址单元,从而绘制出详细的程序流程图。流线程序执行顺序流向线表示处置功能端点符号程序的开场和终了符号表示判别功能判别符号处置符号衔接符号用来实现流程图之间

4、的衔接程序流程图的绘制工程4 汇编言语程序设计4.1.2 汇编言语源程序的格式汇编言语源程序是由假设干语句组成的,每一语句可由4个部分组成:标号、操作码、操作数及注释。每一部分间以不同的分隔符分隔,语句格式如下:标号: 操作码 目的操作数 源操作数 ;注释 其中 项为可选项,视详细的指令选用.标号是表示该语句所在地址的标志符号,运用标号可方便程序中的其他语句访问该语句。标号由字母打头的1-8个字母数字串组成,但指令保管符、存放器名、位址记忆符、伪指令符等都不能作标号运用。 操作码表示操作的性质,它是汇编指令中独一不能缺省的部分。操作数表示操作的对象,在一条语句中,操作数能够是空白或以逗号分开的

5、几个。 注释是对语句或程序段功能的解释阐明有助于的阅读和维护。工程4 汇编言语程序设计4.1.3 汇编言语源程序的汇编将汇编言语源程序“翻译成机器言语目的程序的过程称为汇编,对单片机助记符的汇编有两种方法:人工汇编和机器汇编。 人工汇编是用人工查表将源程序译成机器码。普通分为两步进展。第一步将源程序中的指令逐条译成目的码,指令中的标号地址待求。第二步由伪指令求出标号所代表的详细地址,进展有关程序存储区的数据操作并进展偏移量的计算。机器汇编是将源程序输入计算机后,由汇编程序实现翻译任务,产生相应的机器码。这是一种非常高效和方便的方法。工程4 汇编言语程序设计4.1.4伪指令在机器汇编时,对汇编过

6、程进展控制和指点的指令称为伪指令。在汇编过程中,伪指令供汇编程序识别和执行但不产生可执行的目的代码。如规定汇编生成的目的代码在ROM中的存放区域,给源程序符号、标号赋值,指示汇编终了等。 每种汇编程序都有本人的伪指令,规范的MCS-51定义的伪指令常用的有以下7条。1.汇编其始地址伪指令ORG(Origin)格式: ORG 16位地址功能: 规定该指令后的下一段源程序经汇编后生成的代码存放的起始地址。例如: ORG 0500HSTART:MOV A,R0 END ORG伪指令总是出如今每段源程序或数据块的开场,汇编言语源程序中多处运用ORG指令,可使程序员把子程序、数据块存放在ROM的任何位置

7、。每当ORG出现时,下条指令的存放地址由此重新定位,所以ORG定义地址的顺序应有小到大,且不能重叠。工程4 汇编言语程序设计2.汇编终了伪指令ENDEnd of Assembly 指令格式:标号:END 功能: 终了汇编言语源程序的操作。 在源程序中只能有一条END,END后所写的指令,汇编程序不予处置。工程4 汇编言语程序设计3.符号赋值伪指令EQU(EQUate) 指令格式:字符称号 EQU 数或汇编符号 功能:将一个数或特定的汇编符号赋给指定的字符称号。 字符称号为一自定的符号,而不是标号,字符称号后无“:。字符称号可用来作数据地址,立刻数,位地址或者是一代码地址,其值可以是一个8位数,

8、也可以是16位数。例如:TEST EQU 20HMOV A,TEST这里字符称号TEST就代表了内部RAM 20H地址单元。又例如:A1 EQU 10HMOV A,A1 这里A1代表片内RAM的直接地址单元10H。运用EQU伪指令可以把笼统的数字地址表示成有一定意义的符号,加强程序的可读性。工程4 汇编言语程序设计4.定义数据字节伪指令DB(Define Byte)格式:标号: DB 项或项表项或项表是指一个字节,逗号隔开的8位二进制的数或字符串,或撇号括起来的ASCII字符串。功能:从标号指定的地址单元开场,在程序存储器中存入一组8位二进制数,或者将一个数据表格存入程序存储器。这条伪指令汇编

9、后影响程序存储器的内容。例如: ORG 1100H TAB: DB 01H,04H,09H,10H DB 00001111B,1,A,BC工程4 汇编言语程序设计5.定义数据字命令DW(Define Word)格式:标号: DW 项或项表功能:DW的功能和DB类似,DW是从标号指定的地址开场存放16位而非8位二进制数,存放时,数据字的高8位在前低地址,低8位在后高地址。例如: ORG 5000H MOV A ,#30H ORG 5020HADDTAB:DW 1234H ,100H,10 ; END 一条DB和DW语句定义的数表其数的个数不得超越80个。当数据的数目较多时,可运用多个定义命令。在

10、MCS51程序设计运用中,常以DW来定义地址。工程4 汇编言语程序设计6.预留存储区伪指令DS(Define Storage)格式:标号: DS 表达式功能:本命令用于从指定地址开场,保管DS之后表达式的值所需数目的字节单元作为存储区以备后用。汇编时,对这些单元不赋值。例如: ORG 0100HMOV A ,#50HADDRTABL:DS 05HDB 20HEND从标号ADDRTABL代表的地址开场,保管5个延续的ROM地址单元,第6个单元存放20H。对MCS51单片机来说,DB,DW,DS伪指令只能对程序存储器运用,而不能对数据存储器进展初始化。工程4 汇编言语程序设计7.位地址赋值伪指令B

11、IT格式:字符称号 BIT 位地址功能:本命令用于给字符称号赋以位地址。其中位地址可以是绝对地址,也可以是符号地址即位符号称号。例如: AQ BIT P1.0 A2 BIT 07H这两条指令分别把P1.0的位地址赋给变量AQ,位地址07H赋给符号名A2,在其后的编程中AQ和A2就可以作为位地址运用。工程4 汇编言语程序设计4.1.5程序设计技巧1.模块化程序设计方法单片机运用系统的程序普通由包含多个模块的主程序和各种子程序组成。每一程序模块都要完成一个明确的义务,实现某个详细的功能,如发送、接纳、延时、打印、显示等。采用模块化的程序设计方法,就是将这些不同的详细功能程序进展独立的设计和分别调试

12、,最后将这些模块程序装配成整体程序并进展联调。工程4 汇编言语程序设计把一个多功能的、复杂的程序划分为假设干个简单的、功能单一的程序模块的程序设计方法具有明显的优点:1单个模块构造的程序功能单一,易于设计、编写、调试及修正;2有利于程序的优化和分工,从而可使多个程序员同时进展程序的编写和调试,加快软件研制进度;3提高了程序的阅读性和可靠性,使程序的构造层次一目了然,同时4对程序的修正可部分进展,其他部分可以坚持不变,便于功能扩展和版本晋级;5对于运用频繁的子程序可以建立子程序库,便于多个模块调用。工程4 汇编言语程序设计模块的划分有很大的灵敏性,但也不能随意划分。划分时应遵照下述原那么:1每个

13、模块应具有独立的功能,能产生一个明确的结果,这就是单模块的功能高内聚性。2模块之间的控制耦合应尽量简单,数据耦合应尽量少,这就是模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换(传送)方式、交换量的多少及交换的频繁程度。3模块长度适中。模块语句的长度通常在20条100条的范围较适宜。模块太长时,分析和调试比较困难,失去了模块化程序构造的优越性;过短那么模块的衔接太复杂,信息交换太频繁,因此也不适宜。工程4 汇编言语程序设计2.程序设计技巧1尽量采用循环构造和子程序。 2尽量少用无条件转移指令。 3对于通用的子程序,思索到其通用性,除了用于存放子程序入口参数

14、的存放器外,子程序中用到的其他存放器的内容应压入堆栈(前往前再弹出) 进展现场维护,并要特别留意堆栈操作的压入和弹出的平衡。普通不用把标志存放器压入堆栈。4对于中断处置子程序除了要维护程序中用到的存放器外,还应维护标志存放器。 5累加器是信息传送的枢纽。 工程4 汇编言语程序设计4.2 程序构造4.2.1 顺序程序顺序构造是按照逻辑操作顺序,从某一条指令开场逐条顺序执行,直至某一条指令为止,无分支,也无循环。顺序构造是一切程序设计中最根本、最单纯的程序构造方式,在程序设计中运用最多,因此是一种最简单且运用最普遍的程序构造。普通实践运用程序远比顺序构造复杂得多,但它是组成复杂程序的根底和主干。工

15、程4 汇编言语程序设计【例4.1】将两个半字节数合并成一个一字节数。设内部RAM40H、41H单元中分别存放着8位二进制数。要求取出两个单元的低半字节,合并成一个字节后,存入42H单元。开场40H内容送A,屏蔽高位A与R1或后送入42H交换高低位,送入R141H内容送A,屏蔽高位前往图4-1 例1程序流程图工程4 汇编言语程序设计【例4.2】用顺序构造程序编写三字节无符号数的加法程序。设被加数存放在: 40H(高字节),41H(中字节),42H(低字节) 加数存放在: 43H(高字节),44H(中字节),45H(低字节) 运算结果仍存在被加数单元中。开场取低字节数据前往相加后送回被加数单元取中

16、字节数据带进位位相加后送回被加数单元取高字节数据带进位位相加后送回被加数单元图4-2 例2程序流程图工程4 汇编言语程序设计4.2.2 分支程序通常,单纯的顺序构造程序只能处理一些简单的算术、逻辑运算,或者简单的查表、传送操作等。实践问题普通都是比较复杂的,总是伴随有逻辑判别或条件选择,要求计算机能根据给定的条件进展判别,选择不同的处置途径,从而表现出某种智能。根据程序要求改动程序执行顺序,即程序的流向有两个或两个以上的出口,根据指定的条件选择程序流向的程序构造我们称为分支程序构造。通常根据分支程序中出口的个数分为单分支构造程序两个出口和多分支构造程序三个或三个以上出口。在MCS-51指令系统

17、中,经过条件判别实现单分支程序转移的指令有JZ、JNZ、CJNE和DJNZ等。此外,还有以位形状为条件,进展程序分支的指令JC、JNC、JB、JNB和JBC等。运用这些指令,可以完成或为0、1,或为正、为负,以及相等、不相等各种条件判别,以实现程序有条件地转移。工程4 汇编言语程序设计1.两分支程序设计【例4.3】两个无符号数比较两分支。内部RAM的30H单元和31H单元各存放了一个8位无符号数,请比较这两个数的大小,大数放在32H中。开场X-YCy=1?30H32H31H32HYN终了4-3 两数比较流程图工程4 汇编言语程序设计2.三分支程序设计【例4.4】两个无符号数比较三分支程序。内部

18、RAM的20H单元和30H单元各存放了一个8位有符号数,根据以下条件编程点亮相应的发光二极管,电路如图4-4所示,。假设20H=30H,那么P2.0管脚衔接的黄色LED发光;假设20H30H,那么P2.1管脚衔接的绿色LED发光;假设20HY ?黄灯点亮YN终了NY红灯点亮绿灯点亮工程4 汇编言语程序设计3.散转程序散转程序是指经过某个条件判别之后,程序有多个流向三个以上。MCS-51单片机指令系统中专门提供了散转指令,使得散转程序的编制更加简约。【例4.5】在例4.4的电路的根底上加两个开关组成简单的信号灯电路,如图4-6所示,试编程实现以下功能。K0 K10 0 都按下,红黄绿灯全亮形状1

19、0 1 K0单独按下,红灯亮形状21 0 K1单独按下,绿灯亮形状31 1 都未按下,黄灯亮形状4工程4 汇编言语程序设计开场读P1口引脚形状A转移指令表基地址DPTR屏蔽无关位散转移形状1形状2形状3形状4前往前往前往前往工程4 汇编言语程序设计4.2.3循环程序循环构造程序是把需求多次反复运用的程序段,利用转移指令反复转向该程序段,从而大大缩短程序代码,减少占用程序空间,程序构造也大大优化。循环程序可以分为单重循环和多重循环,其通常有两种编制方法:一种是先执行后判别,另一种是先判别后执行。如图4-8所示。开场初始化循环处置循环控制循环完成?NY循环终了终了开场初始化循环控制循环完成?NY循

20、环终了终了循环处置工程4 汇编言语程序设计1.单重循环程序设计【例4.6】 数据极值查找程序。设内部RAM 从30H单元开场存放有8个数,找出其中最大的数,放到60H单元。解:极值查找操作的主要内容是进展数值大小比较。假定在比较过程中,以A存放大数,与之逐个比较的另一个数放在50H单元。采用先执行后判别的构造,首先设定比较次数,在比较终了后,把查找到的最大数送到60H单元。程序流程图如图4-9所示。开场数据区首地址R0读下一个数50H(50H)A(A)(50H)?NYA(60H) 终了数据个数R7读第一个数AR7-1R7R7-1=0?NY工程4 汇编言语程序设计【例4.7】 将内部RAM中30

21、H单元开场的数据传送到外部RAM1200H开场的存储空间内,直到发现数据100停顿传送。开场A=100?取内部RAM数据AYN终了传送数据到外部RAM图4-10 例4.7流程图 解:由于循环次数事先不知道,但是循环条件可以测试到,可以采用先判别后执行的程序构造。流程图如图4-10所示。开场A=100?取内部RAM数据AYN终了传送数据到外部RAM图4-10 例4.7流程图工程4 汇编言语程序设计2.多重循环程序设计定时程序在循环内套循环的程序构造称多重循环,或称循环嵌套。假设把每重循环的内部看作一个整体,那么多重循环的构造与单重循环的构造是一样的,也由四部分组成。多重循环的执行过程是从内向外逐

22、层展开的。内层执行完全部循环后,外层那么完成一次循环,逐次类推。因此,每执行一次外层循环,内层必需重新设置初值,故每层均包含完好的循环程序构造。层次必需清楚,层次之间不能有交叉;否那么,将产生错误。定时程序是一种很典型的多重循环程序,其在单片机汇编言语程序设计中运用非常广泛,例如定时检测、定时扫描、定时中断等。所谓定时就是让CPU做一些与主程序功能无关的操作例如将一个数字逐次减1直到为0来空耗掉CPU的时间来到达延时的目的。由于我们知道CPU执行每条指令的准确时间,因此执行整个延时程序的时间也可以准确计算出来。也就是说,我们可以写出延时长度恣意而且精度相当高的延时程序。工程4 汇编言语程序设计

23、【例4.8】设计一个延时50ms的程序,设单片机时钟晶振频率为fosc=12MHz。解:延时程序普通采用循环程序构造编程,经过确定循环程序中的循环次数和循环程序段两个要素来确定延时时间。标题给定fosc=12MHz,那么机器周期的计算方法:T机器=12T时钟=12(1/12M) =1s。下面就是一个最简单的单循环定时程序: MOV R7,#TIMELOOP: NOP NOPDJNZ R7,LOOPNOP指令的机器周期为1,用来提高定时精度,DJNZ指令的机器周期为2,故一次循环共4个机器周期。一个机器周期是1S,那么一次循环的延迟时间为4S。上面程序总的延迟时间为4time(S)。本程序的实践

24、延迟时间取决于装入存放器R7的定时时间常数time。R7是8位存放器,故这个程序的最长定时时间为25641020S,即定时范围是41024S。可见单循环定时程序的时间延迟较小。工程4 汇编言语程序设计为了加长定时时间,通常采用多重循环方法。流程图如图4-11所示。开场外循环次数TIME1R7内循环次数TIME2R6空操作R6-1=0?NYR7-1=0?NY前往图4-11多重循环流程图程序如下: MOV R7,TIME1LOOP2:MOV R6,TIME2LOOP1:NOP DJNZ R6,LOOP1DJNZ R7,LOOP2 RET 最大定时时间计算公式为:2562222561132097S假

25、设定时50ms,采取适宜的TIME1和TIME2即可,如TIME1=200和TIME2=123。工程4 汇编言语程序设计循环控制:在反复执行循环体的过程中,不断修正和判别循环变量,直到符合循环终了条件。普通情况下,循环控制有以下几种方式:1计数循环假设循环次数知,用计数器计数来控制循环次数,这种控制方式用得比较多。循环次数要在初始化部分予置,在控制部分修正,每循环一次计数器内容减1。2条件控制循环在循环次数未知的情况下,普统统过设立终了条件来控制循环的终了。3循环终了处置:这部分程序用于存放执行循环程序所得结果以及恢复各任务单元的初值等。工程4 汇编言语程序设计4.2.4 查表程序在微型机控制系统中,有些参数的计算是非常复杂的,用计算法计算不仅程序长,难于计算,而且需求耗费大量时间。还有一些非线性参数,它们不是用普通算术运算就可以计算出来,而是要涉及到指数,对数,三角函数,以及积分,微分等运算。一切这些运算用汇编言语编程计算都比较复杂,有些甚至无法建立相应的数学模型。为理处理这些问题,可以采用查表法。所谓查表法,就是把事先计算或测得的数据按一定顺序编制成表格,查表程序的义务就是根据被测参数的值或者中间结果,查出最终所需求的结果。它具有程序简单,执行速度快等优点。查表程序在微型机控制系统中运用非常广泛,例如,在键盘处置程序中,查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论