《第4章汇编语言程序设计00001.ppt》由会员分享,可在线阅读,更多相关《第4章汇编语言程序设计00001.ppt(22页珍藏版)》请在三一文库上搜索。
1、第4章 汇编语言程序设计,汇编语言是最早应用于单片机的开发与应用的程序语言。相比其他程序设计语言,汇编语言执行速度快、代码短小精悍,且指令的执行周期确定。但是汇编语言也有不足之处,比如其指令复杂、缺乏通用性、不便于程序的移植。目前,随着电子技术的发展,汇编语言的使用范围越来越小,逐渐被C51语言所代替,但是学习汇编语言对理解8051的结构及指令是很有帮助的。 本章主要介绍了汇编语言的概述、指令格式,以及汇编语言的程序结构。本章内容包括: 汇编语言程序概述 汇编语言指令及其格式 汇编语言程序设计 Keil Vison3中运行汇编语言实例,4.1 汇编语言程序概述,汇编语言程序是单片机汇编指令的集
2、合。汇编语言程序设计与51系列单片机的汇编指令集和硬件结构等有密切联系,在单片机上可以用来实现特定的功能和任务。汇编语言以其简练的代码、快速的操作硬件能力而获得了广泛使用,这里首先介绍汇编语言的基本情况。,4.1.1 汇编语言简介,汇编语言是采用助记符标识的指令的程序设计语言。其中助记符标识是二进制指令的形象标记。由于现在采用的计算机都是二进制的,其所能执行的每一条指令都对应一组二进制代码。采用二进制代码来表示指令和数据的语言为机器语言,它是唯一能被计算机识别的语言。然而这种语言很难记忆和辨认,给程序设计工作带来很大麻烦。为了容易理解和记忆这些计算机的指令,人们用一些英文单词和字符等作为助记符
3、来描述每一条二进制指令的功能。用助记符标识的指令就是计算机的汇编语言,汇编语言和机器语言是一一对应的。 采用汇编语言编写的程序,每条指令的含义一目了然,这给单片机程序的编写、阅读和修改带来很大方便。而且用汇编语言编写的程序代码少,执行速度快,每条指令的执行时间完全确定。因此,在最初的单片机应用系统中,主要是用汇编语言来编写程序。,4.1.2 汇编语言程序设计步骤,使用汇编语言进行计算机或者单片机程序设计的流程图,如图所示,一般可以分为以下几个步骤:,4.1.3 汇编语言程序实例,首先,为了让大家认识一下汇编语言的结构,这里举一个汇编语言的例子。程序示例如下。 ORG 0200H ;汇编程序起始
4、指令 MOV A, 32H ;将单字节数据存入累加器A中 MOV B, #100 ;分离出百位数 DIV AB MOV R5, A ;百位数送入寄存器R5 XCH A, B ;余数存入累加器A中 MOV B, #10 ;分离出十位和个位 DIV AB SWAP A ;十位存入高字节 ADD A, B ;低位存入低字节中 MOV R6, A END ;,4.2 伪指令,伪指令是为汇编程序提供某种信息的指令。伪指令不能命令CPU执行某种操作,也没有对应的机器代码,而51系列单片机的指令能使单片机的CPU执行某种操作,能生成对应的机器代码。51系列单片机汇编程序常用的伪指令有如下几类。,4.2.1
5、汇编程序起始伪指令ORG,汇编程序起始伪指令ORG主要用于规定汇编程序块或数据块存放的起始地址,它的使用格式如下: 标号: ORG 16位地址 示例如下: ORG 0200H START: MOV A, #45H ,4.2.2 汇编程序结束伪指令END,汇编程序结束伪指令END是汇编语言源程序的结束标志。END伪指令的使用格式是: 标号: END 表达式 在程序中,END以后所写的任何指令,汇编程序都不予以处理。一个源程序只能有一个END伪指令。对于同时包含有主程序和子程序的汇编源程序中,同样也只能有一个END伪指令。,4.2.3 等值伪指令EQU(或=),等值伪指令EQU是将一个数或者特定的
6、汇编符号赋予规定的字符名称。它的使用格式如下: 字符名称 EQU 数据或汇编符号 或者 字符名称 = 数据或汇编符号 用EQU指令赋值以后的字符名称可以用作数据地址、代码地址、位地址或者当作一个立即数来使用。因此,给字符名称所赋的值可以是8位数,也可以是16位数。需要注意的是,这里使用的“字符名称”不是标号,不能用“:”来做分隔符。,4.2.4 数据地址赋值伪指令DATA,数据地址赋值伪指令DATA是将数据地址或代码地址赋予规定的字符名称。其使用格式如下: 字符名称 DATA 表达式 DATA伪指令的功能与EQU有些相似,使用时要注意它们有以下区别: EQU伪指令必须先定义后使用,而DATA伪
7、指令则无此限制; EQU伪指令可以把一个汇编符号赋给一个字符名称,而DATA伪指令则不能; DATA伪指令可将一个表达式的值赋给一个字符变量,所定义的字符变量也可以出现在表达式中,而EQU定义的字符则不能这样使用。DATA伪指令在程序中常用来定义数据地址。,4.2.5 定义字节伪指令DB,定义字节伪指令DB是从标号指定的地址单元开始,将数据表中的字节数据按顺序依次保存。其使用格式如下: 标号: DB 8位字节数据表 这里的数据表可以是一个或多个字节数据、字符串或表达式,各项数据用“,”分隔,一个数据项占一个存储单元。定义字节伪指令DB的使用示例代码如下: ORG 1000H DATA1: DB
8、 11H,34H,60,90H DATA2: DB 111B,A,4.2.6 定义字伪指令DW,定义字伪指令DW是从标号指定的地址单元开始,将数据表中的字数据按从左到右的顺序依次保存。其使用的格式为: 标号: DW 16位字数据表 DW的功能和DB相类似,需要注意的是:16位数据要占用两个单元的存储器,其中,高8位数据存入低地址字节,低8位数据存入高地址字节。定义字伪指令DW的使用示例代码如下: ORG 1000H DATA1: DW 13ABH, 4CH,4.2.7 定义空间伪指令DS,定义空间伪指令DS是从标号指定的地址单元开始,保留若干个存储单元作为备用的空间。其中,保留的数量由表达式指
9、定。其使用格式如下: 标号: DS 表达式 定义空间伪指令DS的使用示例代码如下: ORG 1000H BUF: DS 07H 该段伪指令经汇编以后,从地址1000H开始保留7个内存单元,然后从1007H开始才可以进行其他操作。,4.2.8 位地址符号伪指令BIT,位地址符号伪指令BIT,主要用于对位地址赋予所规定的字符名称。其使用格式如下: 字符名称 BIT 位地址 位地址符号伪指令BIT的使用示例代码如下: P20 BIT P2.0 P21 BIT P2.1 该段伪指令经汇编以后,将位地址P2.0和P2.1赋给P20和P21,此后可以使用P20和P21当作位地址来代替P2.0和P2.1。,
10、4.3 汇编语言程序的格式,汇编语言程序的每一句程序一般由四部分组成,即标号、操作码、操作数和注释。每个部分之间要用分隔符隔开,分隔符可以采用空格、冒号“:”、分号“;”。其使用格式如下: 标号: 操作码 操作数 ;注释 一般对于一行汇编程序来说,只有操作码是必不可少的,其他视情况而定可有可无。 标号由8个或8个以下的字符或数字构成,但第一个必须是字母。除字母和数字外,在标号中还可以使用下划线符号“_”。各种特殊功能寄存器名、各个位地址记忆符、各种伪指令等都不能用作标号。以下是一些合法的标号: P10、DELY、DATA0等。 以下的字符串不能用作标号: 7P、P+A、MOV等。,4.4 源程
11、序的汇编,源程序的汇编是将汇编语言源程序转换为用机器码表示的目标程序的过程。其中能完成该转换功能的程序称为汇编程序。 汇编常用的方法有两种:一种是手工汇编,另一种是机器汇编。 手工汇编是把程序用助记符指令写出后,然后人为查找指令代码表,逐个把助记符指令翻译成机器码,然后把得到的机器码程序(以十六进制形式)输入到单片机开发软件中,并进行调试。由于手工汇编是按绝对地址进行定位的,所以,对于偏移量的计算和程序的修改有诸多不便。而且手工汇编十分复杂,很费时间,也很容易出错,因此,一般只有程序较小或工具所限时才使用。 机器汇编是在计算机上,使用汇编程序将汇编语言源程序转换为计算机能识别的机器码表示的目标
12、程序。汇编工作由计算机自动完成,生成的目标程序经调试无误后,再固化到单片机的程序存储器中。,4.5 Keil Vison3中运行汇编语言实例,这里首先通过一个简单的实例,来介绍如何使用Vison3进行单片机汇编程序的开发。,4.5.1 创建项目,首先,双击启动Vison3集成开发环境,开始创建项目,操作步骤如下。,4.5.2 创建源文件,项目建立完毕后,现在开始进行源文件的设计,这里便涉及到项目的核心。具体的操作步骤如下所述。,4.5.3 编译项目,项目及源文件建立完毕后便可以编译项目了。选择“Project”“Build target”命令,即可编译,如果程序无误,则在输出窗口中显示编译结果
13、,如图所示。,4.5.4 仿真调试,项目建立并编译通过后,在下载到单片机硬件中之前,一般需要进行仿真调试,确保程序的执行完全符合要求。Vison3的集成开发环境提供了完善的项目仿真和调试工具,下面就介绍如何使用Vison3来进行项目的仿真调试。 项目仿真调试之前需要确保该项目完全通过编译。仿真调试的步骤如下所述: (1)选择“Debug”“Start/Stop Debug Session”命令,此时,Vison3进入仿真调试模式。界面的菜单栏和工具栏都相应的进行了变化。 (2)使用单步执行的方式运行程序。每按F11键一次,程序执行一条指令。用户可以看到程序执行时,单片机的各个资源和寄存器值是如何变化的。 (3)当程序执行完毕的时候,在寄存器显示窗口中可以看到程序仿真的结果,如图所示。乘法运算的结果保存在寄存器R3和R2中。,4.6 小结,本章主要讲述了汇编语言的伪指令、汇编语言的程序格式以及源程序的编译。本章最后还通过一个具体的实例,介绍了如何在Keil Vison3集成开发环境中进行单片机的汇编程序设计以及仿真。汇编语言是最早应用于单片机开发的程序语言。相比其他程序设计语言,汇编语言指令的执行速度快、代码短小精悍,且具有确定的指令执行周期。熟练掌握本章内容是学习后续汇编语言程序的基础。,
链接地址:https://www.31doc.com/p-2577694.html