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

上传人:bao****ty 文档编号:143812264 上传时间:2020-09-02 格式:PPT 页数:76 大小:679.50KB
返回 下载 相关 举报
第4章 汇编语言程序设计知识(BH).ppt_第1页
第1页 / 共76页
第4章 汇编语言程序设计知识(BH).ppt_第2页
第2页 / 共76页
第4章 汇编语言程序设计知识(BH).ppt_第3页
第3页 / 共76页
第4章 汇编语言程序设计知识(BH).ppt_第4页
第4页 / 共76页
第4章 汇编语言程序设计知识(BH).ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

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

1、单片机原理与接口技术(第3版),学 院:计算机科学学院 教 师:师红宇 时 间:2013年3月,第 4 章 汇编语言程序设计知识,内容提要,第1章 微机基础知识 第2章 89C51单片机硬件结构和原理 第3章 89C51指令系统 第4章 汇编语言程序设计知识 第4章 C-51程序设计知识 第5章 中断系统 第6章 定时器及应用 第7章 89C51串行口及通信技术 第8章 单片机小系统片外扩展 第9章 应用系统配置及接口技术,第4章 汇编语言程序设计知识,4.1 编程的步骤、方法和技巧 4.2 汇编语言源程序的编辑和汇编 4.3 汇编语言程序设计基础与举例,4.1 编程的步骤、方法和技巧,4.1

2、.1 编程的步骤 4.1.2 编程的方法和技巧 4.1.3 汇编语言程序的基本结构,4.1.1 编程的步骤,一、分析问题 二、确定算法 三、画程序流程图 四、编写程序,一、分析问题,对需要解决的问题进行分析,以求对问题由正确的理解。如, 解决问题的任务是什么? 工作过程? 现有的条件,已知数据,对运算的精度和速度方面的要求? 硬件资源如何访问?,二、确定算法,算法是如何将实际问题转化成程序模块来处理。 在编程以前,先要对几种不同的算法进行分析、比较,找出最适宜的算法,三、画程序流程图,程序流程图是使用各种图形、符号、有向线段等来说明程序设计过程的一种直观的表示。 流程图步骤分得越细致,编写程序

3、是也越方便。 画流程图是程序结构设计是采用的一种重要手段。 一个系统软件有总的流程图(主程序框图)和局部的流程图。 流程图常采用的图形和符号。,椭圆框,或桶形框,:表示程序的开始或结束。,矩形框,:表示要进行的工作。,菱形框,:表示要判断的事情,菱形框内的表达式表示要判断的内容。,圆圈,:表示连接点,指向线,:表示程序的流向,四、编写程序,用89C51汇编语言编写的源程序行(一条语句)包括四个部分,也叫四个字段: 标号:操作码操作数;注释 每个字段之间要用分隔符分隔,而每个字段内部不能使用分隔符。可以用作分隔符的符号:空格“ ”、冒号“:”、逗号“,”、分号“;”等。 例:LOOP:MOV A

4、,#00H;立即数00HA,4.1.2 编程的方法和技巧,一、模块化的程序设计方法 二、编程技巧,一、模块化的程序设计方法,1、程序功能模块化的优点 2、划分模块的原则,1、程序功能模块化的优点,单个模块结构的程序功能单一,易于编写、阅读、调试和修改。 便于分工,从而可使多个程序员同时进行程序的编写和调试工作,加快软件研制进度。 程序可读性好,便于功能扩充和版本升级。 对程序的修改可局部进行,其它部分可以保持不变。 对于使用频繁的子程序可以建立子程序库,便于多个模块调用。,2、划分模块的原则,每个模块应具有独立的功能,能产生一个明确的结果,即单模块的功能高内聚性。 模块之间的控制耦合应尽量简单

5、,数据耦合应尽量少,即模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换方式、交换量的多少及交换频繁程度。 模块长度适中。,二、编程技巧,1、尽量采用循环结构和子程序。 2、尽量少用无条件转移指令。 3、对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器的内容应压入堆栈(返回前再弹出),即保护现场。 4、在中断处理程序中,除了要保护处理程序中用到的寄存器外,还要保护标志寄存器。 5、用累加器传递入口参数或返回参数比较方便,在子程序中,一般不必把累加器内容压入堆栈。,4.2 汇编语言源程序的编辑和汇编,4.2.1

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

7、序的汇编。汇编工作由机器自动完成,最后得到以机器码表示的目标程序。,三、反汇编,将二进制机器语言程序翻译成汇编语言程序的过程称反汇编。 汇编和反汇编的过程如图4-3所示。,源程序 (汇编语言),目标码 (机器语言),汇编(汇编程序),反汇编(汇编程序),图4-3 汇编和反汇编过程,4.2.3 伪指令,伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序,只是用来对汇编过程进行某种控制。,ORG 汇编起始命令,格式:ORG 16位地址 功能:规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。例如: ORG 2000H START:MOV A,#64H 规定了START的

