收藏 分享(赏)

第4章 汇编语言程序设计知识.ppt

上传人:hyngb9260 文档编号:7883888 上传时间:2019-05-28 格式:PPT 页数:54 大小:380KB
下载 相关 举报
第4章  汇编语言程序设计知识.ppt_第1页
第1页 / 共54页
第4章  汇编语言程序设计知识.ppt_第2页
第2页 / 共54页
第4章  汇编语言程序设计知识.ppt_第3页
第3页 / 共54页
第4章  汇编语言程序设计知识.ppt_第4页
第4页 / 共54页
第4章  汇编语言程序设计知识.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

1、23:53,第4章 汇编语言程序设计知识,4.1 编程的步骤、方法和技巧 4.2 汇编语言源程序的编辑和汇编,23:53,4.1 编程的步骤、方法和技巧,4.1.1 编程的步骤 4.1.2 编程的方法和技巧 4.1.3 汇编语言程序的基本结构,23:53,4.1.1 编程步骤,一、分析问题 二、确定算法 三、画程序流程图 四、编写程序,23:53,一、分析问题,对需要解决的问题进行分析,以求对问题有正确的理解。 解决问题的任务是什么? 工作过程? 现有的条件,已知数据,对运算的精度和速度方面的要求? 设计的硬件结构是否方便编程?,23:53,二、确定算法,算法:是如何将实际问题转化成程序模块来

2、处理。 在编程以前,先要对几种不同的算法进行分析、比较,找出最适宜的算法,23:53,三、画程序流程图,程序流程图:是使用各种图形、符号、有向线段等来说明程序设计过程的一种直观的表示。 流程图步骤分得越细致,编写程序是也越方便。 画流程图是程序结构设计是采用的一种重要手段。 一个系统软件有总的流程图(主程序框图)和局部的流程图。 流程图常采用的图形和符号。,23:53,椭圆框,或桶形框,:表示程序的开始或结束。,矩形框,:表示要进行的工作。,菱形框,:表示要判断的事情,菱形框内的表达式表示要判断的内容。,圆圈,:表示连接点。,指向线,:表示程序的流向。,23:53,四、编写程序,用89C51汇

3、编语言编写的源程序行(一条语句)包括四个部分,也叫四个字段:标号: 操作码 操作数 ;注释 每个字段之间要用分隔符分隔,而每个字段内部不能使用分隔符。可以用作分隔符的符号:空格“ ”、 冒号“:”、逗号“,”、分号“;”等。 例:LOOP:MOV A,#00H ;立即数00HA,23:53,标号,标号:是用户定义的符号地址。 一条指令的标号是该条指令的符号名字,标号的值是汇编这条指令时指令的地址。 标号由以英文字母开始的18个字母或数字组成,以冒号“:”结尾。 标号可以由赋值伪指令赋值,如果没有赋值,汇编程序把存放该指令目标码第一字节的存储单元的地址赋给该标号,所以,标号又叫指令标号。,23:

4、53,操作码,操作码是必不可少的。 它用一组字母符号表示指令的操作码。在89C51中,由89C51的指令助记符组成。,23:53,操作数,汇编语言指令可能要求或不要求操作数,所以这一字段可能有也可能没有。 若有两个操作数,操作数之间用逗号“,”分开 操作数包括的内容有: (1)工作寄存器:由PSW.3和PSW.4规定的当前工作寄存器区中的R0R7。 (2)特殊功能寄存器:21个SFR的名字。,23:53,操作数,(3)标号名:赋值标号:由汇编指令 EQU 等赋值的标号;指令标号:指令标号指示的指令的第一字节地址是该标号的值。 (4)常数:可用二进制(B)、十进制、十六进制(H), 若常数以字符

5、开头,前面加0。 (5) $:用来表示程序计数器的当前值。 (6)表达式:汇编时,计算出表达式的值填入目标码。,23:53,注释,注释部分不是汇编语言的功能部分,只是用于增加程序的可读性。 良好的注释是汇编语言程序编写中的重要组成部分。,23:53,4.1.2 编程的方法和技巧,一、模块化的程序设计方法 二、编程技巧,23:53,一、模块化的程序设计方法,1、程序功能模块化的优点 2、划分模块的原则,23:53,1、程序功能模块化的优点,单个模块结构的程序功能单一,易于编写、调试和修改。 便于分工,从而可使多个程序员同时进行程序的编写和调试工作,加快软件研制进度。 程序可读性好,便于功能扩充和

