第五章--TMS320C54x-DSP的汇编语言程序设计..ppt_第1页
第五章--TMS320C54x-DSP的汇编语言程序设计..ppt_第2页
第五章--TMS320C54x-DSP的汇编语言程序设计..ppt_第3页
第五章--TMS320C54x-DSP的汇编语言程序设计..ppt_第4页
第五章--TMS320C54x-DSP的汇编语言程序设计..ppt_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

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

文档简介

第五章TMS320C54xDSP的汇编语言程序设计,首都师范大学信息工程学院,1,5.1汇编语言程序编写方法5.2汇编语言的指令系统5.3TMS320C54xDSP汇编语言的编辑、汇编与链接过程5.4汇编器5.5链接器,第五章TMS320C54xDSP的汇编语言程序设计,首都师范大学信息工程学院,2,DSP的软件开发一般有以下几种方式:(1)直接编写汇编语言源程序;(2)编写C语言程序;(3)混合编程(既有C代码,又含汇编代码)。,第五章TMS320C54xDSP的汇编语言程序设计,首都师范大学信息工程学院,3,5.1汇编语言程序编写方法,一、汇编语言源程序格式汇编语言源程序中的每个语句可以由四项组成:名字:操作码操作数1,操作数2,;注释其中,为可选项。1名字项名字项可以是标号或变量,用来表示本语句的符号地址,只有当需要用符号地址来访问该语句时才需要名字项。若有名字项则必须从源语句的第一列开始书写。在汇编语言源程序中,对于名字项有规定。名字项后面如果不跟冒号,该名字项通常作为变量名,用来表示某个或某些数据的存储起始地址。名字项后面如果加冒号(:),该名字通常作为语句标号,供本程序的其他部分或其他程序调用。,首都师范大学信息工程学院,4,对于名字项有下列规定:只能由大写字母AZ或小写字母az(可识别符号的大小写)、数字09和专用字符_和$。数字不能作为首字符。名字项最长可达32个字符。在同一个程序中,同样的标号或变量的定义只允许出现一次,否则汇编程序会致使出错。,5.1汇编语言程序编写方法,首都师范大学信息工程学院,5,2操作码项在语句中一定有的是操作码项,用来说明所有进行的操作。操作项是一个操作码的助记符,助记符包含指令性语句、伪指令和宏命令。对于指令性语句,一般用大写,汇编程序将其翻译为机器语言指令。对于伪指令,汇编程序将根据其所要求的功能进行处理,可以形成常数和变量,当用它控制汇编和链接过程时,可以不占存储空间。对于宏命令,则将根据其定义展开。伪指令和宏命令均以西文句号(.)开始,且为小写。,5.1汇编语言程序编写方法,首都师范大学信息工程学院,6,3操作数项操作数项可以是寄存器、地址、常数、算术或逻辑表达式,多个操作数之间用逗号(,)分开。对于指令中的操作数项,根据不同的寻址方式,可以是实际的操作数也可以是操作数存放的地址或寄存器等。对于不同的指令,操作数项可以有一个、两个或三个操作数,如NOP指令,还没有操作数。4注释项注释项用来说明一条、几条指令或一段程序的功能,可以帮助用户更快地理解程序。对于编程者,应该重视注释的书写。注释从分号(;)开始,可以放在指令或伪指令的后面,也可以单独占一行或数行。,5.1汇编语言程序编写方法,首都师范大学信息工程学院,7,程序还要遵循如下规则:(1)所有语句必须以标号、空格、星号(*)或分号开始。(2)所有包含伪指令的语句必须在一行内完全指定。(3)若使用标号,则标号必须从第一列开始。(4)语句的每部分必须用一个或多个空格分开,通常用Tab键。,5.1汇编语言程序编写方法,首都师范大学信息工程学院,8,二、汇编语言中的常数和字符串常数、字符串和符号是汇编器能识别的数据项,是汇编指令、伪指令和宏指令语句中操作数的基本组成部分。1常数汇编器支持6种类型的常数:二进制数、十进制数、八进制数、十六进制数、字符常数和浮点常数。2字符串字符串是由双引号(“”)括起来的一串字符,双引号是字符串的一部分。串的最大长度是变化的,并由每一个使用字符串的伪指令定义。字符串与字符常数不同,字符常数代表一个单独的整数值,而字符串是字符的列表。如:“simple”。,5.1汇编语言程序编写方法,首都师范大学信息工程学院,9,三、汇编源程序中的符号符号用作标号、常数及替代符号。符号名最多可由32个字母和数字混合组成(AZ、az、09、$和)。第一个字符不能是数字,符号中间不能有空格,符号更不能是助记符。符号区分大小写,例如:AbC、abc被识别为2个不同的符号。在有些指令中,操作数不是单一的常数、符号或字符串,而是由常数、符号或由运算符隔开的常数和符号序列组成,即表达式。,5.1汇编语言程序编写方法,首都师范大学信息工程学院,10,表5.1表达式中的符号及优先级,5.1汇编语言程序编写方法,首都师范大学信息工程学院,11,表中运算符从上到下对应优先级由高到低。表达式的执行顺序是先执行优先级高的运算后执行优先级低的运算,圆括号内的表达式最先运算。表达式溢出在汇编过程中执行算术运算后,汇编器将检查溢出状态,表达式值的有效范围为-3276832767,超出此范围就会改变溢出状态,出现溢出时,汇编器会发出值被截断的警告信息,但在做乘法时,汇编器不检查溢出状态。条件表达式条件表达式的计算结果为逻辑值,条件为真时值是1,否则值为0。表达式的合法性,5.1汇编语言程序编写方法,首都师范大学信息工程学院,12,TMS320C54xDSP器件提供了两种指令系统。代数指令系统主要以表达式的形式书写,是一种比较直观、容易理解和书写的指令集;汇编指令系统是以难记忆的助记符为基础的指令集,共有129条指令,由于操作数的寻址方式不同,以至于派生有205条指令。TMS320C54xDSP指令系统的分类有两种方法,一种是按指令执行时所需的周期分类;另一种是按指令的功能分类。按指令的功能可分为四类:算术运算指令、逻辑运算指令、程序控制指令以及加载和存储指令。,5.2汇编语言的指令系统,首都师范大学信息工程学院,13,表5.2TMS320C54xDSP指令功能分类表,5.2汇编语言的指令系统,首都师范大学信息工程学院,14,一、指令系统中的符号和缩写指令和操作码中的符号和缩写。二、算术运算指令算术运算指令可分为加法指令、减法指令、乘法指令、乘加指令、乘减指令、双操作数指令和专用指令。三、逻辑运算指令逻辑运算指令按照功能分为:与逻辑指令、或逻辑指令、异或逻辑指令、移位指令和测试指令。前三组指令是按位进行操作的。,5.2汇编语言的指令系统,首都师范大学信息工程学院,15,四、程序控制指令程序控制指令用于控制程序的执行顺序。程序控制指令包括分支转移指令(B、BC)、调用指令(CALL)、中断指令(INTR、TRAP)、返回指令(RET)、重复指令(RPT)、堆栈操作指令(FRAME、POPD)和混合程序控制指令(IDLE、NOP)。条件分支转移指令或条件调用、条件返回指令都要用条件来限制分支转移、调用和返回操作,只有当一个条件或多个条件得到满足时才执行指令。,5.2汇编语言的指令系统,首都师范大学信息工程学院,16,五、加载和存储指令加载和存储指令用于完成数据的读入和保存。包括一般的加载和存储指令(LD、ST)、条件存储指令(CMPS、SACCD)、并行的加载和乘法指令(LDMAC)、并行的加载和存储指令(STLD)、并行的存储和加减指令(STADD、STSUB)以及其他加载和存储指令(MVDD、PORTW、READA)。,5.2汇编语言的指令系统,首都师范大学信息工程学院,17,5.3TMS320C54xDSP汇编语言的编辑、汇编与链接过程,TMS320C54xDSP汇编语言源程序包括指令性语句、伪指令和宏指令。指令性语句就是5.2节介绍的用各种助记符或代数表达式表示的机器指令,每条指令在汇编时都要产生一一对应的目标代码,这种语句是CPU可执行语句伪指令仅在汇编和链接时提供控制信息和数据,起提示或注释的作用,例如,说明源程序的起止、段定义,安排各类信息的存储结构以及说明有关的变量等,并不产生目标代码。宏指令则是用户自己创建的指令,在汇编时将其展开并汇编为对应的目标代码。,首都师范大学信息工程学院,18,图5.1汇编语言程序的编辑、汇编和链接过程,5.3TMS320C54xDSP汇编语言的编辑、汇编与链接过程,首都师范大学信息工程学院,19,汇编器(Assembler)的功能是将汇编语言源文件汇编成机器语言COFF的目标文件。汇编器的功能如下:1、将汇编语言源程序汇编成一个可重新定位的目标文件(.obj文件)。2、可以根据需要生成一个列表文件(.lst文件)。3、可以根据需要在列表文件后面附加一张交叉引用表。4、将程序代码分成若干段,为每个目标代码段设置一个SPC(段程序计数器)。5、定义和引用全局符号。6、汇编条件程序块。7、支持宏功能,允许定义宏命令。,5.4汇编器,首都师范大学信息工程学院,20,一、公共目标文件格式COFF汇编器建立的目标文件格式称为公共目标文件格式COFF(CommonObjectFileFormat)。由于COFF在编写一个汇编语言程序时采用代码段和数据段的形式,因此COFF会使模块化编程和管理变得更加方便。COFF文件有三种形式:COFF0、COFFl和COFF2。,5.4汇编器,首都师范大学信息工程学院,21,二、COFF文件中的符号段是COFF文件中最重要的概念,段是指连续占用存储空间的一个代码块或数据块。一个COFF文件中的每一个段都是分开的和各不相同的。所有的COFF文件都包含三个形式的段:.text文本段.data数据段.bss保留空间段,5.4汇编器,首都师范大学信息工程学院,22,三、常用汇编伪指令TMS320C54xDSP伪指令给程序提供数据和控制汇编过程。具体实现以下任务:(1)将数据和代码汇编进特定的段。(2)为未初始化的变量保留存储器空间。(3)控制展开列表的形式。(4)存储器初始化。(5)汇编条件块。(6)定义全局变量。(7)指定汇编器可以获得宏的特定库。(8)检查符号调试信息。,5.4汇编器,首都师范大学信息工程学院,23,四、汇编器对段的处理汇编器通过五条命令(.bss、.usect、.text、.data和.sect)识别汇编语言程序的各个部分。汇编器第一次遇到新段时,将该段的段程序计数器(SPC)置为0,并将随后的程序代码或数据顺序编译进该段中。汇编器遇到同名段时,将它们合并,然后将随后的程序代码或数据顺序编译进该段中。当汇编器遇到.text、.data和.sect伪指令时,汇编器停止将随后的程序代码或数据顺序编译进当前段中,而是顺序编译进入遇到的段中。,5.4汇编器,首都师范大学信息工程学院,24,当汇编器遇到.bss和.usect伪指令时,汇编器并不结束当前段,而只是简单地暂时脱离当前段,随后的程序代码或数据仍将顺序编译进当前段中。.bss和.usect伪指令可以出现在.text、.data和.sect段中的任何位置,它们不会影响这些段的内容。汇编器为每个段都安排了一个单独的段程序计数器(SPC)。SPC表示一个程序代码或数据段内的当前地址。初始时,汇编器将每个SPC置为0。,5.4汇编器,首都师范大学信息工程学院,25,5.5链接器,TMS320C54xDSP链接器的作用就是根据链接命令或链接命令文件(.cmd文件),将一个或多个COFF目标文件链接起来,生成存储器映像文件(.map)和可执行文件的输出文件(.out)(COFF目标模块)。链接器的功能如下:(1)将各个段配置到目标系统的存储器中。如图5.2所示。(2)采用的是一种相对的程序定位方式,对各个符号和段进行重新定位,并给它们指定一个最终的地址。(3)解决输入文件之间未定义的外部引用问题。程序的重定位是链接器的主要功能。程序的重定位方式有三种:编译时重定位、链接时重定位和加载时重定位。,首都师范大学信息工程学院,26,5.5链接器,图5-2目标文件中的段与目标存储器之间的关系,首都师范大学信息工程学院,27,一、链接器对段的处理链接器对段的处理具有两个功能。其一,将输入段组合生成输出段,即将多个.obj文件中的同名段合并成一个输出段;也可将不同名的段合并产生一个输出段。其二,将输出段定位到实际的存储空间中。链接器提供MEMORY和SECTIONS两个命令来完成上述功能。MEMORY命令用于描述系统实际的硬件资源;SECTIONS命令用于描述段如何定位到恰当的硬件资源上。链接器通过命令文件(.cmd)来获得上述信息。,5.5链接

温馨提示

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

评论

0/150

提交评论