8、地址是2000H,又规定了汇编后的第一条指令码从2000H开始存放。,END 汇编结束指令,格式:END 功能:通知汇编程序结束汇编。在END之后所有的汇编指令均不予以处理。,EQU 赋值命令,格式:字符名称 EQU 项(数或汇编符号) 功能:把“项”赋给“字符名称”。 注意:字符名称不等于标号(其后没有冒号);其中的项,可以是数,也可以是汇编符号。EQU赋值过的符号名可以用作数据、代码地址、位地址或一个立即数。可以是8位的,也可以是16位的。 例如:,EQU 赋值命令,例1: AA EQU R1 MOV A,AA;AA代表工作寄存器R1 例2: A10 EQU 10 DELY EQU 07E

9、BH MOV A,A10;A10作为片内的一个直接地址 LCALL DELY;DELY作为一个16位子程序的入口地址,DATA 数据地址赋值命令,格式:字符名称 DATA 表达式 功能:与EQU类似,但有以下差别: 1、EQU定义的字符名必须先定义后使用,而DATA定义的字符名可以后定义先使用。 2、用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名。 3、DATA语句可以把一个表达式的值赋给字符名称,其中的表达式应是可求值的。DATA伪指令在程序中常用来定义数据地址,DB 定义字节命令,格式:DB(项或项表) 功能:通知汇编程序从当前ROM地址开始,保留一个字或字节

10、串的存储单元,并存入DB后的数据。 注意:项或项表可以是一个字节,用逗号隔开的字节串或括在单引号中的ASCII字符串。 例如:,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位先

11、放,低8位后存放。DW用于定义一个地址表。 例如:,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)

12、=8AH,BIT 位地址符号命令,格式:字符名 BIT 位地址 功能:把BIT后的位地址值赋给字符名。其中字符名不是标号,其后没有冒号,但字符名是必须的。 例如: A1 BIT P1.0 A2 BIT 02H 汇编后,P1口第0位的位地址90H就赋给了A1,而A2的值则为02H。,4.3 程序设计基础与举例,4.3.0 MCS-51汇编语言程序代码框架 4.3.1 顺序程序设计 4.3.2 分支程序设计 4.3.3 循环程序设计 4.3.4 子程序设计及调用 4.3.5 逻辑运算程序设计,ORG 1000H LEN EQU 10H START: MOV A,#LEN ADD A,#30H SJ

13、MP $ ORG 2000H TAB1: DB 32H,0A7H TAB2: DW 324AH,3CH TAB3: DS 5 END,1000H,4.3.0 MCS-51汇编语言程序代码框架,4.3.1 顺序程序,顺序程序是一种最简单,最基本的程序。,特点:程序按编写的顺序依次往下执行每一条指令,直到最后一条。,例 有一变量存放在片内RAM 20H单元,其取值范围为:00H05H,编程实现:求变量的平方值,并存入片内RAM 21H单元。,分析:,X,X2,20H,21H,内部RAM,TABLE+0,02,12,22,32,42,52,+1,+2,+3,+4,+5,X,X2,步骤:,1. 送表头

14、首地址,2. 取X到A,3. 求X2 存于A,4. 将X2存于内部RAM21H,ORG 1000H,START: MOV DPTR ,#TABLE,MOV A , 20H,MOVC A ,A+DPTR,MOV 21H , A,SJMP $,TABLE: DB 00H, 01H, 04H DB 09H, 10H, 19H,ORG 2000H,5. 建立平方表,例 三字节无符号数加法。一个加数存放在内部RAM 50H,51H,52H单元,另一个加数存放在内部RAM 60H,61H,62H单元,将相加结果存入50H,51H,52H单元。进位存放在位寻址区的00H位。按低字节对应低地址存放。,分析:,

15、+,15,1,0,9A,C5,1,00,ORG 0000H START: LJMP START1 ORG 1000H START1:MOV A, 50H ADD A, 60H MOV 50H,A MOV A, 51H ADDC A,61H MOV 51H,A MOV A, 52H ADDC A, 62H MOV 62H,A MOV 00H,C SJMP $,思考题: 若求两个十字节数的和,程序应该怎么写?,1分支程序的基本形式 分支程序有三种基本形式。,分支程序的设计要点如下:,(1)先建立可供条件转移指令测试的条件。,(2)选用合适的条件转移指令。,(3)在转移的目的地址处设定标号。,4.3.2 分支程序,N,(a),(b),(c),分支程序结构流程图,例 X存于20H单元,求出Y值,将Y值存入30H单元。 X X0 Y = 20H X=0 X+5 X0,分析:根据数据的符号位判别该数的正负,若最高位为0,再判别该数是否为0。请看程序流程。,2双向分支程序设计举例,A为0?,Y,取数,A(20H),开始,结束,A0?,Y,N,N,A#20H,AX+5,AX,(30H)A,程序流程图,3多向分支程序设计举例,例 根据R0的值转向7个分支程序。 R0=0,转向SUB0; R0=1,转向SUB1; . R0=N,转向SUBN。,分析:利

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

当前位置:首页 > 高等教育 > 大学课件

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