6、版本升级。 对程序的修改可局部进行,其它部分可以保持不变。 对于使用频繁的子程序可以建立子程序库,便于多个模块调用。,23:53,2、划分模块的原则,每个模块应具有独立的功能,能产生一个明确的结果,即单模块的功能高内聚性。 模块之间的控制耦合应尽量简单,数据耦合应尽量少,即模块间的低耦合性。控制耦合:指模块进入和退出的条件及方式,数据耦合:指模块间的信息交换方式、交换量的多少、交换频繁程度。 模块长度适中。20条100条的范围较合适。,23:53,二、编程技巧,1、尽量采用循环结构和子程序。 2、尽量少用无条件转移指令。 3、对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器

7、外,子程序中用到的其他寄存器的内容应压入堆栈(返回前再弹出),即保护现场。 4、在中断处理程序中,除了要保护处理程序中用到的寄存器外,还要保护标志寄存器。 5、用累加器传递入口参数或返回参数比较方便,在子程序中,一般不必把累加器内容压入堆栈。,23:53,4.1.3 汇编语言程序的基本结构,一、 顺序程序 二、 分支程序 三、 循环程序 四、 子程序,23:53,一、顺序程序,顺序程序是最简单的程序结构,即顺序结构。 程序按顺序一条一条地执行指令。 P92例,23:53,START: MOV R0, #00HMOV R1, #00HMOV R2, #00HMOV R3, #00HMOV P1,

8、 #00HMOV R4, #FFHMOV R5, #FFHMOV 30H, #00HMOV 40H, #00HEND,23:53,二、分支程序,程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断、满足条件则进行程序转移,不满足条件就顺序执行程序。 分支程序又分为单分支和多分支结构。 多分支程序:首先把分支程序按序号排列,然后按序号值进行转移。多分支转移结构:P97图4-1,23:53,23:53,二、分支程序,在89C51指令系统中,通过条件判断实现单分支程序转移的指令有:JZ、JNZ、CJNE、DJNZ等。此外还有以位状态作为条件进行程序分支的指令,如JC、JNC、JB、JNB

9、、JBC等。使用这些指令可以完成0、1、正、负,以及相等、不相等作为各种条件判断依据的程序转移。 P97例4-6所示。,23:53,JMP_128: MOV A,R3RL AMOV DPTR,#JMPTABJMP A+DPTR JMPTAB:AJMP ROUT00AJMP ROUT01 AJMP ROUT7F,128个子程序首址,例4-6:128种分支转移程序。程序框图:P97图4-1功能:根据入口条件转移到128个目的地址。入口:(R3)=转移目的地址的序号00H7FH。出口:转移到相应子程序入口。,23:53,说明:此程序要求128个转移目的地址(ROUT00 ROUT7FH)必须驻留在与

10、绝对转移指令AJMP相同的一个2KB存储区内。RL指令对变址部分乘以2,因为每条AJMP指令占两个字节。,23:53,三、循环程序,在程序运行时,有时需要连续重复执行某段程序,可以使用循环程序。其结构包括四部分:1、置循环初值2、循环体(循环工作部分)3、修改控制变量4、循环控制部分,23:53,1、置循环初值,对于循环程序中所使用的工作单元,在循环开始时应置初值。 例:工作寄存器设置计数初值,累加器A清0,设置地址指针、长度等。,23:53,2、循环体(循环工作部分),重复执行的程序段部分,分为循环工作部分和循环控制部分。 循环控制部分每循环一次,检查结束条件,当满足条件时,就停止循环,往下

11、继续执行其他程序,23:53,3、修改控制变量,在循环程序中,必须给出循环结束条件。 常见的是计数循环,当循环了一定的次数后,就停止循环。 在单片机中,一般用一个工作寄存器Rn作为计数器,对该计数器赋初值作为循环次数。每循环一次,计数器的值减1,即修改循环控制变量,当计数器的值减为0时,就停止循环。,23:53,4、循环控制部分,根据循环结束条件,判断是否结束循环。 89C51可采用DJNZ指令来自动修改控制变量并能结束循环。2种循环组织方式:P101图4-6,23:53,图4-2 循环组织方式流程图,23:53,例4-11 软件延时 P101 1) 采用循环程序进行软件延时子程序DELAY:

12、 MOV R2,#data ;预置循环控制常数DELAY1: DJNZ R2,DELAY1 ;当(R2)0时,转向本身RET,23:53,2) 采用双重循环的延时子程序TIME: MOV R1,#0FAH ;1个机器周期L1: MOV R0,#0FFH ;1个机器周期W1:DJNZ R0,W1 ;2个机器周期DJNZ R1,L1 ;2个机器周期NOP ;1个机器周期NOP ;1个机器周期RET ;2个机器周期 总的机器周期数N=1+(1+2255+2)250+1+1+2 延时时间t=NT=1282552=256510s=256.51ms,23:53,4.2 汇编语言源程序的编辑和汇编,4.2.

