xx年第4章汇编语言程序设计 使用ppt课件

上传人:我*** 文档编号:149123756 上传时间:2020-10-24 格式:PPT 页数:77 大小:491.50KB
返回 下载 相关 举报
xx年第4章汇编语言程序设计 使用ppt课件_第1页
第1页 / 共77页
xx年第4章汇编语言程序设计 使用ppt课件_第2页
第2页 / 共77页
xx年第4章汇编语言程序设计 使用ppt课件_第3页
第3页 / 共77页
xx年第4章汇编语言程序设计 使用ppt课件_第4页
第4页 / 共77页
xx年第4章汇编语言程序设计 使用ppt课件_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《xx年第4章汇编语言程序设计 使用ppt课件》由会员分享,可在线阅读,更多相关《xx年第4章汇编语言程序设计 使用ppt课件(77页珍藏版)》请在金锄头文库上搜索。

1、第4章 汇编语言程序设计,信通学院 李北明,4.1 汇编语言程序设计概述 4.2 伪指令 4.3 基本程序结构 4.4 子程序及参数传递 4.5 常用程序举例,主要内容,学习目标 1掌握8051汇编语言程序设计的步骤; 2掌握8051常用伪指令的使用方法; 3熟悉三种基本程序结构及子程序结构,学会汇编语言程序的设计方法。 重点难点 1分支、循环程序的设计要点; 2子程序的设计及调用方法,4.1 汇编语言程序设计概述,4.1.1 程序设计语言简介 计算机程序设计语言分3类:机器语言、汇编语言和高级语言。 1机器语言 机器语言是由二进制机器码组成的可直接被计算机识别和执行的语言。由机器语言编写的程

2、序称为机器语言程序。如: 11100101 00110000 00100101 01000000 11110101 01010000,2汇编语言,汇编语言就是将机器语言用便于记忆和理解的助记符表示的语言,即汇编语言是机器语言的符号表示。用汇编语言编写的程序称汇编语言程序。如上述机器语言程序对应的汇编语言程序为: MOV A,30H ADD A,40H MOV 50H,A,3高级语言,高级语言是一种面向算法和过程的语言。如FORTAN、PASCAL、C语言等。高级语言采用更接近人的自然语言和习惯的数学表达式及直接命令方法,而不必深入了解计算机内部结构和工作原理,更容易被人们掌握。但用高级语言编写

3、的程序占用资源多,运行速度慢,一般不太适于控制领域。,4.1.2 汇 编,将汇编语言源程序翻译成计算机所能识别的机器语言目标程序的过程称为汇编。汇编可分为手工汇编和机器汇编。 1手工汇编 手工汇编就是根据指令表,将源程序由指令逐条翻译成指令代码,并把这些代码以字节为单元从起始地址依次排列成目标程序。,2机器汇编,机器汇编是由计算机的汇编软件将汇编语言汇编源程序自动生成机器语言程序。汇编软件称汇编程序。注意不要混淆汇编程序与汇编语言程序。 机器汇编可由单片机开发系统(如仿真器)上的汇编软件实现,称驻留汇编;也可在其他计算机(如PC)上进行,称交叉汇编。因PC使用方便,我们往往在其上编辑汇编语言程

4、序,然后汇编成目标程序,最后传输给单片机。,4.1.3 汇编语言程序设计一般步骤,1题意分析确定算法 对需要解决的问题进行认真分析,明确题目要完成的任务,弄清现有的条件和目标要求,然后确定算法。 2绘制程序流程图 简单的问题可由文字说明,当问题复杂时,将文字说明的步骤以图形符号表示,称流程图。,3编写源程序 用汇编语言把流程图所表明的步骤描述出来,实现流程图中每一框内的要求,从而编制出一个有序的指令流,即汇编语言源程序。 4汇编、调试 汇编语言是用指令助记符代替机器码的编程语言,所编写的程序是不能在计算机上直接执行的,因此利用它所编写的汇编语言程序必须转换为单片机能执行的机器码形式的目标程序才

