DSP课件第6章汇编语言.ppt
《DSP课件第6章汇编语言.ppt》由会员分享,可在线阅读,更多相关《DSP课件第6章汇编语言.ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章汇编语言汇编语言6.1汇编语言汇编语言格式格式TMS320汇汇编编语语言言源源程程序序由由源源语语句句组组成成。源源语语句句包包括括汇汇编编指指令令、伪伪指令、宏指令。指令、宏指令。源语句的一般格式为源语句的一般格式为标号标号:助记符助记符操作数操作数1,操作数,操作数2,;注释注释标号域标号域助记符域助记符域操作数域操作数域注释域注释域注:注:“”表示该项可缺省。表示该项可缺省。例例6.1SYM1.set2;符号符号SYM1等于等于2BEGIN:LDPSYM1;将将2装入装入DP.word016h;初始化一个字为初始化一个字为16h1、标号域、标号域 标标号号包包含含132个个字字
2、母母、数数字字、字字符符(AZ,a2,09,及及$),可可识识别别符符号号的的大小写,且规定第一个字符不能是数字。大小写,且规定第一个字符不能是数字。标号可以后随冒号标号可以后随冒号(:),冒号并不作为标号的一部分被处理。,冒号并不作为标号的一部分被处理。如果不使用标号,则第一个字必须是空格或分号或星号。如果不使用标号,则第一个字必须是空格或分号或星号。当当选选用用标标号号时时,其其值值是是段段程程序序计计数数器器(SPC)的的当当前前值值,标标号号指指向向与与它它们们相相关关联联的的语语句。例如,如果用句。例如,如果用.word伪指令初始化几个字,那么标号将指向第一个字。伪指令初始化几个字,
3、那么标号将指向第一个字。行号行号SPC目标代码目标代码源语句源语句100040000ASTART:.word0Ah,3,70041000300420007 标号也可以单独出现在行中,此时它指向下一行中的指令。如:标号也可以单独出现在行中,此时它指向下一行中的指令。如:30050HERE:400500003.word3;此行此行SPC无增量无增量2、助记符域、助记符域 助助记记符符是是源源语语句句中中的的关关键键部部分分,不不能能缺缺省省,它它表表示示本本指指令令的的操操作作类类型型。助助记记符符不不能能从从源源语语句句的的第第一一列列开开始始,如如果果从从第第一一列列开开始始,将将被解释为标号
4、。被解释为标号。助记符包括下列操作码之一:助记符包括下列操作码之一:(1)汇编指令汇编指令(例如例如ABS,MPY,SPH);(2)伪指令伪指令(例如例如.data,.fist,.set);(3)宏指令宏指令(例如例如.macro,.mexit)。3、操作数域、操作数域 操操作作数数域域是是跟跟在在助助记记符符域域后后面面的的操操作作数数列列表表,可可缺缺省省。如如果果多多于于两两个操作数,则只用逗号隔开。操作数可以是常数、符号和表达式。个操作数,则只用逗号隔开。操作数可以是常数、符号和表达式。4、注释域、注释域 注注释释域域可可以以从从源源语语句句行行的的任任一一列列开开始始并并直直至至本本
5、行行的的末末尾尾,即即仅仅包包括括注注释释的的源源语语句句是是有有效效的的。如如果果它它从从第第一一列列开开始始则则可可以以用用分分号号(;)或或星号星号(*)开始;在行的其他地方开始的注释,必须以分号开始。开始;在行的其他地方开始的注释,必须以分号开始。上述各个域必须用一个或多个空格分开。上述各个域必须用一个或多个空格分开。6.1.1常数、字符串和符号常数、字符串和符号(1)二二进进制制整整数数:以以字字母母B(或或b)结结尾尾,由由二二进进制制数数字字(0,1)组组成成的的数数字字串串。数数字串长度长度最多可达字串长度长度最多可达16个二进制数字,如个二进制数字,如01000110B。(2
6、)八八进进制制整整数数:以以字字母母Q(或或q)结结尾尾,由由八八进进制制数数字字(07)组组成成的的数数字字串串。数数字串长度最多可达字串长度最多可达6个八进制数字,如个八进制数字,如100000Q。(3)十十进进制制整整数数:以以字字母母D(或或d)结结尾尾(也也可可缺缺省省),十十进进制制整整数数由由09数数字字组组成成,范围从范围从3267865535,如,如30000。(4)十十六六进进制制整整数数:以以字字母母H(或或h)结结尾尾,由由十十六六进进制制数数字字09和和AF(或或af)组组成的数字串。数字串长度最多可达成的数字串。数字串长度最多可达4个十六进制数字。个十六进制数字。(
7、5)字字符符常常数数:包包含含在在单单引引号号中中的的一一个个或或两两个个字字符符的的串串。每每个个字字符符表表示示为为8位位ASCII码,如码,如a定义字符定义字符a,并在内部用并在内部用61H表示。表示。(6)汇汇编编时时间间常常数数:用用.set伪伪指指令令对对符符号号进进行行赋赋值值,赋赋值值的的内内容容不不同同,汇汇编编时时符号所表达的含义也就不同。符号所表达的含义也就不同。1、常数、常数 例例如如,用用.set向向符符号号赋赋值值,则则符符号号成成为为常常数数,为为了了在在表表达达式式中中使用此常数,赋予它的值必须是绝对值。使用此常数,赋予它的值必须是绝对值。SHIFT.set3L
8、ACC*,SHIFT,AR1 也也可可用用.set将将寄寄存存器器名名赋赋予予符符号号常常数数,此此时时符符号号与与寄寄存存器器为为同同一一词,如:词,如:AUXR1.setAR1LACC*,0,AUXR12、字符串、字符串 字字符符串串是是包包含含在在双双引引号号内内的的一一串串字字符符,双双引引号号是是字字符符串串的的一一部部分分。串串的的最最大大长长度度是是变变化化的的,并并由由每每一一个个使使用用字字符符串串的的伪伪指指令令定定义义。字字符符在在内内部部被被表表示示为为8位位ASCII字字符符,如如:“sampleprogram”定定义义13个个字字符符的的字字符符串串samplepr
9、ogram。字符串用于下列场合:字符串用于下列场合:(1).copy“filename”中的文件名;中的文件名;(2).sect“sectionname”中的段名;中的段名;(3).byte“chasing”中数据初始化伪指令;中数据初始化伪指令;(4).string伪指令的操作数。伪指令的操作数。字符串与字符常数不同,字符常数代表一个单独的整数值,而字符字符串与字符常数不同,字符常数代表一个单独的整数值,而字符串是字符的列表。串是字符的列表。3、符号、符号 符符号号被被用用做做标标号号、常常数数及及替替代代符符号号。符符号号名名最最多多可可由由32个个字字母母和和数数字字混混合合组组成成(A
10、Z,az,09,$和和_)。符符号号的的第第一一个个字字符符不不能能是是数数字字,符符号号内内不不能能有有空空格格。用用户户定定义义的的符符号号分分大大小小写写,例例如如汇汇编编时时ABC,Abc及及abc被识别为被识别为3个不同的符号。个不同的符号。表达式由运算符、常数和符号组成。有效表达式值的范围是表达式由运算符、常数和符号组成。有效表达式值的范围是32768+32767。6 6.1.2 .1.2 表达式和运算符表达式和运算符 表达式内使用的运算符的优先级见下表:表达式内使用的运算符的优先级见下表:高组运算符说明优先级1+-取正取负求反 低2*/%乘除求模左移右移3+-|&加减按位逻辑异或
11、按位逻辑或按位逻辑与4=或=!=小于大于小于或等于大于或等于等于不等于6.2宏指令宏指令 为了简化汇编语言源程序的书写,常常将一些频繁出现的程序段定为了简化汇编语言源程序的书写,常常将一些频繁出现的程序段定义为宏指令。义为宏指令。TMS320系列系列DSP汇编器支持宏语言。使用宏的过程要经过以下汇编器支持宏语言。使用宏的过程要经过以下3个步骤。个步骤。(1)定定义义宏宏:用用户户在在使使用用宏宏之之前前必必须须先先定定义义宏宏。在在程程序序的的任任何何地地方方都都可可以以定定义义一一个个宏宏。一一般般是是在在源源文文件件开开始始处处定定义义,或或者者在在.include.copy文件中定义,或
12、者在宏库中定义。文件中定义,或者在宏库中定义。宏定义语句格式如下:宏定义语句格式如下:宏名宏名.macro形式参数形式参数1,形式参数,形式参数2,形式参数,形式参数n.mexit.endm(2)调调用用宏宏:在在定定义义了了宏宏以以后后,就就可可以以在在源源程程序序中中将将宏宏的的名名字字作作为为操操作作码码来调用。来调用。格式:格式:宏名宏名实参数实参数1,实参数,实参数2,实参数,实参数n(3)展展开开宏宏:汇汇编编器器在在对对源源文文件件进进行行汇汇编编时时,对对调调用用的的宏宏进进行行展展开开。在在展展开开过过程程中中,汇汇编编器器用用宏宏体体取取代代宏宏调调用用语语句句,宏宏体体中
13、中的的形形式式参参数数(替替代代符号符号)用实际参数代替。用实际参数代替。如如果果某某个个形形式式参参数数没没有有对对应应的的实实参参数数为为其其赋赋值值,该该形形式式参参数数将将被被空空串串(“”)代替。代替。如如果果实实参参数数的的个个数数多多于于形形式式参参数数,则则余余下下的的实实参参数数将将赋赋给给最最后后一一个个形形式参数式参数(用逗号隔开用逗号隔开)。如如果果要要把把一一串串变变量量赋赋给给一一个个形形式式参参数数,或或者者把把一一个个逗逗号号(或或分分号号)传传给给一个形式参数,就必须用引号将它们引起来。一个形式参数,就必须用引号将它们引起来。汇汇编编时时,汇汇编编器器先先用用
14、实实参参数数代代替替形形式式参参数数并并展展开开宏宏,然然后后把把源源语语句句汇汇编为目标代码,编为目标代码,并输出到列表文件中。并输出到列表文件中。例例宏定义:宏定义:parms.macrox,y,za=xb=yc=z.endm调用宏:调用宏:汇编时展开宏汇编时展开宏parms100,200;a=100;b=200 ;c=“”parms“100,200,300”,55,66,77;a=“100,200,300”;b=55 ;c=66,776.3通用目标文件格式通用目标文件格式 CCS开开发发环环境境可可以以看看成成是是一一个个大大的的软软件件包包,里里面面包包含含了了源源代代码码编编辑辑器器
15、,以以及及工工程程文文件件组组织织、编编译译和和调调试试等等一一切切功功能能模模块块。该该软软件件包包里里,shell程程序序可可以以完完成成3个个功功能能:编编译译、汇汇编编和和链链接接。shell程程序序缺缺省省在在C盘盘安安装装时时,被被安安装装在在C:tic2400cgtool子子目目录录下下,对对应应的的文件名为文件名为dspcl.exe。(1)编编辑辑器器:包包括括分分析析器器、优优化化器器、代代码码产产生生器器。把把C语语言言程程序序编编译译成汇编语言程序。成汇编语言程序。(2)汇汇编编器器:把把汇汇编编语语言言源源代代码码或或C语语言言已已经经编编译译成成汇汇编编语语言言代代码
16、码进进行汇编,以产生行汇编,以产生COFF目标文件。目标文件。(3)链接器:将文件链接,产生可执行的目标文件。)链接器:将文件链接,产生可执行的目标文件。使使用用汇汇编编器器可可以以将将汇汇编编语语言言源源程程序序汇汇编编为为目目标标文文件件,用用链链接接器器将将若若干干个个目目标标文文件件连连接接成成个个可可被被芯芯片片执执行行的的可可执执行行文文件件。这这些些目目标标文文件的格式称为通用目标文件格式件的格式称为通用目标文件格式(COFF,CommonObjectFileFormat)。通用目标文件格式的核心是使程序员在编写通用目标文件格式的核心是使程序员在编写DSPDSP程序时基于代码块程
17、序时基于代码块和数据块的概念,而不是一条条指令或一个个数据,基于这种文件格和数据块的概念,而不是一条条指令或一个个数据,基于这种文件格式编写的式编写的DSPDSP程序可读性强、可移植性好。程序可读性强、可移植性好。在在COFF文件中,将文件中,将代码块和数据块称为代码块和数据块称为SectionSection,编译器,编译器/汇编器汇编器和链接器都提供了有关的命令来创建块和对块进行处理,编译器和链接器都提供了有关的命令来创建块和对块进行处理,编译器/汇编汇编器创建的块的名称有些是已经定义好的,程序员也可以自己定义块名。器创建的块的名称有些是已经定义好的,程序员也可以自己定义块名。6.3.1块块
18、 目目标标文文件件的的最最小小单单位位被被称称为为块块,它它是是在在存存储储器器中中占占有有连连续续空空间间的的一一块块代代码码或或数数据据。目目标标文文件件中中的的每每一一个个块块都都是是独独立立的的。一一般般地地,COFF目目标标文文件件应应包包含含3个个缺省的块:缺省的块:.text块:通常包含可执行代码。块:通常包含可执行代码。.data块:通常包含已初始化的数据。块:通常包含已初始化的数据。.bss块块:通常为未初始化的变量保留空间。:通常为未初始化的变量保留空间。此外,汇编器和连接器允许用户建立和链接自定义的块,这些块与此外,汇编器和连接器允许用户建立和链接自定义的块,这些块与.t
19、ext,.data类似。所有的块可以分为两类:类似。所有的块可以分为两类:已已初初始始化化块块:包包含含程程序序代代码码和和数数据据。如如.text和和.data及及用用.sect或或.asect汇汇编器命令创建的块。编器命令创建的块。未初始化未初始化块块:为未初始化数据在存储器映像中保留空间。:为未初始化数据在存储器映像中保留空间。.bss段和用段和用.usect汇编器命令创建的块汇编器命令创建的块是未初始化的段。是未初始化的段。6.3.2汇编器对块的处理汇编器对块的处理 汇汇编编器器对对块块的的处处理理功功能能主主要要是是确确定定汇汇编编语语言言程程序序的的各各部部分分属属于于哪哪个个特特
20、定定的的块块。汇汇编编器器有有六六个个命命令令来来完完成成这这种种功功能能:.bss,.usect,.text,.data,.sect及及.asect。其其中中.bss和和.usect命命令令创创建建未未初初始始化化块块,而而.text,.data,.sect及及.asect命命令令则则建建立立已已初初始始化化块块。如如果果在在程程序序中中未未用用任任何何命命令令来来指指示示,汇汇编器将把所有程序块或数据块统一汇编至编器将把所有程序块或数据块统一汇编至.text中。中。(1)未初始化块)未初始化块未未初初始始化化块块主主要要用用来来在在存存储储器器中中保保留留空空间间,它它们们通通常常分分配配
21、在在RAM中中。这这些些块块在在目目标标文文件件中中没没有有实实际际内内容容,只只是是保保留留空空间间而而已已。程程序序可可以以在在运运行时利用这些空间建立和存储变量。行时利用这些空间建立和存储变量。未未初初始始化化数数据据块块是是通通过过使使用用.bss和和.usect汇汇编编器器命命令令来来建建立立。.bss命命令令在在.bss块块中中保保留留空空间间,而而.usect命命令令在在自自定定义义块块中中保保留留空空间间。格格式式为:为:.bss符号符号,字数字数符号符号.usect“块名块名”,字数字数其其中中,符符号号指指向向由由.bss或或.usect保保留留的的第第一一个个字字,它它对
22、对应应于于为为变变量量保保留留空空间间的的变变量量名名,可可以以在在其其他他任任何何块块中中被被访访问问,也也可可以以用用.global定定义义为为全全局局符符号号。字字数数表表示示空空间间的的大大小小,块块名名是是程程序序员员自自己己定定义义的的名名字字。汇汇编编器器遇遇到到.text,.data,.sect和和.asect命命令令时时立立即即停停止止汇汇编编至至当当前前块块中中且且开开始始汇汇编编至至相相应应块块中中。汇汇编编器器遇遇到到.bss或或.usect命命令令并并不不结结束束当当前前块块开始一个新块,它们只是暂时离开当前块。开始一个新块,它们只是暂时离开当前块。(2)已初始化块)
23、已初始化块 已已初初始始化化块块包包含含可可执执行行代代码码或或已已初初始始化化数数据据。块块的的内内容容存存储储在在目目标标文文件件中中,当当程程序序装装入入时时存存放放在在DSP存存储储器器中中。每每个个已已初初始始化化块块可可以以独独立立地地进进行行重重定定位位,且且可可访访问问在在其其他他块块中中定定义义的的符符号号。链链接接器器可可自自动动解解决决块块与与块块之之间间符符号号访访问问的的问问题题。有有四四个个命命令令通通知知汇汇编编器器将将代代码码或或数数据据存存放放在在严格块中,格式为:严格块中,格式为:.text.data.sect“块名块名”.asect“块名块名”,地址,地址
24、上上述述命命令令中中,.text和和.data建建立立的的块块名名就就是是.text和和.data,而而后后两两命命令令建建立立的的是是自自定定义义块块,其其中中.asect建建立立的的块块有有绝绝对对地地址址,一一般般不不建建议议使用。使用。当当汇汇编编器器遇遇到到上上述述命命令令时时,立立即即停停止止汇汇编编至至当当前前块块中中,且且开开始始将将随随后后的的代代码码或或数数据据汇汇编编至至相相应应的的块块中中。块块是是通通过过迭迭代代过过程程建建立立的的。如如,当当汇汇编编器器首首次次遇遇到到一一个个.data命命令令,.data块块是是空空的的,.data后后面面的的语语句句被被汇汇编编
25、到到.data块块中中,直直到到遇遇到到一一个个.text,.sect或或.asect命命令令为为止止。如如果果汇汇编编器器在在后后面面又又遇遇到到.data命命令令,则则将将.data后后面面的的语语句句加加到到已已存存在在于于.data块块中中语语句句的后面,这样建立的唯一的的后面,这样建立的唯一的.data块可以在存储器中分配一个连续的空间。块可以在存储器中分配一个连续的空间。(3)自定义块)自定义块 自自定定义义块块就就是是程程序序员员自自己己建建立立的的块块,与与缺缺省省的的.text,.data和和.bss块块一一样样使使用用,但但它它与与缺缺省省块块分分开开汇汇编编。如如,重重复
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP课件第6章 汇编语言 DSP 课件
限制150内