单片机原理及应用 教学课件 ppt 作者 娄国焕 第四章 汇编语言程序设计

上传人:E**** 文档编号:89503238 上传时间:2019-05-26 格式:PPT 页数:65 大小:456.50KB
返回 下载 相关 举报
单片机原理及应用 教学课件 ppt 作者 娄国焕 第四章  汇编语言程序设计_第1页
第1页 / 共65页
单片机原理及应用 教学课件 ppt 作者 娄国焕 第四章  汇编语言程序设计_第2页
第2页 / 共65页
单片机原理及应用 教学课件 ppt 作者 娄国焕 第四章  汇编语言程序设计_第3页
第3页 / 共65页
单片机原理及应用 教学课件 ppt 作者 娄国焕 第四章  汇编语言程序设计_第4页
第4页 / 共65页
单片机原理及应用 教学课件 ppt 作者 娄国焕 第四章  汇编语言程序设计_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《单片机原理及应用 教学课件 ppt 作者 娄国焕 第四章 汇编语言程序设计》由会员分享,可在线阅读,更多相关《单片机原理及应用 教学课件 ppt 作者 娄国焕 第四章 汇编语言程序设计(65页珍藏版)》请在金锄头文库上搜索。

1、1,第四章 汇编语程序设计,1,2,2,第四章 目录 4.1 概述 4.1.1 汇编语言的格式 4.1.2 伪指令 4.1.3 汇编语言程序设计步骤 4.2 汇编语言程序设计方法 4.2.l 分支结构程序设计 4.2.2 循环结构 4.2.3 子程序调用程序设计 4.2.4 查表程序设计,3,内容提要 汇编语言程序基本知识;汇编语言的伪指令;汇编语言程序设计分类介绍及实例。 重点:汇编语言程序设计 难点:查表程序设计,4,4.1概述 程序是具有特定功能的指令序列,由机器代码构成的程序称为机器语言程序或称目标程序。机器语言很难识别和记忆,编程序容易出错,于是人们用汇编语言代替机器语言来编写程序。

2、用汇编语言编写的程序称为“汇编语言源程序”。 在汇编语言中,指令的操作码和操作数用助记符表示,地址和常数也可以用符号表示。助记符一般都是操作说明的英文缩写,它便于识别和记忆,因此,用汇编语言编写和调试程序比用机器语言方便很多。 汇编语言离不开计算机的硬件,与硬件紧密相关。因此汇编语言是属于面向硬件的语言,缺乏通用性。,4,5,另一类程序设计语言称为高级语言,与汇编语言相比,高级语言不受具体硬件的限制,具有能用性强,直观易懂,易学,可读性好等优点。高级语言的一个语句相当于许多条汇编语言的语句。对于同样问题,用高级语言编写程序往往要比用汇编语言简单得多。 那么是不是有了高级语言就不用汇编语言了呢?

3、其实不然,用高级语言编写的程序得到的目标代码容量大,一般被大量的非计算机技术人员所采用,常用于科学计算和事务处理。与高级语言相比汇编语言有它自己的优点:得到的目标程序较短,节省内存空间,执行速度快,能准确计算执行时间,适于实时控制,便于管理接口电路等,所以汇编语言被大量计算机高级技术人员用来编写系统程序、实时通信程序、实时控制程序。,5,6,4.1.1 汇编语言的格式 汇编语言有两种类型的指令:指令和伪指令。MCS_51汇编指令的格式如下: 标号:操作码 操作数1,操作数2,操作数3;注释 1.标号 标号是指令所在地址的标志,是程序员为了使程序便于书写和阅读所规定的一些词,常作为一段程序的开头

4、或是一个数据块的开头,标号的值是它后面所跟的指令的存放地址。,6,7,使用标号要注意以下几点: (1)标号由18个ASCII码字符组成,第一个字符必须是字母; (2)标号后面必须跟冒号“:”; (3)汇编保留符不能做标号,如指令助记符、伪指令、寄存器名等; (4)标号不能重复定义,一个程序中只能定义一次; (5)标号不是必须的,一条语句可以没有标号,标号的有无取决于程序中有没有使用该语句。,8,2.操作码 操作码规定指令完成的操作,由25个英文字母组成,如JB、MOV、CJNE、LJMP等等。 3.操作数 操作数给出指令的操作数或操作数的存放地址,以一个或几个空隔与操作码分开,根据指令的功能不

