汇编语言程序设计知识

上传人:j****9 文档编号:57353786 上传时间:2018-10-21 格式:PPT 页数:30 大小:215.50KB
返回 下载 相关 举报
汇编语言程序设计知识_第1页
第1页 / 共30页
汇编语言程序设计知识_第2页
第2页 / 共30页
汇编语言程序设计知识_第3页
第3页 / 共30页
汇编语言程序设计知识_第4页
第4页 / 共30页
汇编语言程序设计知识_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《汇编语言程序设计知识》由会员分享,可在线阅读,更多相关《汇编语言程序设计知识(30页珍藏版)》请在金锄头文库上搜索。

1、第四章 汇编语言程序设计知识,返回主目录,4.2 汇编语言源程序的编辑和汇编,4.1.1 编程步骤,4.1.2 编程的方法和技巧,4.1.3 汇编语言程序的基本结构,4.2.1 源程序编辑,4.2.2 源程序的汇编,4.2.3 伪指令,第四章 汇编语言程序设计知识,计算机在完成一项工作时,必须按顺序执行各种操作。这些操作是程序设计人员用计算机所能接受的语言把解决问题的步骤事先描述好的,也就是事先编好计算机程序,再由计算机去执行。汇编语言程序设计,要求设计人员对单片机的硬件结构有较详细的了解。编程时,对数据的存放、寄存器和工作单元的使用等要由设计者安排;而高语言程序设计时,这些工作是由计算机软件

2、完成的,程序设计人员不必考虑。,4.1 编程的步骤、方法和技巧,4.1.1 编程步骤一、分析问题 首先,要对需要解决的问题进行分析,以求对问题有正确的理解。例如,解决问题的任务是什么?工作过程是什么?现有的条件,已知的数据,对运算的精确和速度方面的要求是什么?设计的硬件结构是否方便编程等等。二、确定算法 算法就是如何将实际问题转化成程序模块来处理。 解决一个问题,常常有几种可选择的方法。从数学角度来描述,可能有几种不同的算法。在编制程序以前,先要对不同的算法进行分析、比较,找出最适宜的算法。 ,三、画程序流程图 程序流程图是使用各种图形、符号、有向线段等来说明程序设计过程的一种直观的表示,常采

3、用以下图形及符号: 椭圆框( )或桶行框( )表示程序的开始或结束。 矩形框( )表示要进行的工作。 菱形框( )表示要判断的事情,菱形框内的表达式表示要判断的内容。 圆圈( )表示连接点。 指向线()表示程序的流向。 流程图步骤分得越细致,编写程序时也就越方便。,一个程序按功能可分为若干部分,通过流程图把具有一定功能的各部分有机地联系起来。从而使人们能够抓住程序的基本线索,对全局有完整的了解。这样,设计人员容易发现设计思想上的错误和矛盾,也便于找出解决问题的途径。因此,画流程图是程序结构设计时采用的一种重要手段。一个系统软件要有总的流程图,即主流程图。,四、编写程序 用8051汇编语言编写的

4、源程序行(一条语句)包括四个部分,也叫四个字段,汇编程序能识别它们。这四个字段是: 标号: 操作码 操作数 ;注释 1. 标号 标号是用户定义的符号地址。一条指令的标号是该条指令的符号名字,标号的值是汇编这条指令时指令的地址。标号又以英文字母开始的18个字母或数字串组成,以冒号“:”结尾。 标号可以由赋值伪指令赋值。如果标号没有赋值,汇编程序就把存放该指令目标码第一字节的存储单元的地址赋给该标号,所以。标号又叫指令标号。,2. 操作码 对于一条汇编指令,这个字段是必不可少的,它用一组字母符号表示指令的操作码。在8051中,它由8051的指令系统助记符组成。 3. 操作数 工作寄存器名 特殊功能