13、1 源程序编辑 4.2.2 源程序的汇编 4.2.3 伪指令,23:53,4.2.1 源程序编辑,在微型计算机上,借助编辑软件,编写或修改汇编语言源程序。如行编辑或屏幕编辑软件。,23:53,4.2.2 源程序的汇编,汇编:将汇编语言源程序转换为机器码表示的目标程序的过程。对单片机有:一、手工汇编二、机器汇编三、反汇编,23:53,一、手工汇编,通过手工方式查指令编码表(P307附录A指令表)逐个把助记符指令“翻译”成机器码,然后把得到的机器码程序键入单片机,进行调试和运行。 手工汇编的缺点: 1、偏移量的计算麻烦且容易出错 2、程序的修改会引起后面指令地址的变化,转移指令的偏移量也要重新计算

14、。,23:53,二、机器汇编,机器汇编是在计算机上使用交叉汇编程序进行源程序的汇编。汇编工作由机器自动完成,最后得到以机器码表示的目标程序。 汇编完成后,再由PC机把生成的目标程序加载到用户样机上。,23:53,三、反汇编,将二进制机器语言程序翻译成汇编语言程序的过程称反汇编。 汇编和反汇编的过程:P108图4-10,图4-10 汇编和反汇编过程,23:53,4.2.3 伪指令,伪指令:由英文字母表示的汇编命令。伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序,只是用来对汇编过程进行某种控制。 89C51有8个伪指令:ORG END EQU DATADB DW DS BIT,23:

15、53,1. ORG 汇编起始命令,格式:ORG 16位地址 功能:规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。 例: ORG 2000HSTART:MOV A,#64H规定了START的地址是2000H,规定了汇编后的第一条指令码从2000H开始存放,23:53,2. END 汇编结束指令,格式:END 功能:通知汇编程序结束汇编。在END之后所有的汇编指令均不予以处理。,23:53,3. EQU 赋值命令,格式:字符名称 EQU 项(数或汇编符号) 功能:把“项”赋给“字符名称”。 注意:字符名称不等于标号(其后没有冒号);其中的项,可以是数,也可以是汇编符号。EQU

16、赋值过的符号名可用作数据、代码地址、位地址或一个立即数。可以是8位的,也可以是16位的。,23:53,3. EQU 赋值命令,例1:AA EQU R1MOV A,AA ;AA代表工作寄存器R1 例2:A10 EQU 10DELY EQU 07EBHMOV A,A10;A10作为片内的一个直接地址LCALL DELY;DELY作为一个16位子程序的入口地址,23:53,4. DATA 数据地址赋值命令,格式:字符名称 DATA 表达式 功能:与EQU类似,但有以下差别: 1、EQU定义的字符名必须先定义后使用,DATA定义的字符名可后定义先使用。 2、用EQU伪指令可把一个汇编符号赋给一个名字而

17、DATA只能把数据赋给字符名。 3、DATA语句可把一个表达式的值赋给字符名称其中的表达式应是可求值的。DATA伪指令在程序中用来定义数据地址。,23:53,5. DB 定义字节命令,格式:DB (项或项表) 功能:通知汇编程序从当前ROM地址开始,保留一个字节或字节串的存储单元,并存入DB后的数据。 注意:项或项表可以是一个字节,用逗号隔开的字节串或括在单引号中的ASCII字符串。,23:53,例: ORG 2000HDB 0A3HLIST:DB 26H,03HSTR:DB ABC 经汇编后(2000H)= 0A3H, (2001H)= 26H, (2002H)= 03H, (2003H)=

18、 41H,(2004H)= 42H, (2005H)= 43H,(41H,42H,43H分别为A,B,C的ASCII码),23:53,6. DW 定义字命令,格式:DW 16位数据项或项表 功能:把DW后的16位数据项或项表从当前地址连续存放。每项数值为16位二进制数高8位先放,低8位后存放。DW用于定义一个地址表。,23:53,例: ORG 1500HTABLE:DW 7234H,8AH,10H经汇编后(1500H)= 72H, (1501H)= 34H, (1502H)= 00H, (1503H)= 8AH,(1504H)= 00H, (1505H)= 10H,,23:53,7. DS 定

19、义存储空间命令,格式:DS 表达式 功能:在汇编时,从指定地址开始保留DS之后表达式的值所规定的存储单元,以备后用。,23:53,DS 定义存储空间命令,例:ORG 1000HDS 08HDB 30H,8AH 汇编后,从1000H保留8个单元, 然后从1008H按DB命令给内存赋值, 即(1008H)= 30H(1009H)= 8AH,23:53,8. BIT 位地址符号命令,格式:字符名 BIT 位地址 功能:把BIT后的位地址值赋给字符名。其中字符名不是标号,其后没有冒号,但字符名是必须的。 例:A1 BIT P1.0A2 BIT 02H汇编后,P1口第0位的位地址90H就赋给了A1,而A2的值则为02H。,23:53,请继续学习第五章,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报