5、同,操作数可以有1、2、3个或都没有(如空操作指令)。多个操作数之间用逗号分开。 4.注释 是用户对某一条语句或某一段程序的功能的说明,它必须以分号“;”号开始,如果一行写不下,可以另起一行,但必须以分号开始。注释部分在汇编时不会产生机器代码。,8,9,4.1.2 伪指令 用汇编语言编写的程序称为汇编语言源程序,机器是不能直接识别和执行的,必须把它翻译成目标程序,这个翻译过程叫做“汇编”。用来把汇编语言源程序自动翻译成目标程序的程序叫做“汇编程序”。汇编程序对用汇编语言编写的源程序进行汇编时,还要提供一些汇编用的指令,例如指定程序和数据存放的起始地址(ORG)、指出汇编结束(END)等等,这些

6、指令在汇编时并不产生目标代码,不影响程序的执行,所以称为伪指令。,9,10,伪指令又称汇编命令,仅提供汇编控制信息,常用的伪指令有下列几种: (1)汇编起始地址伪指令ORG 其一般格式为: ORG m ORG 伪指令指明此语句后面的程序或数据块在程序存储器中的存放地址,10,11,在使用ORG 伪指令时应注意以下几点: m可以是十进制数或十六进制数,在汇编时,由m确定此语句后面第一条语句的存放地址,该段源程序或数据块就连续存放在以后的地址内,直到遇到另一个ORG 伪指令。 在一个源程序中可以没有ORG 伪指令,没有时则汇编得到的目标程序将从0000H地址开始存放。 一个源程序中可以有多个ORG

7、 伪指令,但ORG 伪指令后的地址m必须由小到大排列,且不能交叉、重叠,否则程序会被覆盖。,12,(2)汇编结束伪指令END 其一般格式为: END END伪指令用于告诉汇编程序结束汇编,汇编程序遇到此伪指令则结束汇编工作,即使后面还有指令,汇编程序也不作处理,如果一个源程序中出现多个END,汇编程序不作出错处理,它只汇编到第一个END前一条指令。因此用户要注意在整个源程序中只能有一条END,且位于程序的最后。,12,13,(3)字节定义伪指令DB 其一般格式为: 标号:DB X1,X2,X3,Xn DB伪指令用于告诉汇编程序在程序存储器中从指定单元开始(定义)存储若干字节,通常用于定义一个常

8、数表。 其中标号可有可无,Xi为单字节数据,它可为十进制数或十六进制数,可以为一个表达式,可以是字母,但要用双引号括起来,还可以是用单引号括起来的字符串。十进制数存储时自然转换成十六进制数,字母按其对应的ASCII码存储。,13,14,例如: ORG 2000H DB 00H,01H,16,“a” ,“A” ,012 汇编后,程序存储器中 (2000H)= 00 H (2001H)= 01 H (2002H)= 10 H (十进制数16) (2003H)= 61 H (字符a的ASCII码) (2004H)= 41 H (字符A的ASCII码) (2005H)= 30 H (字符0的ASCII

9、码) (2006H)= 31 H (字符1的ASCII码) (2004H)= 32 H (字符2的ASCII码),14,15,(4)字定义伪指令DW 其一般格式为: 标号:DW Y1,Y2,Y3,Yn DW伪指令用于告诉汇编程序在程序存储器中从指定单元开始(定义)存储若干字,通常用于定义一个地址表。 在使用方法上DW和DB完全相同,只是Yi为双字节数据,在存储时以字为单位。,16,(5)位定义伪指令BIT 其一般格式为: 变量名 BIT 位地址 BIT伪指令用于给变量名赋以位地址。其中位地址可以是绝对地址也可以是符号地址。 例如:MR BIT P1.0 该命令的功能是把P1.0的位地址赋给变量

10、MR,在其后的程序设计中,凡遇到MR可以把其作为位地址的P1.0使用。,16,17,(6)赋值伪指令EQU 其一般格式为: 标号:EQU 操作数 EQU伪指令用于将操作数赋值给标号,使两边的两个值等量,赋值以后其标号值在整个程序有效。 例如:AR EQU 2000H 即给标号AR赋值2000H。,17,18,有伪指令的汇编语言源程序举例如下: ORG 2000H MOV SP,#60H MOV A, R2 MOV DPTR,#TB MOVC A,A+DPTR JMP A+DPTR TB:DW PRG DB PRH,PRI PRG:EQU 2050H PRH:EQU 90H PRF:EQU B0