5、寄存器名 标号名 常数 $ 表示程序计数器的当前值。 表达式 4. 注释,4.1.2编程的方法和技巧,一、模块化的程序设计方法 1.程序功能模块化的优点采用模块化的程序设计方法,有下述优点:单个模块结构的程序功能单一,易于编写、调试和修改;便于分工,多个程序员同时进行程序的编写和调试工作,加快软件研制进度;程序可读性好,便于功能扩充和版本升级; 对程序的修改可局部进行,其他部分可以保持不变;对于使用频繁的子程序可以建立子程序库,便于多个模块调用。,2.划分模块的原则模块的划分有很大的灵活性,但也不能随意划分。划分模块时应遵循下述原则:每个模块应具有独立的功能,能产生一个明确的结果,这就是单模块

6、的功能高内聚性。 模块之间的控制耦合应尽量简单,数据耦合应尽量少,这就是模块间的低耦合性 模块长度适中。模块语句的长度通常在20条100条的范围较合适。,二、编程技巧 在进行程序设计时,应注意以下事项及技巧。 尽量采用循环结构和子程序。这样可以使程序的总容量大大减少,提高程序的效率 ,节省内存。 尽量少用无条件转移指令。 对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其它寄存器的内容应压入堆栈(返回前再弹出),即保护现场。一般不必把标志寄存器压入堆栈。 由于中断请求是随机产生的,所以在中断处理程序中,除了保护处理程序中用到的寄存器外,还要保护标志寄存器。

7、 累加器是信息传递的枢纽。,4.1.3汇编语言程序的基本结构 汇编语言程序具有4种结构形式,即顺序结构、分支结构、循环结构和子程序结构。 一、顺序程序 这种程序中既无分支、循环,也不调用子程序,程序按顺序一条一条地执行指令。 二、分支程序 程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断,满足条件则进行程序转移,不满足条件就顺序执行程序。对于多分支程序,首先把分支程序按序号排列,然后按照序号值进行转移。假如多分支转移序号的最大值为n,则分支转移结构如图4-1所示。假如,n个按键,则转向n个键的功能处理程序。,例 4-1 :128种分支转移程序。程序框图如图4-1所示。功能:根据

8、入口条件转移到128个目的地址。 入口:(R3)=转移目的地址的序号00H7FH。出口:转移到相应功能分支程序入口。JMP_128: MOV A,R3RL A MOV DPTR,#JMPTABJMP A+DPTR JMPTAB: AJMP ROUT00AJMP ROUT01128个功能程序首址AJMP ROUT7F,三、循环程序 循环程序是最常见的程序组织方式。在程序运行时,有时需要连续重复执行某段程序,这时可以使用循环程序。这种设计方法包括下面几个部分: 置循环初值 循环体(循环工作部分) 修改控制变量 循环控制部分 上述四个部分有两种组织方式,如图4-1(a)和(b)所示。,先修理,后判断

9、:,先判断,后处理:,4.2 汇编语言源程序的编辑和汇编 4.2.1源程序编辑 源程序编辑是在微型计算机上,借助编辑软件,编写汇编语言源程序。可供使用的编辑工具很多,如行编辑或屏幕编辑软件。 例如,在文本区编写一个源程序如下:ORG 0030MOVX DPTR,AMOV A,#41HEND编辑结束后,存盘退出。接下来是使用交叉汇编软件,对编辑完成的源程序进行汇编。如果源程序无误,机器会显示“OK!”。,4.2.2源程序的汇编 汇编语言源程序必须转换为机器码表示的目标程序,计算机才能执行,这种转换过程称为汇编。对单片机来说,有手工汇编和机器汇编两种汇编方法。 一、手工汇编 偏移量的计算。手工汇编

10、时,要根据转移的目 标地址以及地址差计算转移指令的偏移量,不但麻烦 而且稍有疏忽很容易出错。 程序的修改。 因此,手工汇编是一种很麻烦的汇编方法,通常只有小程序或条件所限时才使用。,二、机器汇编 机器汇编是在计算机上使用交叉汇编程序进行源程序的汇编。汇编工作有机器自动完成,最后得到以机器码表示的目标程序。 鉴于现在IBM-PC机的使用非常普遍,这种交叉汇编通常都是在PC机上进行的。汇编完成后,再由PC机把生成的目标程序加载到用户样机上。,例如,前面编辑过的8051源程序,汇编完成后,如果没有错误则形成两个文件:一个为打印文件,格式为地址 目标码 源文件ORG 0030H0030H F0 MOV

