第4章 TMS320C54xTMDSP汇编语言与混合编程.ppt
《第4章 TMS320C54xTMDSP汇编语言与混合编程.ppt》由会员分享,可在线阅读,更多相关《第4章 TMS320C54xTMDSP汇编语言与混合编程.ppt(547页珍藏版)》请在三一办公上搜索。
1、第4章 TMS320C54xTM DSP汇编语言与混合编程,4.1 概述 4.2 汇编语言 4.3 C54x DSP的C语言编程及混合编程 习 题,4.1 概 述,C54x DSP软件设计的方法通常有三种。第一种,用C语言开发。TI公司提供了用于C语言开发的CCS(Code Composer Studio)平台。该平台包括了优化ANSI C编译器,从而可以在C源程序级进行开发调试。这种方式的优点是可以增强软件的可读性,提高了软件的开发速度,方便软件的修改和移植。然而,C编译器无法实现在任何情况下都能够合理地利用DSP芯片的各种资源。此外,对DSP芯片的某些硬件控制,用C语言就不如用汇编程序方便
2、,有些甚至无法用C语言实现。,第二种,用汇编语言开发。此种方式代码效率高,程序执行速度快,可以充分合理地利用芯片提供的硬件资源。然而,用汇编语言编写程序比较烦琐,可读性较差。另外,不同类别或不同公司的芯片汇编语言往往不同,因此可移植性较差。总 之,用汇编语言开发产品,周期长,软件的修改和升级困难。第三种,C和汇编语言混合编程开发。采用混合编程的方法能更好地达到设计要求,完成设计任务。,4.2 汇 编 语 言,4.2.1 汇编语言源程序格式 汇编语言是DSP应用软件的基础。编写汇编语言必须要符合相应的格式,这样汇编器才能将源文件转换为机器语言的目标文件。C54x DSP汇编语言源程序由源说明语句
3、组成,包含汇编语言指令、汇编伪指令、宏伪指令和注释等,一般一句程序占据编辑器的一行。由于汇编器每行最多只能读200个字符,因此源语句的字符数不能超过200个,一旦长度超过200个字符,汇编器将自行截去行尾的多余字符并给出警告信息。如果截去的是注释,那么不影响程序的正确执行;但如果截去了语句的执行部分,则程序会编译出错或错误执行。,汇编语言语句格式可以包含4个部分:标号域、指令域、操作数域和注释域。以助记符指令为例,汇编语言语句格式如下:标号:指令操作数列表;注释,其中 内的部分是可选项。在编写汇编指令时,必须遵循以下格式:(1)语句必须以标号、空格、星号或分号开始。,(2)标号为可选项。若要使
4、用标号,则必须从第1列开始。标号长度最多为32个字符,由AZ,az,09,_和$等组成,但第1个字符不能为数字。标号后可以跟一个冒号(:),但并不作为标号的一部分。(3)每个域必须由1个或多个空格分开,制表符等效于空格。(4)注释是可选项,开始于第1列的注释须用星号或分号(*或;)标示,但在其他列开始的注释前面只能标分号。,(5)指令域一定不能从第1列开始,否则将被视为标号。指令域包括以下操作码之一:助记符指令、汇编伪指令(如.data,.set)、宏伪指令(如.var,.macro)和宏调用。(6)操作数域为操作数的列表,汇编器允许指定常数、符号或表达式作为地址、立即数或间接寻址。当操作数为
5、立即数时,使用#符号作为前缀;操作数为间接寻址时,使用*符号作为前缀,将操作数的内容作为地址。,4.2.2 汇编指令介绍C54x DSP按指令的功能分类,可分为如下四类:*数据传送指令;*算术运算指令;*逻辑运算指令;*程序控制指令。,表4.1 指 令 集 符 号,续表一,续表一,续表二,1数据传送指令 数据传送指令把源操作数从源存储器中传送到目的操作数指定的存储器中。C54x DSP的数据传送指令包括装载指令、存储指令、条件存储指令、并行装载和存储指令、并行装载和乘法指令、并行存储和加/减法指令、并行存储和乘法指令、混合装载和存储指令。,1)装载指令 装载指令是取数或赋值指令,将存储器内容或
6、立即数赋给目的寄存器,共7条指令,如下所示。(1)DLD语 法:助记符方式 表达式方式DLD Lmem,dst dst=dbl(Lmem)dst=dual(Lmem)执行方式:if C16=0 Then(Lmem)dst Else(Lmem(31-16)dst(39-16)(Lmem(15-0)dst(15-0)受SXM的影响。,功能描述:该指令只把32 bit的长操作数Lmem装入到目的累加器dst中。C16的值决定了所采用的方式:C16=0 指令以双精度方式执行。Lmem装入到dst中。C16=1 指令以双16 bit方式执行。Lmem的高16 bit装入到 dst前24 bit中;同时,
7、Lmem的低16 bit装入到dst的 低16 bit中。,例4.1,DLD*AR3+,B,Data Memory,因为该指令是一个长操作指令,所以AR3在执行后加2。,在所有累加器装入操作中都会受到SXM影响,在带有SHIFT或ASM移位的装入操作中只受OVM的影响;在带有SHIFT或ASM移位的装入指令中影响Ovd(或当dst=src时影响OVsrc)。功能描述:把一数据存储器值或一立即数装入累加器(dst或当没有确定dst时为src),并支持各种不同的移位。另外,指令支持带移位的累加器到累加器的搬移。,例4.2,LD*AR1,A,Data Memory,例4.3,LD*AR1,A,Dat
8、a Memory,例4.4,LD*AR3+,16,A,Data Memory,例4.5,LD*AR3+,16,A,Data Memory,(3)LD语 法:助记符方式 表达式方式 LD Smem,T T=Smem LD Smem,DP DP=Smem LD#k9,DP DP=#k9 LD#k5,ASM ASM=#k5 LD#k3,ARP ARP=#k3 LD Smem,ASM ASM=Smem,执行过程:(Smem)T(Smem(8-0)DP k9DP k5ASM k3ARP(Smem(4-0)ASM 不影响任何状态位。,功能描述:把一个数装入T寄存器或状态寄存器ST0或ST1中的DP、ASM
9、和ARP域中。装入的数可以是一个单数据存储器操作数Smem也可以是一个常数。该指令代码为一个字,但当Smem采用了长偏移直接寻址或绝对地址寻址方式时,指令代码为两个字。,例4.6,LD*AR3+,T,Data Memory,例4.7,LD*AR4,DP,Data Memory,例4.8,LD#23,DP,例4.9,LD 15,ASM,例4.10,LD 3,ARP,例4.11,LD DAT0 ASM,Data Memory,(4)LDM 语 法:助记符方式 表达式方式 LDM MMR,dst dst=MMR dst=mmr(MMR)执 行过程:(MMR)dst 不影响任何状态位。功能描述:把存储
10、器映射寄存器MMR中的值装入到目的累加器dst中。不管DP的当前值或ARx的高9位的值是多少,都把有效地址的高9位清0,以指定为在数据页0中。该指令不受SXM的影响。,例4.12,LDM AR4,A,(5)LDR 语 法:助记符方式 表达式方式 LDR Smem,dst dst=rnd(Smem)执行过程:(Smem)16+1 15dst(31-16)受SXM的影响。功能描述:把单数据存储器操作数Smem左移16 bit后装入目 的累加器dst的高端(3116位)。Smem通过加215 再对累加器的低端(150位)清0来凑整。累加器 的第15位置为1。,例4.13,LDR*AR1,A,Data
11、 Memory,(6)LDU 语 法:助记符方式 表达式方式 LDU Smem,dst dst=uns(Smem)执行过程:(Smem)dst(15-0)00 0000Hdst(39-6)不影响任何状态位。功能描述:把单数据存储器值Smem装入目的累加器dst的低端(150位)。dst的保护位和高端(3916位)清0。因此,数据被看成是一个不带符号的16 bit数。不管SXM位的状态如何都无符号扩展。该指令代码占一个字,但当Smem采用长偏移间接寻址或绝对地址寻址方式时就会多占一个字。,例4.14,LDU*AR1,A,Data Memory,(7)LTD 语 法:助记符方式 表达式方式 LTD
12、 Smem ltd(Smem)执行过程:(Smem)T(Smem)Smem+1 不影响任何状态位。功能描述:把一个单数据存储器单元的内容Smem复制到T寄存器和紧接着T的数据单元中去。当数据复制完毕后,Smem单元的内容保持不变。这个功能在数字信号处理中实现一个Z延时是相当有用的。该功能在存储器延迟指令中也存在。,例4.15,LTD*AR3,Data Memory,2)存储指令 存储指令将原操作数或立即数存入存储器或寄存器,共10条指令,如下所示。(1)DST 语 法:助记符方式 表达式方式 DST src,Lmem dbl(Lmem)=src dual(Lmem)=src执行过程:(src(
13、31-0)Lmem 不影响任何状态位。功能描述:把源累加器的内容放在一个32 bit的长数据存储器单元Lmem中。,例4.16,DST B,*AR3+,Data Memory,(2)ST 语 法:助记符方式 表达式方式 ST T,Smem Smem=T ST TRN,Smem Smem=TRN ST#1k,Smem Smem=#1k 执行过程:(T)Smem(TRN)Smem 1k Smem 该指令不影响任何状态位。功能描述:把T寄存器的内容,过渡寄存器(TRN)的内容或一个 16 bit常数1 k存放到数据存储器单元Smem中去。,例4.17,ST TRN,DAT5,Data Memory,
14、例4.18,ST T,*AR7-,Data Memory,(3)STH语 法:助记符方式 表达式方式 STH src,Smem Smem=hi(src)STH src,ASM,Smem Smem=hi(src)ASM STH src,SHFT,Xmem Xmem=hi(src)SHFT STH src,SHIFT,Smem Smem=hi(src)SHIFT执行过程:(src(31-16)Smem(src)(ASM-16)Smem(src)(SHFT-16)Xmem(src)(SHIFT-16)Smem 该指令受SXM影响。,功能描述:把源累加器src的高端(3116位)存放到数据存储器单元S
15、mem中去。Src进行左移,移动位数由ASM、SHFT或SHIFT决定;然后再把移位后的值(3116位)存放到数据存储器单元(Smem或Xmem)中。如果SXM=0,则把src的39位复制到数据存储器单元的最高位。如果SXM=1,就把移位后进行了符号扩展的第39位存放到数据存储器单元的最高位。,例4.19,STH A,DAT10,Data Memory,例4.20,STH B,8,*AR7,(4)STL语 法:助记符方式 表达式方式 STL src,Smem Smem=src STL src,ASM,Smem Smem=src ASM STL src,SHFT,Xmem Xmem=srcSHF
16、T STL src,SHIFT,Smem Smem=src SHIFT执行过程:(src(15-0)Smem(src)ASMSmem(src)SHFTXmem(src)SHIFT-16Smem,该指令受SXM影响。功能描述:把源累加器src的低端(150位)存放到数据存储器单元Smem中去。Src进行左移操作,移动位数由ASM、SHFT或SHIFT决定。然后把移位后的值(150位)存放到数据存储器单元(Smem或Xmem)中去。当移位值为正时,低位添0。,例4.21,STL A,DAT11,例4.22,STL B,-8,*AR7-,Data Memory,(5)STLM 语 法:助记符方式 表
17、达式方式 STLM src,MMR MMR=src mmr(MMR)=src 执行过程:(src(15-0)MMR 该指令不影响任何状态位。功能描述:把源累加器src的低端(150位)存放到存储器映射寄存器MMR中。无论DP的当前值或ARx的高9位是多少,都对有效地址的高9位清0。指令允许src存放在数据第0页中的任何一个存储器单元中而不必修改状态寄存器ST0中的DP域。,例4.23,STLM A,BRC,例4.24,STLM B,*AR1-,(6)STM语 法:助记符方式 表达式方式 STLM#1k,MMR MMR=#1k mmr(MMR)=#1k 执行过程:1kMMR 该指令不影响任何状态
18、位。功能描述:该指令的功能是:把一个16 bit常数1k存放到一个存 储器映射寄存器MMR或一个在第0数据页中的存储 器单元,而不必修改状态寄存器ST0中的DP域。无 论DP的当前值或ARx的高9位是多少,都对有效地 址的高9位清0。,例4.25,STM 1111H,IMR,例4.26,STM 8765H,*AR7+,(7)CMPS语 法:助记符方式 表达式方式 CMPS src,Smem cmps(src,Smem)执行过程:if(src(31-16)(src(15-0)Then(src(31-16)Smem(TRN)1TRN 0TRN(0)0TC Else(src(15-0)Smem 1T
19、RN(0)1TC 该指令影响TC位。,功能描述:比较位于源累加器的高端和低端的两个16 bit二进制补码值的大小,把较大值存在单数据存储器单元Smem中。如果是源累加器的高端(3116位)较大,则过渡寄存器(TRN)左移一位,最低位填0,TC位清0。如果是源累加器的低端(150位)较大,则TRN左移一位,最低位填1,TC位置1。该指令不遵从标准的流水操作。比较是在读操作数阶段完成,因而,源累加器的值是指令执行前一个阶段的值。TRN寄存器和TC位是在执行阶段被修改的。,例4.27,CMPS A,*AR4+,(8)SACCD语 法:助记符方式 表达式方式 SACCD src,Xmem,cond i
20、f(cond)Xmem=hi(src)ASM执行方式:if(cond)Then(src)(ASM-16)XmemElse(Xmem)(Xmem)该指令受ASM和SXM的影响。,功能描述:如果满足条件(如表4.2所示),则源累加器src左移(ASM-16)位后存放到Xmem指定的存储器单元中去;如果不满足条件,则指令从Xmem中读出数据,然后又把它写回到原来的单元中去,即Xmem单元的值保持不变。,表4.2 功 能 条 件,例4.28,SACCD A,*AR3+0%,ALT,Data Memory,(9)SRCCD语 法:助记符方式 表达式方式SRCCD Xmem,cond if(cond)Xm
21、em=BRC执行过程:if(cond)Then(BRC)Xmem Else(Xmem)Xmem 该指令不会影响任何状态位。功能描述:如果满足条件,则指令把块循环计数器(BRC)中的内容放到Xmem中去;如果不满足条件,则指令把Xmem中的内容读出,再把它写回去,即Xmem保持不变。,例4.29,SRCCD*AR5-,AGT,Data Memory,语 法:助记符方式 表达式方式 STRCD Xmem,cond if(cond)Xmem=T执行过程:if(cond)(T)Xmem Else(Xmem)Xmem 该指令不会影响任何状态位。功能描述:如果满足条件,就把T寄存器的值存放到数据存储器单元
22、Xmem中去;如果不满足条件,则指令从单元Xmem中读出数据,然后再把它写回到Xmem中去,即Xmem中的数据保持不变。,例4.30,STRCD*AR5-,AGT,Data Memory,3)混合装载和存储指令 混合装载和存储指令共12条,如下所示。(1)MVDD语 法:助记符方式 表达式方式 MVDD Xmem,Ymem Ymem=Xmem执行过程:(Xmem)Ymem 该指令不影响任何状态位。功能描述:把通过Xmem寻址的数据存储器单元的值复制到通过Ymem寻址的数据存储器单元中去。,例4.31,MVDD*AR3+,*AR5+,Data Memory,(2)MVDK语 法:助记符方式 表达
23、式方式 MVDK Smem,dmad data(dmad)=Smem执行过程:(dmad)EAR if(RC)0 Then(Smem)通过EAR寻址的Dmem(EAR)+1EAR Else(Smem)通过EAR寻址的Dmem 该指令不会影响任何状态位。,功能描述:把一个单数据存储器操作数Smem的内容复制到一个通过dmad(地址在EAB地址寄存器EAR中)寻址的数据存储器单元。可以循环执行该指令来转移数据存储器中的连续字(使用间接寻址)。实际被转移的字数要比指令开始执行时循环计数器中的值大1。一旦启动流水,指令就成为单周期指令。该指令代码占两个字,但当Smem采用长偏移间接寻址或绝对寻址方式时
24、就会多占一个字。,例4.32,MVDK DAT10,8000H,Data Memory,例4.33,MVDK*AR3-,1000H,Data Memory,(3)MVDM语 法:助记符方式 表达式方式 MVDM dmad,MMR MMR=data(dmad)mmr(MMR)=data(dmad)执行过程:dmadDAR if(RC)0 Then(通过DAR寻址的Dmem)MMR(DAR)+1DAR Else(通过DAR寻址的Dmem)MMR,该指令不影响任何状态位。功能描述:把数据从一个数据存储器单元dmem(dmad的值装入DAB地址寄存器DAR中)复制到一个存储器映射寄存器MMR中。一旦启
25、动了循环流水,指令就变成了一条单周期指令。该指令代码占两个字。,例4.34,MVDM 300H,BK,Data Memory,(4)MVDP语 法:助记符方式 表达式方式 MVDP Smem,pmad prog(pmad)=Smem执行过程:pmadPAR if(RC)0 Then(Smem)由PAR寻址的Pmem(PAR)+1PAR Else(Smem)由PAR寻址的Pmem 该指令不会影响任何状态位。,功能描述:把严格的16 bit单数据存储器操作数Smem复制到一个由16 bit立即数pmad寻址的程序存储器单元中。通过循环执行该指令可以把数据存储器中的连续字(使用间接寻址)转移到由16
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 TMS320C54xTMDSP汇编语言与混合编程 TMS320C54xTMDSP 汇编语言 混合 编程
链接地址:https://www.31ppt.com/p-2879469.html