11、H END,18,上述程序中伪指令规定:程序存放在程序存储器2000H开始的单元中,字数据放在标号TB开始的单元中,与程序紧连,标号PRG赋值为2050H,标号PRH赋值为90H,标号PRF赋值为B0H。,19,4.1.3 汇编语言程序设计步骤 用汇编语言编写一个程序的过程大致可以有以下几个步骤: (1)分析问题。明确所要解决的问题。 (2)确定算法。根据实际问题的要求和指令系统的特点,找出所用的计算公式和计算方法,就是一般所说的算法。算法是进行程序设计的依据,它决定了程序的正确性和程序的质量。 (3)绘制程序流程图。根据所选的算法,制定出运算的步骤和顺序,把运算过程画成程序的流程图。 (4)

12、确定数据格式,分配工作单元,进一步完善程序流程图。 (5)编写汇编语言源程序。,20,(6)调试程序。在仿真器上单步、断点、连续方式试运行程序,对程序进行调试,排除程序中的错误,直至正确为止。 (7)程序优化。程序优化就是优化程序结构、缩短程序长度、加快运算速度和节省数据存储单元。在程序设计中常使用循环程序和子程序的形式来缩短程序,通过改进算法和正确使用指令来节省工作单元和减少程序执行的时间。,20,21,4.2汇编语言程序设计方法 本节将通过一些基本的程序,结合MCS-51指令系统的特点,介绍一些常用的汇编语言程序设计方法。 4.2.l 分支结构程序设计 大部分程序总包含有判断、比较等情况,

13、根据判断、比较的结果转向不同的分支,含有 分支的程序称为“分支结构程序”。在汇编语言中程序的分支是由转移指令实现的。单片机执行到转移指令时,会根据当前的结果状态转到后面不同的程序段去处理。转移指令使程序执行发生了跳转,使程序从某个地址转移到另一个地址处执行,改变了程序的顺序执行状态。 分支转移结构程序又分为单分支转移结构程序和多分支转移结构程序。,21,22,1.单分支转移结构程序 单分支转移结构程序只有一次判断或比较,仅有两个出口,两者选一。这类程序的设计一般根据运算结果,用条件跳转指令或比较转移指令来实现。 例4-1求单字节有符号数的二进制补码。 正数的补码是其本身,负数的补码是其反码加1

14、。因此程序首先应该判断被转换数的符号,正数补码为其本身不需转换,负数补码需要转换。 设二进制数放在累加器A中,补码放加A中。 程序框图如图4-1。,22,23,23,24,参考程序如下: CC:JNB ACC.7,TT ;(A)0,不需转换 MOV C,ACC.7 ;符号位保存 CPL A ;(A)求反+1 ADD A,#1 MOV ACC.7,C ;回送符号位 RET 本例中用条件转换指令JNB ACC.7,TT对二进制数的正负的判断,从而实现分支转移。,24,25,2.多分支转移结构程序 当程序的判别有两个以上的出口时,为多分支转移结构。多分支转移结构的程序设计可以用多次判断或比较来实现。

15、 例4-2编制求符号函数的程序。 设自变量已存入标号为ARE的单元,且 ,y存入标号为BUF的单元。程序框图如图4-2。,25,26,26,27,参考程序如下: ORG 2000H START:MOV DPTR,#ARE MOVX A,DPTR JZ SUL ;x=0,转SUL JB ACC.7,NEG ;判x的符号位 MOV A,#01 ;x0,1A SUL: MOV DPTR,#BUF MOVX DPTR,A RET,27,28,NEG: MOV A,#0FFH ;x0,-1A SJMP SUL ARE: EQU 2050H BUF: EQU 2060H END,28,本例中用两条件跳转指

16、令JZ SUL 和 JB ACC.7,NEG 来实现两次判断的多分支转移。,29,也可以用比较转移指令来实现跳转。参考程序如下: ORG 2000H START:MOV DPTR,#ARE MOVX A,DPTR CJNE A,#00H, SUL ;x0,转SUL AJMP ST ;x=0,转ST SUL: JB ACC.7,NEG MOV A,#01H ;x0,1A ST: MOV DPTR,#BUF MOVX DPTR,A RET,29,30,NEG: MOV A,#0FFH ;x0,-1A SJMP ST ARE: EQU 2050H BUF: EQU 2060H END 要注意的是,在用上述的转移或比较指

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

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

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