天津大学微机原理第35节程序设计_第1页
天津大学微机原理第35节程序设计_第2页
天津大学微机原理第35节程序设计_第3页
天津大学微机原理第35节程序设计_第4页
天津大学微机原理第35节程序设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Freescale 8位单片机汇编程序设计计算机完成一项任务时,必须按顺序执行各种操作。而这些操作正是程序设计人员用计算机所能接受的语言把解决问题的步骤事先描述好的,也就是所谓的编程,然后由计算机去执行。要灵活运用汇编语言就要求设计者对单片机的硬件结构有明确的了解。在具体编程时,对数据的存放,寄存器和工作单元的使用等要安排好。当然高级语言程序设计,这些工作是计算机软件完成的,程序设计人员不必考虑。计算机所能直接识别的是机器码,它是用十六进制编码表示和存储的,由于机器码程序不易看懂,更不易记忆,所以给编写程序带来了很大困难。为了解决上述问题,人们就创造了助记符,用它来代替机器指令,便于人们理解和

2、记忆。用上述助记符以及符号地址或标号书写的程序 ,就称为“汇编源程序”,计算机只认得机器码,所以只有经过汇编程序翻译成机器码才能执行。这个翻译过程就称之为“汇编”。 汇编程序依赖于硬件,不同机型的系统有自己的汇编程序汇编程序的主要功能如下: 检测语法错误 源程序文件 展开宏指令一般汇编程序都应具有如下功能: 宏汇编功能 支持地址和数据的符号表示 支持内存管理 支持程序的模块化组织 支持多种类型的数据表示等汇编步骤确定算法画出程序流程分析问题首先对待解决的问题进行分析,例如:主要任务是什么,现有的条件,运算速度和精度方面的要求是什么等等。所谓算法就是如何将实际问题转化成程序模块来处理。解决一个问

3、题通常不只一种方法,在编程之前要根据具体的条件对不同的算法进行分析,比较。程序流程图是借助各种图形,符号,有向线段等来表达程序设计过程的一种直观的表示 流程图常用到以下图形和符号:矩形框( )表示要进行的工作椭圆框( )表示程序的开始或结束。菱形框()表示要判断的事情,菱形框内的表达式表示要判断的内容。圆圈( )表示连接点。箭头( )表示程序的流向。汇编语言程序格式每条语句包括以下4部分:标号 : 操作码 操作数 ;注释例如:LOOP :STA $81 ;将累加器A中的内容存入$81单元中 标号标号是以英文字母开始的115个字符组成的字母或数字串,以冒号“:”结束,但 “:”不是必需的,可以省

4、略,只要使标号与操作码之间有空格隔开就行。操作码这是一条汇编语言指令不可缺少的部分,它位于标号之后,两者之间至少用一个空格或制表符(TAB)隔开。在这部分,不区分字母的大小写,如LDA ,Lda,lda均为相同的助记符。 操作数不同的指令对操作数的要求也不一样,它也可能没有。若有,则操作数之间应用逗号分开。 操作数形式寻址方式 无 累加器或隐含寻址 直接,扩展或相对寻址 # 立即数寻址 ,X 变址寻址 , 位置1或清零 , 位测试并转移 操作数部分的内容是复杂多样的,它可以包括下列形式,如下表:符号含义加减*乖/除%取余数|逻辑“或”逻辑“异或”&逻辑“与”S08允许使用的运算符及其含

5、义如下图:注释此字段并非汇编语言的功能部分,主要是用于增强程序的可读性。对于初学者,建议多用注释。伪指令不同品牌的单片机都有着自己特殊的汇编程序,同时也定义了不同汇编命令,而这些不与任何处理器指令相对应的管理操作命令就被称为伪指令。伪指令不是真正的指令,它没有对应的机器码,在汇编时不产生目标程序,只是用来对汇编过程进行某种特殊控制。在飞思卡尔系列单片机中也称为管理指令。 1.ORG 汇编起始命令格式:ORG 例如:ORG $1000其功能是规定伪指令后程序的汇编地址,即汇编后生成目标程序存放的起始地址。 2.END 汇编结束命令格式:END ()END命令表示汇编程序到此结束。其中标号可以是一

6、个语句,也可以是一个有效地址,若不加标号,编译时将默认些地址为0。3.EQU 赋值命令格式:标号 EQU例如:ABC EQU $0081EQU 赋值命令已经把表达式的值赋给前面的标号,此标号不能在程序的其他地方再定义了。同时表达式中也不能出现后面定义或没有定义过的符号。例句表示,ABC与数值$0081等价。 4.FCB 字节常数定义命令格式:(标号)FCB表达式(,表达式,表达式)FCB命令可以有一个或多个操作数,由“,”隔开。每个操作数截取低8位,放于目标程序的一个字节中。其中操作数可以是数字常数,字符常数,符号或表达式。例如:ORG $1000FCB $AB,$03FCB $30,$56,

7、$83上述语句的定义表示从$1000单元开始存放$AB,$03,$30,$56,$835.FDB 双字节常数定义命令格式:(标号)FDB表达式(,表达式,表达式)FDB命令可以有一个或多个操作数,由“,”隔开。与FCB命令不同的是,FDB命令中每一个操作数是16位的,将16位操作数存入目标破译的两个连续字节跳高位字节在前,低字节在后(这一点与Intel系列单片机的存放顺序恰好相反)。标号被赋予第1个操作数的首地址值。其中操作数可以是数字常数,字符常数,符号或表达式。若有多个操作数,且两分隔符中有空操作数,则系统则默认为2个字节的0。例如:LED FDB $1000,$2000该命令表示将值$1