11、X DPTR,A7441 MOV A,#41HEND另一个称为目标码文件,格式为0030 0033 F07441首地址 末地址 目标码,该目标文件由PC机通过串行通信下载到仿真器(或用户样机)运行。在分析现成产品ROM/EPROM芯片中的程序是,要将二进制机器语言程序翻译成汇编语言程序,该过程称为反汇编。汇编和反汇编的过程如图4-3所示。,4.2.3伪指令 标准的MCS-51汇编程序定义的伪指令常用的有以下几条:ORG 汇编起始命令 格式:ORG 16位地址 功能是规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。END 汇编结束命令,EQU 赋值命令 格式:字符名称 EQU

12、 项(数或汇编符号)例如:AA EQU R1MOV A,AA 这里的AA就代表了工作寄存器R1。又例如:A10 EQU 10DELY EQU 07EBHMOV A, A10LCALL DELY 这里的A10当作片内RAM的一个直接地址,而DELY定义了一个16位地址,实际上它是一个子程序的入口。,DATA 数据地址赋值命令 格式:字符名称 DATA 表达式 DATA 命令功能与EQU类似,但有以下差别: EQU定义的字符名必须先定义后使用,而DATA定义的字符名可以后定义先使用。 用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名。 DATA语句中可以把一个表达式的值

13、赋给字符名称,其中的表达式应是可求值的。 DATA伪指令常在程序中用来定义数据地址。,DB 定义字节命令 格式:DB 项或项表 例如:ORG 2000H DB 0A3H LIST: DB 26H,03H STR: DB ABC 经汇编后 (2000H)=A3H (2001H)=26H (2002H)=03H (2003H)=41H (2004H)=42H (2005H)=43H 其中,41H,42H,43H分别为A,B,C的ASCII编码值。,DW 定义字命令 格式:DW 16位数据项或项表 该命令把DW后得16位数据项或项表从当前地址连续存放。每项数值为16位二进制数,高8位先存放,低8位后

14、存放,这和其他指令中16位数的存放方式相同。DW常用于定义一个地址表,例如: ORG 1500H TABLE: DW 7234H,8AH,10H 汇编后 (1500H)=72H (1501H)=34H (1502H)=00H (1503H)=8AH (1504H)=00H (1505H)=10H,DS 定义存储空间命令 格式:DS 表达式 在汇编时,从指定地址开始保留DS之后表达式的值所规定的存储单元以备后用。例如: ORG 1000H DS 08H DB 30H,8AH 汇编以后,从1000H保留8个单元,然后从1008H开始按DB命令给内存赋值,即 (1008H)=30H (1009H)=

15、8AH 以上的DB,DW,DS伪指令都是只对程序存储器起作用,它们不能对数据存储器进行初始化。,BIT 位地址符号命令 格式:字符名 BIT 位地址 其中,字符名不是标号,其后没有冒号,但它是必须的。其功能是把BIT之后的位地址值赋给字符名。例如: A1 BIT P1.0 A2 BIT 02H 这样,P1口第0位的位地址90H就赋给了A1,而A2的值则为02H。,例4.2 编双字节乘法程序(16位*8位). (R4)(R3) *(R2)=(R4)*28+(R3)*(R2)=(R4)*(R2)*28+(R3)*(R2)(R3)*(R2)+ (R4)*(R2)(R7) (R6) (R5),例4.11 软件延时程序. 1) 机器周期 DELAY: MOV R2,#data 1 DELAY1: DJNZ R2,DELAY1 2RET 2) TIME: MOV R1,#0FAH 1 L1: MOV R0,#0FFH 1 W1: DJNZ R0,W1 2DJNZ R1,L1 2NOP 1NOP 1RET 2,

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

当前位置:首页 > 生活休闲 > 社会民生

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