5、能运行,我们把这一过程称为汇编,进行汇编的程序称为汇编程序。 将汇编语言程序汇编成目标程序后,还要进行调试,排除程序中的错误。只有通过上机调试并得出正确结果的程序,才能认为是正确的程序。,4.2 伪指令,伪指令是在机器汇编中告诉汇编程序如何汇编、对汇编过程进行控制的命令。伪指令与汇编语言指令不同,只在源程序中出现,不产生任何机器代码,在程序的运行过程中不起作用,故称为“伪指令”。,指令格式为: ORG nn 该指令的作用是指明后面的程序或数据块的起始地址, 它总是出现在每段源程序或数据块的开始。 式中, nn为 16 位地址, 汇编时nn确定了此语句后面第一条指令或第一个数据的地址,此后的源程

6、序或数据块就依次连续存放在以后的地址内, 直到遇到另一个ORG指令为止。 若省略ORG伪指令,则该程序段从0000H单元开始存放。在一个源程序中,可以多次使用ORG伪指令规定不同程序段或数据段存放的起始地址,但要求地址值由小到大依序排列,不允许空间重叠。,1. 汇编起始指令 ORG, 指令格式: 标号: END 地址或标号 格式中标号以及END后面的地址或标号可有可无。 功能: 提供汇编结束标志。汇编程序遇到 END后就停止汇编, 对 END以后的语句不予处理, 故 END应放在程序的结束处。,2. 汇编结束指令END, 指令格式: 标号: DB 8位二进制数表 功能: 把 8 位二进制数表依

7、次存入从标号开始的连续的存储单元中。 格式中, 标号区段可有可无, DB指令之后的 8 位二进制数表是字节常数或用逗号隔开的字节串, 也可以是用引号括起来的ASCII码字符串 (一个 ASCII字符相当于一个字节)。,3. 定义字节指令DB,ORG 1000H BUF1: DB 38H, 7FH, 80H BUF2: DB “How are you!” ORG伪指令指定了标号BUF1的地址为1000H, 而DB伪指令是将其后的二进制数表38H, 7FH, 80H依次存放在1000H, 1001H, 1002H 3 个连续单元之中, BUF2也是一个标号, 其地址与前一条伪指令连续, 即从100

8、3H地址单元开始依次存放字符串中各字符的ASCII码。,例:,指令格式: 标号: DW 16位字数据表 该指令的功能与DB相似, 区别仅在于从指定地址开始存放的是指令中的 16 位数据, 而不是字节串。每个 16 位数据要占两个存储单元, 高8 位先存(低位地址), 低 8 位后存(高位地址)。,4. 定义字指令DW,ORG 1400H DATA1:DW 324AH,3CH,5.空间定义伪指令DS,格式为: 标号:DS 表达式 功能是从标号指定的地址单元开始, 在程序存储器中保留由表达式所指定的个数的存储单元作为备用的空间,并都填以零值。,例如, ORG 3000H BUF:DS 50 汇编后

9、,从地址3000H开始保留50个存储单元作为备用单元。,指令格式: 字符名称 EQU 数字或汇编符号 功能: 使指令中的字符名称等价于给定的数字或汇编符号。 使用等值指令可给程序的编制、调试、修改带来方便, 如果在程序中要多次使用到某一地址,由EQU指令将其赋值给一个字符名称,一旦需要对其进行变动,只要改变EQU命令后面的数字即可,而不需要对程序中涉及到该地址的所有指令逐句进行修改。 但要注意,由 EQU等值的字符名称必须先赋值后使用,且在同一个源程序中,同一个标号只能赋值一次。,6.等值指令EQU,LEN EQU 10 SUM EQU 21H BLOCK EQU 22H CLR A MOV

10、R7,#LEN MOV R0,#BLOCK LOOP:ADD A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A END,例4-1:阅读下列程序,体会EQU伪指令的使用。,功能是:把从22H开始的10个单元的数据求和,将结果保存在21H单元中。,7.位地址符号定义BIT,格式为: 符号名 BIT 位地址表达式 功能是将位地址赋给指定的符号名。其中,位地址表达式可以是绝对地址,也可以是符号地址。 例如, ST BIT P1.0 将P1.0的位地址赋给符号名ST,在其后的编程中就可以用ST代替P1.0。,4.3 基本程序结构,程序执行前,程序执行后,4.3.1 顺序程序 顺序程序