8、000,$0000,$2000存入标号为LED开始的存储单元中。 6.FCC 字符串常数定义命令格式:(标号)FCC 分隔符 字符中 分隔符FCC命令用于把一个ASCII码字符串放入连续的存储器中。标号被赋予字符串中第一字节的地址。字符串必须加引号例如:STRING FCC 飞思卡尔表示把ASCII字符串“飞思卡尔”存入以地址STRING开始的存储单元中。7.RMB 保留RAM存储器字节命令格式:()RMB此命令从指定地址开始保留RMB后表达式的值所规定的存储单元,以备后用。例如:ABC RMB 4表示将以标号ABC为起始地址后的4个字节单元保留。汇编语言程序设计举例 1.算术运算双字节加法

9、例:双字节数1ABC存在$60,$61单元(存放高位字节),2BCD分别存在$62,$63单元(存放高位字节),计算结果存放在$64,$65单元(存放高位字节)。 MOV #$1A,$61 MOV #$BC,$60 MOV #$2B,$63 MOV #$CD,$62 LDA $60 ADD $62 ;不带进位的低字节相加 STA $64 LDA $61 ADC $63 ;带进位的高字节相加 STA $65 ROLA AND #01H STA $66 ;存储最高位的进位2.查表和散转查表是汇编程序设计的一个重要技术,巧妙的运用查表可以避免复杂的编程,如立方表,函数表,数码管的显示段码等。散转就是

10、按照输入数据的不同转移到不同的程序的过程。查表运算与转移指令配合使用,就可以方便地实现散转功能。实现散转的具体做法是,在程序中定义一块连续存储单元作为跳转表,表中顺序存放各分支子程序的跳转地址。各跳转地址在表中的偏移的起始地址等于跳转表首地址加上它们各自的序号与所占字节数的乘积 例:设单字节变量NUM放在RAM的0060H单元,取值范围为09,编写一个程序,实现求出该变量的立方值的功能。分析:此时就可以用查表方式来实现,在RAM中设置一个立方表。因为7的立方已经超过1字节的存储大小,所以,每个立方值用2个字节单元来存储。变量NUM对应的立方值的存储地址Add_n与立方表的首地址TAB的关系为:

11、 Add_n=TAB+NUM*2. ORG $0060 NUM RMB 1 ;为变量保留1字节单元 ANS RMB 2 ;为结果存储保留2字节单元 ORG $0070 TAB: FDB $0000, $0001, $0008, $001B,$0040,$007D,$00DB, $0157,$0200, $02D9 SUBPRO:LDX NUM LSLX LDA TAB,X STA ANS LDA TAB+1,X STA ANS+1 RTS例:设单字节变量NUM的取值为03,其值分别对应子程PRO0PRO3,编写程序,实现根据NUM变量的值跳转到对应的子程。分析:由于TAB表中JSR为三字节指令

12、,RTS为一字节指令,所以变量NUM,散转表TAB地址,和相应变量对应的子程的跳转入口地址Add_PRO_n之间的关系为:Add_PRO_n=TAB+NUM*4。 BRA: LDX NUM LDA #$04 MULTAXJMP TAB,X TAB: JSR PRO0 RTS JSR PRO1 RTS JSR PRO2 RTS JSR PRO3 RTS.PRO0: . RTS PRO1: . RTS PRO2: . RTS PRO3: . RTS汇编输出当建立一个工程,并将程序经过编译后,则会在工程所在文件夹中自动生成一系列的文件。这些文件统称为汇编输出。汇编生成的输出文件包括源程序列表和目标文

13、件,源文件的列表文件需用通过制定汇编程序选项来选择,而目标文件则采用Motorola公司的S记录格式。 汇编列表 其格式为: 行号 地址 目标 周期数 汇编指令其中“行号”为4位的十进制数字,地址是该指令目标码第1字节地址的十六进制值。“目标码”是与汇编指令对应的十六进制机器码字节。如果一行源程序产生有多于6字节 的目标码(如长的FCC,FDB等伪指令),则多余的字节(可多达64字节)将列于下一行,它前面没有地址。S记录 S记录格式是Motorola公司的十六进制目标文件格式。它将程序和数据用可打印的ASCII格式表示,允许用标准的软件工具来检查目标文件,也可以在传送过程中显示其内容。此外,S

14、记录格式还包括出错检验功能,可以保证数据传送数据的正确性。S记录由5部分字符串组成。它包括记录类型,记录长度,存储地址,程序/数据及校验和。每个字节包含两个十六进制字符,第1个字符为字节的高4位第2个字符为低4位。组成一个S记录的5部分如下:校验和程序/数据地址记录长度类型S记录内容记录内容字段字符数内容类型2记录类型S0,S1等记录长度2记录中除类型和记录的字符对的数目 地址 4,6或8 表示数据将装入的存储器地址,地址可为2,3或4字节(取决于记录类型) 程序/数据 02n 为0n字节可执行程序,数据或描述信息 校验和 2组成记录程序/数据的所有字符之和值反码的低位字节 S记录各字段的内容记录各字段的内容S记录类型S记录共定义了8种类型。它们提供了编码,传送和译码的功能。Motorola的装入程序,记录传送控制程序,交叉汇编程序,文件生成和调度程序等均要使用S记

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论