第六章汇编语言程序设计课件.ppt
《第六章汇编语言程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第六章汇编语言程序设计课件.ppt(103页珍藏版)》请在三一办公上搜索。
1、汇编语言程序设计,第 六 章,汇编语言第 六 章,PIC单片机指令系统和其它单片机一样,是较为低级的语言系统,是一套控制和指挥CPU工作的编码,即机器语言。单片机只能识别和执行由二进制数组成的机器语言,然而,这样一种二进制代码的机器语言是很难为人们直接理解和分析。,PIC单片机指令系统和其它单片机一样,是较为低级的语言系统,为了能较好表达人们的设计思路,便于记忆和使用,人们在低级语言之上设计出一种新的符号语言,即汇编语言。这一章主要介绍MPASM汇编语言。MPASM是支持Microchip公司全系列产品的通用汇编程序。,为了能较好表达人们的设计思路,便于记忆和使用,人们在低级语,编写完源程序后
2、,必须要使用MPASM汇编环境对其汇编,生成机器码文件和列表文件后,方可进行调试和机器码的烧写工作。,编写完源程序后,必须要使用MPASM汇编环境对其汇编,生成,6.1 汇编语言指令格式,汇编语言程序包括一系列可执行的语句,它告诉汇编程序要执行什么操作,这一系列的语句通常称为源代码。汇编语言源代码语法规定如下:标号 操作码(指令助记符)操作数 注释,6.1 汇编语言指令格式汇编语言程序包括一系列可执行的语,标号 操作码(指令助记符)操作数 注释这4部分中,只有操作码是必须存在的,它主要决定了指令的操作性质,而其他部分是指令语句的重要补充和说明,有时可以省略。如果前3项都存在,那么它们之间至少留
3、有一个或一个以上空格。,标号 操作码(指令助记符)操作数 注释,PIC汇编源程序原则上既可以大写字母书写,也可以小写字母书写,还可以大小写字母混合书写。,PIC汇编源程序原则上既可以大写字母书写,也可以小写字母书,一、标号(label)标号表示一条汇编指令实际开始的存储器地址,即用符号名称作为程序块的引导标志。这使得程序设计者能够用名字引用一条指令,而无须对指令的地址进行跟踪和解释。,一、标号(label),标号位于指令助记符前面,它一般是用于表示指令所在的地址,例如表示主程序或子程序的起始地址、转移语句的入口地址等。,标号位于指令助记符前面,它一般是用于表示指令所在的地址,例,必须用字母或下
4、划线_开始,最多32个字符,包括大小写英文字母、09和特殊符号及空格、制表符、换行符。标号不能与指令助记符、专用寄存器名、汇编语言保留字、伪指令同名。标号不能出现二义性。标号可以单独成一行,但必须顶格书写,结束不用冒号。,必须用字母或下划线_开始,最多32个字符,包括大小写英文字,二、操作码即指令助记符,26个字符组成。它可以表示一条机器指令、宏调用指令或伪指令。操作码决定着指令的操作类型和操作性质,是汇编语言语句中的核心要素,每一条汇编指令都不可缺少,而其它三部分有些指令可以缺省。,二、操作码,操作码所对应的指令助记符,其中的符号大小写可以混用,而不会影响操作码的含意,这一点和标号、操作数符
5、号变量的表达方式有本质区别。指令助记符不能顶格书写,当前面没有标号时,必须至少保留一个空格。,操作码所对应的指令助记符,其中的符号大小写可以混用,而不会,三、操作数在PIC汇编语言语句中,操作数的形式和内容最为丰富,它是指令助记符操作的对象,一般以数据或地址的形式出现,也可以用符号变量所表示的数据或地址。操作数与操作码之间至少要用一个空格分开,若是有两个操作数,中间用逗号(半角)分开。,三、操作数,以A、B、C、D、E和F开头的数,前面应加0作为引导。操作数可以是常数、已用伪指令赋值的符号和表达式。MPASM编辑环境默认进制为十六进制,也可按用户需要重新设置。,以A、B、C、D、E和F开头的数
6、,前面应加0作为引导。,操作数部分的符号变量必须区分大小写。重视d参数的应用,目标地址为:F(d=1);W(d=0)。,操作数部分的符号变量必须区分大小写。,操作数的三种类型常数可以是下面几种类型之一:二进制数 B10010011 八进制数 O112 十进制数 D99 十六进制数 H6A 或 0 x6A 默认是十六进制,操作数的三种类型,符号是各种用EQU伪指令定义过的字符串系列或者宏定义等。例:ACC EQU 0 x26;定义ACC为一寄存器,对应于RAM地址为0 x26CLRF ACC;寄存器清0,符号是各种用EQU伪指令定义过的字符串系列或者宏定义等。,表达式是用各种运算符将运算对象连接
7、起来的式子,可以用括号改变优先级。MPASM使用的运算符有:算术运算符:、(余)关系运算符:、=、=、!关系运算的结果是1和0两种状态,分别表示真和假。,表达式是用各种运算符将运算对象连接起来的式子,可以用括号改,逻辑运算符:!(逻辑非)、(逻辑与)、(逻辑或)位运算符:(位右移)、(位左移)、(位非)、(位或)、(位与)、(位异或)赋值运算符:作为被赋值对象,一般是用VARIABLE伪指令定义的变量。,逻辑运算符:!(逻辑非)、(逻辑与)、(逻辑或),复合赋值运算符:、=、复合赋值运算符是执行相应的运算功能,再执行赋值功能。其中执行运算功能时,被赋值对象也参与。,复合赋值运算符:、=、,其它
8、:$、()、HIGH、LOW$为当前程序计数器PC的值;HIGH返回操作对象的高字节;LOW返回操作对象的低字节。,其它:$、()、HIGH、LOW,四、注释注释是最后一部分,是很有用的。主要是便于阅读、分析、修改和程序的调试。注释内容可与源程序一起保存和打印,但汇编时将被系统忽略,对程序的执行不起作用。,四、注释,注释部分是对源程序进行说明的,与前一个部分之间至少用一个空格分开,由分号;(半角)开始,可以紧跟指令,也可独立一行或多行书写。注释内容可以英文书写,也可以用中文书写。,注释部分是对源程序进行说明的,与前一个部分之间至少用一个空,6.2 系统伪指令,伪指令是设计汇编语言程序的一个重要
9、组成部分,是汇编程序完成特定操作的一种指示。可以认为是一种汇编命令,而不是将要翻译成机器语言的汇编语言指令。,6.2 系统伪指令伪指令是设计汇编语言程序的一个重要组成,MPASM的伪指令可以分为数据、列表、条件和宏四类。分别用于控制程序存储器的分配定位和数据名称的定义、列表文件的格式、汇编的过程和路径、宏定义的运行和数据定位等。,MPASM的伪指令可以分为数据、列表、条件和宏四类。,伪指令就是“假”指令的意思,它不是单片机指令系统中的真实指令。其格式也由4部分组成,每部分之间至少要有一个空格分隔。符号名 伪指令助记符 操作数;注释,伪指令就是“假”指令的意思,它不是单片机指令系统中的真实指,其
10、中的符号名通常是代表专用寄存器名、通用寄存器变量、常数名、标志位或控制位名、复位矢量或中断矢量的一个字符串。对符号名的要求类似于前面标号的要求,从一行中的第一列开始,不能单独一行。,其中的符号名通常是代表专用寄存器名、通用寄存器变量、常数名,伪指令是程序设计人员向汇编器发出的控制命令。MPASM汇编器有伪指令数十条,但最常用的有以下几条,可以满足一般编程的需要。,伪指令是程序设计人员向汇编器发出的控制命令。,(1)EQU(Equate)符号名赋值伪指令 格式:符号名 EQU nn说明:EQU伪指令几乎每一个程序中都用到,其操作含意是使EQU两端的值相等,即给符号名赋予一个特定值,或者说是给符号
11、名定义一个数值。,(1)EQU(Equate)符号名赋值伪指令,一般在PIC的程序设计中,原则上每次遇到新的符号参数,都必须在前面补充定义符号名的初始数值或存储器地址。在PIC16F877中,nn的有效位是8位,可以用多种进制的数值表示,也可以采用符号变量或表达式表示,但所用到的符号变量必须在引用前被定义过。,一般在PIC的程序设计中,原则上每次遇到新的符号参数,都必,一个符号名一旦由EQU赋值,其值就固定下来了,不能再被重新赋值。在符号名定义和引用过程中,必须保证大小写属性的一致性,不能混合使用。例如:“ABC EQU 20H”在引用符号变量ABC时,用Abc、aBC或ABc与ABC是不一样
12、的,在汇编时均会出现出错信息。,一个符号名一旦由EQU赋值,其值就固定下来了,不能再被重新,实际上对于伪指令:ABC EQU 20H,其中ABC既可以认为是符号变量,因为ABC代表20H地址;又可以认为是符号常量,因为ABC可以代表符号常量20H。所以对于一个定义的符号量,应结合引用的指令进行分析才能真正确定符号量的类型。,实际上对于伪指令:ABC EQU 20H,其中ABC,(2)ORG 程序起始地址定义伪指令 格式:ORG nnnn说明:用于指定该伪指令后面的源程序机器代码存放的起始地址,也就是经汇编后生成的机器码目标程序或数据块在单片机程序存储器中的起始存放地址。nnnn是一个13位长的
13、地址参数。,(2)ORG 程序起始地址定义伪指令,(3)END 程序结束伪指令 格式:END说明;该伪指令通知MPASM汇编器结束对源程序的汇编,必须有且只能有1个END指令,放在整个源程序的末尾。,(3)END 程序结束伪指令,(4)LIST 列表选项伪指令格式:LIST 可选项,可选项,说明:用于设置各种汇编参数来控制汇编过程,或对列表文件进行格式化。该指令所有参数只能在一行内完成,其中参数的数值都用十进制数设置。,(4)LIST 列表选项伪指令,最常用的2种P=例如:LIST P=16F877或P=16F874等。R=例如:R=DEC(十进制);R=HEX(十六进制);R=BIN(二进制
14、)等。默认为十六进制。,最常用的2种,(5)INCLUDE 调入外部程序文件伪指令格式:INCLUDE“文件名”说明:用来告知汇编器,将一个预先编写好的外部程序文件包含进来,作为本源程序的一部分,这样可以减少重复劳动,提高编程效率。,(5)INCLUDE 调入外部程序文件伪指令,调入的外部文件,通常是PIC单片机的通用定义文件,其中定义了单片机的复位矢量、专用寄存器的地址以及控制位和状态位的位地址等。如:INCLUDE“P16F877.INC”,这个伪指令语句一般放在系统程序的首行。,调入的外部文件,通常是PIC单片机的通用定义文件,其中定义,(6)SET 对标号赋值伪指令格式:标号 SET
15、表达式说明:其功能相当于EQU伪指令,与其不同的一点是在一个源程序中,用EQU赋值的标号不能再重新赋值,但是用SET赋值的标号可以重新赋值。,(6)SET 对标号赋值伪指令,(7)进制定义伪指令:RADIX格式:RADIX 说明:RADIX伪指令用于设置在MPLAB-IDE集成开发环境中采用的进制方式,如定义十进制、八进制和十六进制等参数,MPLAB-IDE集成开发系统缺省为十六进制。,(7)进制定义伪指令:RADIX,例如:RADIX DEC;定义为十进制 RADIX HEX;定义为十六进制 RADIX OCT;定义为八进制,例如:,(8)BANKISEL 产生间接体(BANK)选择码格式:
16、BANKISEL 说明:在生成目标文件时使用,链接器根据它生成相应的体选择码,以便间接寻址访问以标识的地址。,(8)BANKISEL 产生间接体(BANK),必须预先定义,链接器将生成相应的体选择代码,即STATUS寄存器的IRP位将会填入相应的0或1。即根据的情况,决定是否加入:BCF STATUS,IRPBSF STATUS,IRP,必须预先定义,链接器将生成相应的体选择代码,即ST,(9)BANKSEL 产生体(BANK)选择码格式:BANKSEL 说明:在生成目标文件时使用,链接器根据它生成相应的体选择码。必须预先定义,链接器将生成相应的体选择代码,即STATUS寄存器的RP1、RP0
17、位将会填入相应的0或1。,(9)BANKSEL 产生体(BANK),实际上,在用MPASM汇编源程序时,MPASM根据所在的体及RP0:RP1的取值,决定是否插入下列指令:BCF STATUS,RP0BSF STATUS,RP0BCF STATUS,RP1BSF STATUS,RP1,实际上,在用MPASM汇编源程序时,MPASM根据,(10)PAGESEL 产生页选择码格式:PAGESEL 说明:在生成目标文件时使用,通知链接器根据所在的页面生成页选择代码,以便选到指定的页面上,必须预先定义。,(10)PAGESEL 产生页选择码,链接器将相应生成BCF PCLATH,4BSF PCLATH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 汇编语言 程序设计 课件

链接地址:https://www.31ppt.com/p-2111240.html