第5章DSP汇编程序设计与开发-0910.pdf
《第5章DSP汇编程序设计与开发-0910.pdf》由会员分享,可在线阅读,更多相关《第5章DSP汇编程序设计与开发-0910.pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1DSPDSP技术与应用技术与应用学时:学时:3232(含(含8 8学时实验)学时实验)2第第5章章 TMS320C54XXDSPTMS320C54XXDSP汇编程序设计与开发汇编程序设计与开发 3 汇编程序设计与开发包括程序汇编程序设计与开发包括程序设计设计与程序与程序调试调试两大部分两大部分,本章将介绍如下内容本章将介绍如下内容:本本 章章 内内 容容1 1、汇编程序开发过程、汇编程序开发过程2 2、汇编程序语法格式、汇编程序语法格式3 3、COFFCOFF文件中的段文件中的段4 4、汇编器对段的处理、汇编器对段的处理5 5、链接器对段的处理、链接器对段的处理6 6、常用伪指令及应用、常用
2、伪指令及应用4文本文本编辑器编辑器汇编器汇编器.asm.asm源文件源文件.obj.obj目标文件目标文件链接器链接器.out.out可执行文件可执行文件DSPDSP程序调试程序调试.cmd.cmd链接命令文件链接命令文件.map.map存储器映像文件存储器映像文件mal.lst.lst列表文件列表文件oHEX500ROM编程器编程器 汇编程序开发过程汇编程序开发过程5 文本编辑器提供了一个设计输入平台文本编辑器提供了一个设计输入平台,其作用是按其作用是按照汇编语言相应的照汇编语言相应的书写格式书写格式,应用应用DSPDSP汇编指令汇编指令、汇编汇编伪指令伪指令及注释语句等及注释语句等编辑输入
3、源程序代码。编辑输入源程序代码。C54X C54X的源程序可以使用的源程序可以使用汇编汇编或或C C语言语言编写。编写。使用汇编语言使用汇编语言时时可以可以采采用用助记符指令助记符指令集(集(Mnemonic Mnemonic Instruction SetInstruction Set),),也可以采也可以采用用代数指令代数指令集(集(Algebraic Instruction Algebraic Instruction SetSet),),但两种不能混用。但两种不能混用。汇编程序的输入汇编程序的输入6 汇编程序语法格式汇编程序语法格式 汇编语言程序由汇编语言程序由标号域标号域、指令域指令域
4、、操作数域操作数域和和注释域注释域4 4个部分组成,个部分组成,域与域之间必须由一个或多个空格分开域与域之间必须由一个或多个空格分开。指令域是必选项指令域是必选项,指令不能从第指令不能从第1 1列开始列开始,否则将被视为标号。,否则将被视为标号。指令包括助记符指令、汇编伪指令、宏指令或宏调用。指令包括助记符指令、汇编伪指令、宏指令或宏调用。助记符指令可助记符指令可大写或小写,而汇编伪指令和宏指令须以大写或小写,而汇编伪指令和宏指令须以.开始且要小写开始且要小写。指令指令操作数可以是选择项操作数可以是选择项,如,如NOP NOP、RESETRESET等指令就没有操作数等指令就没有操作数。注释也是
5、可选项注释也是可选项,可用分号或可用分号或*号号来注释。分号可处于任何位置,来注释。分号可处于任何位置,而而*号只能位于第号只能位于第1 1列起始处。列起始处。标号及其冒号也是可选项标号及其冒号也是可选项(代码行在程序或数据段中的地址代码行在程序或数据段中的地址)若若使用标号则必须始于第使用标号则必须始于第1 1列列,标号可由最多达,标号可由最多达3232位的字母和数字位的字母和数字 组成,但第组成,但第1 1个字符必须为字母且个字符必须为字母且区分大小写区分大小写,以供本程序的其他,以供本程序的其他 部分或其他程序调用;部分或其他程序调用;若若不使用标号,则第不使用标号,则第1 1列必须是空
6、格、分号或列必须是空格、分号或*号号(用来注释用来注释)。语法语法:label:指令指令 操作数列表操作数列表 ;注释;注释7汇编程序中的汇编程序中的操作数操作数指令操作数的前缀指令操作数的前缀#表示立即数或直接寻址的偏移量。表示立即数或直接寻址的偏移量。指令操作数的前缀指令操作数的前缀*表示一个间接地址。表示一个间接地址。指令操作数中指令操作数中 后缀后缀B B或或b b表示二进制常数,表示二进制常数,例如:例如:LD#1000BLD#1000B,A A 后缀后缀Q Q或或q q表示八进制常数,表示八进制常数,例如:例如:LD#10QLD#10Q,A A 后缀后缀H H或或h h表示十六进制
7、常数,表示十六进制常数,例如:例如:LD#1000HLD#1000H,A A 十进制常数无须加后缀,十进制常数无须加后缀,例如:例如:LD#1000LD#1000,A A8汇编程序中的指令操作数多于一个时应由逗号分隔开。汇编程序中的指令操作数多于一个时应由逗号分隔开。汇编程序中的指令操作数可以是一个表达式。汇编程序中的指令操作数可以是一个表达式。表达式是一系列由算术操作符分开的操作数,表达式是一系列由算术操作符分开的操作数,一个操作数的表达式是其特例。一个操作数的表达式是其特例。3 3个主要因素决定表达式的计算顺序:个主要因素决定表达式的计算顺序:括号内的表达式首先计算,括号内的表达式首先计算
8、,例如:例如:8/8/(4/24/2)=4=4,而,而8/4/2=18/4/2=1优先级高的表达式首先计算,优先级高的表达式首先计算,例如:例如:8+48+4*2=162=16,按从左到右的顺序计算表达式,按从左到右的顺序计算表达式,例如:例如:8/48/4*2=42=4,汇编程序中的汇编程序中的操作数操作数9 DSPDSP程序开发工具程序开发工具代码生成工具代码生成工具:汇编器汇编器(输出输出COFFCOFF文件文件*.obj).obj)链接器链接器(输出可执行的输出可执行的COFFCOFF文件文件*.out).out)代码调试工具代码调试工具:软件软件仿真器仿真器(Simulator)(S
9、imulator)硬件仿真器硬件仿真器(XDS)(XDS)集成开发环境集成开发环境(CCS)(CCS)硬件评估模块硬件评估模块(EVM)(EVM)10 汇编汇编器的主要作用有:器的主要作用有:一是将设计一是将设计的的源程序(源程序(.asm.asm和和.c.c文件文件)编译成)编译成目标机器代码目标机器代码;二是二是根据根据汇编伪指令将源程序代码划分为若干汇编伪指令将源程序代码划分为若干不同的不同的段段,并分类打包;,并分类打包;三三是使用汇编伪指令将源程序汇编成可重新定是使用汇编伪指令将源程序汇编成可重新定位的位的COFFCOFF(Common Object File FormatCommo
10、n Object File Format)公共)公共目标目标文件(文件(.obj.obj文件)文件)。11 链接链接器的主要作用有:器的主要作用有:一是根据一是根据链接命链接命令文件令文件(.cmd.cmd)将一个或多个将一个或多个COFFCOFF目标目标文件链接起来,并映射到文件链接起来,并映射到目标存储目标存储空间空间 二二是根据是根据链接命链接命令文件令文件(.cmd.cmd)定义目标存储定义目标存储器的结构配置,并为各个不同器的结构配置,并为各个不同段段重新定义、重新定义、分配分配存储空间地址。存储空间地址。三是生成可执行的三是生成可执行的COFFCOFF输出文件(输出文件(.out.
11、out)。12 源程序源程序 目标代码目标代码 .text段段 .data段段 .bss段段 自定义段自定义段 汇编器汇编器 目标存储器目标存储器 片内片内ROM 片外片外ROM 片内片内RAM 片外片外RAM 链接器链接器代码汇编、链接过程代码汇编、链接过程cmdcmd文件文件13COFFCOFF文件中的文件中的段段“段段”是是COFFCOFF文件中的最小单位,是目标存储空间中一段文件中的最小单位,是目标存储空间中一段连续的代码、数据或保留空间。连续的代码、数据或保留空间。汇编后的源代码被分类成各个不同的子段,并提供单独汇编后的源代码被分类成各个不同的子段,并提供单独的段程序计数器的段程序计
12、数器SPCSPC。按按定义方式定义方式,“段段”可分为标准定义段和自定义段两种可分为标准定义段和自定义段两种:.bss,.text,.bss,.text,和和 .data.data 是是标准定义段标准定义段;.sect,.usect.sect,.usect是是自定义段自定义段。按按基本类型基本类型,“段段”可分为已初始化段和未初始化段两种可分为已初始化段和未初始化段两种 .text,.data.text,.data和和 .sect,.sect,是是已初始化段已初始化段;.bss.bss 和和 .usect.usect是是未初始化段未初始化段。14COFF目标文件至少应包含以下目标文件至少应包含
13、以下3个默认标准段:个默认标准段:(1)text文本段文本段:包含可执行代码;:包含可执行代码;(2)data数据段数据段:包含已初始化的数据;:包含已初始化的数据;(3)bss保留数据段保留数据段:为没有初始化的变量保留存储空间。:为没有初始化的变量保留存储空间。COFFCOFF中的中的标准段标准段15COFFCOFF中的中的自定义段自定义段 自定义段由用户定义,与标准段分开汇编,有两个伪指令自定义段由用户定义,与标准段分开汇编,有两个伪指令用于产生自定义段:用于产生自定义段:.usect.usect:在:在RAMRAM中为变量保留空间、类似于中为变量保留空间、类似于bssbss段段;.se
14、ct.sect:产生包含代码或数据的自定义段,:产生包含代码或数据的自定义段,该段地址可该段地址可重新定位。重新定位。两个伪指令的使用方法是:两个伪指令的使用方法是:symbol .usect symbol .usect “namename”,size in wordssize in words .sect .sect “section namesection name”symbolsymbol指向未初始化保留空间的开始处指向未初始化保留空间的开始处,与使用保留空间的与使用保留空间的变量名对应。变量名对应。section namesection name是指定段名的参数。汇编过程中如果调用这是
15、指定段名的参数。汇编过程中如果调用这些伪指令时的段名不同,就会产生一个新的自定义段;否则汇些伪指令时的段名不同,就会产生一个新的自定义段;否则汇编器会将代码或数据汇编进相应的已出现过的自定义段中。编器会将代码或数据汇编进相应的已出现过的自定义段中。16 段有两种基本类型:初始化段和未初始化段。段有两种基本类型:初始化段和未初始化段。初始化段初始化段包含包含可执行代码及初始化数据可执行代码及初始化数据,如:,如:texttext段、段、datadata段以及由汇编伪指令段以及由汇编伪指令.sect.sect产生的自定义段。产生的自定义段。初始化段初始化段存储在目标文件中,每个初始化段都可以重新存
16、储在目标文件中,每个初始化段都可以重新定位,一般定位,一般被分配在被分配在ROMROM中中。定义初始化段的伪指令有定义初始化段的伪指令有3 3个:个:.texttext、.data.data和和.sect.sect“段段名名”。汇编过程中,遇到新的初始化段伪指令,汇编器将停止汇汇编过程中,遇到新的初始化段伪指令,汇编器将停止汇编当前段,并将接下来的代码汇编进新的指定段,直到出现下一编当前段,并将接下来的代码汇编进新的指定段,直到出现下一个定义初始化段的伪指令。个定义初始化段的伪指令。COFFCOFF中的中的初始化段初始化段17 未初始化段未初始化段为没有初始化的数据为没有初始化的数据在目标存储
17、器中在目标存储器中保留存储保留存储空间。空间。通常通常未初始化段为变量,未初始化段为变量,被分配在被分配在RAMRAM中作临时存储空间中作临时存储空间使用,没有实际内容,只是预留一些空间供程序运行过程中存使用,没有实际内容,只是预留一些空间供程序运行过程中存放变量的值。放变量的值。未初始化段包括默认的未初始化段包括默认的bssbss段和由汇编伪指令段和由汇编伪指令.usect.usect产生产生的自定义段。的自定义段。COFFCOFF中的中的未初始化段未初始化段.bss symbol,size (在在bss段中为段中为symbol变量保留变量保留size空间空间)symbol .usect “
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 汇编程序 设计 开发 0910
限制150内