11、是指无分支、无循环结构的程序,程序的走向是惟一的,程序的执行顺序与书写顺序完全一致。 1数据传送 例4-2 片内RAM的20H23H单元中存储的数据。该编写程序所示的数据传送结果。,方法一: MOV A,23H ;2B,1个机器周期 MOV 23H,22H ;3B,2个机器周期 MOV 22H,21H ;3B,2个机器周期 MOV 21H,20H ;3B,2个机器周期 MOV 20H,#00H ;3B,2个机器周期,方法二 CLR A ;1B,1个机器周期 XCH A,23H ;2B,1个机器周期 XCH A,22H ;2B,1个机器周期 XCH A,21H ;2B,1个机器周期 XCH A,

12、20H ;2B,1个机器周期,方法一使用的指令代码占14B,执行时间为9Tcy。方法二的指令代码只有9B,执行时间也减少到了5Tcy。在实际应用中,注意程序的优化。,1查表程序,例4-3 在片内RAM的20H单元有一位数字(其取值范围为09),要求编制一段程序求该数字的ASCII码,并存入片内RAM的21H单元。 程序如下: ORG 1000H START: MOV DPTR,#2000H MOV A,20H MOVC A,A+DPTR MOV 21H,A SJMP $,采用“MOVC A,A+PC”指令也可以实现查表功能,且不破坏DPTR内容,从而可以减少保护DPTR的内容所需的开销。但表格

13、只能存放在“MOVC A,A+PC”指令后的256B内,即表格存放的地点和空间有一定的限制。,ORG 2000H TABLE:DB 30H,31H,32H,33H,34H,35H,36H,37H,38,39H,END,3简单计算,由于8051指令系统中只有单字节加、减法指令,因此对于多字节的加、减运算必须从低位字节开始分字节进行。对于加法运算来说,除最低字节可以使用ADD指令外,其他字节相加时要把低字节的进位考虑进去,这时就应该使用ADDC指令;而对于减法运算,由于8051指令系统中只提供了SUBB指令,情况又不一样,最低位没有借位问题,因此在进行减法之前,先必须将Cy清零,再使用SUBB指令

14、实现减法运算。,设被加数存放在内部RAM的51H、50H单元,加数存放在内部RAM的61H、60H单元,相加的结果存放在内部RAM的51H、50H单元,进位存放在位寻址区的OOH位中。,MOV RO, #50H MOV R1, #60H MOV A, RO ;A(50H) ADD A, R1 ;A(50H)+(60H) MOV R0, A ;(50H)A INC R0 INC R1 MOV A, RO ;A(51H) ADDC A, R1 ;ACy+(51H)+(61H) MOV RO,A ;(51H)A MOV OOH,C ;进位信息存放在位寻址区的00H位中,4.3.2 分支程序,程序的执

15、行是按照指令的书写顺序进行的,但根据实际需要也可以改变程序的执行顺序,这种程序结构就属于分支结构。分支结构可以分成单分支、双分支和多分支几种情况。 单分支结构:若条件成立,则执行程序段A,然后继续执行该指令下面的指令;如条件不成立,则不执行程序段A,直接执行该指令的下条指令。,分支程序常利用条件转移指令实现。即根据条件对程序的执行情况进行判断,满足条件则转移,否则顺序执行。用于判断分支转移的指令有:JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ、JMP A+DPTR等。,双分支结构:若条件成立,执行程序段A;否则执行程序段B。 多分支结构:先将分支按序号排列,然后按照序号

16、的值来实现多分支选择。,1单分支程序,例4-5 将1位十六进制数(即4位二进制数)转换成相应的ASC码。设十六进制数存放在R0中,转换后的ASC码存放于R2中。实现程序如下,HASC:MOV A,R0 ;取4位二进制数 ANL A,#0FH ;屏蔽掉高4位 PUSH ACC ;4位二进制数入栈 CLR C ;清进(借)位位 SUBB A,#0AH;用借位的状态判断该数在09还是AF之间 POP ACC ;弹出原4位二进制数 JC LOOP ;借位位为1,跳转至LOOP ADD A,#07H ;借位位为0,该数在AF之间,应加37H,此步先加7H LOOP:ADD A,#30H ;加30H MOV R2,A,例4-6 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解:,START: CJNE R0, 00H, SUL1 ;R0中的数与00比较不等转移 MOV R1, 00H ; 相等, R1 0 SJMP SUL2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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