欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

    第4章 TMS320C54xTMDSP汇编语言与混合编程.ppt

    • 资源ID:740498       资源大小:3.93MB        全文页数:547页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第4章 TMS320C54xTMDSP汇编语言与混合编程.ppt

    第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语言就不如用汇编程序方便,有些甚至无法用C语言实现。,第二种,用汇编语言开发。此种方式代码效率高,程序执行速度快,可以充分合理地利用芯片提供的硬件资源。然而,用汇编语言编写程序比较烦琐,可读性较差。另外,不同类别或不同公司的芯片汇编语言往往不同,因此可移植性较差。总 之,用汇编语言开发产品,周期长,软件的修改和升级困难。第三种,C和汇编语言混合编程开发。采用混合编程的方法能更好地达到设计要求,完成设计任务。,4.2 汇 编 语 言,4.2.1 汇编语言源程序格式 汇编语言是DSP应用软件的基础。编写汇编语言必须要符合相应的格式,这样汇编器才能将源文件转换为机器语言的目标文件。C54x DSP汇编语言源程序由源说明语句组成,包含汇编语言指令、汇编伪指令、宏伪指令和注释等,一般一句程序占据编辑器的一行。由于汇编器每行最多只能读200个字符,因此源语句的字符数不能超过200个,一旦长度超过200个字符,汇编器将自行截去行尾的多余字符并给出警告信息。如果截去的是注释,那么不影响程序的正确执行;但如果截去了语句的执行部分,则程序会编译出错或错误执行。,汇编语言语句格式可以包含4个部分:标号域、指令域、操作数域和注释域。以助记符指令为例,汇编语言语句格式如下:标号:指令操作数列表;注释,其中 内的部分是可选项。在编写汇编指令时,必须遵循以下格式:(1)语句必须以标号、空格、星号或分号开始。,(2)标号为可选项。若要使用标号,则必须从第1列开始。标号长度最多为32个字符,由AZ,az,09,_和$等组成,但第1个字符不能为数字。标号后可以跟一个冒号(:),但并不作为标号的一部分。(3)每个域必须由1个或多个空格分开,制表符等效于空格。(4)注释是可选项,开始于第1列的注释须用星号或分号(*或;)标示,但在其他列开始的注释前面只能标分号。,(5)指令域一定不能从第1列开始,否则将被视为标号。指令域包括以下操作码之一:助记符指令、汇编伪指令(如.data,.set)、宏伪指令(如.var,.macro)和宏调用。(6)操作数域为操作数的列表,汇编器允许指定常数、符号或表达式作为地址、立即数或间接寻址。当操作数为立即数时,使用#符号作为前缀;操作数为间接寻址时,使用*符号作为前缀,将操作数的内容作为地址。,4.2.2 汇编指令介绍C54x DSP按指令的功能分类,可分为如下四类:*数据传送指令;*算术运算指令;*逻辑运算指令;*程序控制指令。,表4.1 指 令 集 符 号,续表一,续表一,续表二,1数据传送指令 数据传送指令把源操作数从源存储器中传送到目的操作数指定的存储器中。C54x DSP的数据传送指令包括装载指令、存储指令、条件存储指令、并行装载和存储指令、并行装载和乘法指令、并行存储和加/减法指令、并行存储和乘法指令、混合装载和存储指令。,1)装载指令 装载指令是取数或赋值指令,将存储器内容或立即数赋给目的寄存器,共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中;同时,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,Data 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和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 不影响任何状态位。功能描述:把存储器映射寄存器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 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 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(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,例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位)存放到数据存储器单元Smem中去。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=srcSHFT 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 语 法:助记符方式 表达式方式 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 该指令不影响任何状态位。功能描述:该指令的功能是:把一个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 1TRN(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 if(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)Xmem=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寄存器的值存放到数据存储器单元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语 法:助记符方式 表达式方式 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采用长偏移间接寻址或绝对寻址方式时就会多占一个字。,例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中。一旦启动了循环流水,指令就变成了一条单周期指令。该指令代码占两个字。,例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 bit立即数寻址的连续的程序存储器空间中。源和目的块不必全部在片外或片内。当循环流水开始进行时,该指令就变成了一个单周期指令。另外,当循环执行该指令时,中断被禁止。,例4.35,MVDP DAT0,0FE00H,Data Memory,Program Memory,(5)MVKD语 法:助记符方式 表达式方式 MVKD dmad,Smem Smem=data(dmad)执行过程:dmadDAR if(RC)0 Then(通过DAR寻址的Dmem)Smem(DAR)+1DAR Else(通过DAR寻址的Dmem)Smem 该指令不会影响任何状态位。,功能描述:把数据从一数据存储器单元转移到另一个数据存储器单元中。源数据存储器单元由一个16 bit立即数dmad寻址,然后转移到Smem中。循环执行该指令可以转移数据存储器中的连续字(使用间接寻址)。转移的字数要比指令开始执行时循环计数器中的值大1。一旦形成循环流水,该指令就变成了单周期指令。该指令代码占两个字,但当Smem采用长偏移间接寻址或绝对寻址方式时就会多占一个字。,例4.36,MVKD 1000H,*+AR5,Data Memory,(6)MVMD语 法:助记符方式 表达式方式 MVMD MMR,dmad data(dmad)=MMR data(dmad)=mmr(MMR)执行过程:dmadEAR if(RC)0 Then(MMR)由EAR寻址的Dmem(EAR)+1EAR Else(MMR)由EAR寻址的Dmem,该指令不影响任何状态位。功能描述:把数据从一个存储器映射寄存器MMR转移到一个数据存储器中。目的数据存储器通过一个16 bit立即数dmad寻址。一旦建立了循环流水,该指令就变成了单周期指令。,例4.37,MVMD AR7,8000H,Data Memory,(7)MVMM语 法:助记符方式 表达式方式 MVMM MMRx,MMRy MMRy=MMRx mmr(MMRy)=mmr(MMRx)执行过程:(MMRx)MMRy 该指令不会影响任何状态位。功能描述:把存储器映射寄存器MMRx中的内容转移到另一个存储器映射寄存器MMRy中。MMRx和MMRy只可能为9种操作数(AR0AR7和SP)。读MMRx的操作在译码阶段执行;写MMRy的操作在访问阶段执行。注意,该指令不能循环执行。,例4.38,MVMM SP,AR1,(8)MVPD语 法:助记符方式 表达式方式 MVPD pmad,Smem Smem=prog(pmad)执行过程:pmadPAR if(RC)0 Then(由PAR寻址的Pmem)Smem(PAR)+1PAR Else(由PAR寻址的Pmem)Smem,该指令不影响任何状态位。功能描述:把一个字通过16 bit立即数pmad寻址的程序存储器转移到一个由Smem寻址的数据存储器单元。循环执行该指令能把程序存储器中的连续字转移到连续的数据存储器单元中去。源和目的块不必全部都在片内或片外。当建立起了循环流水,该指令就变成了单周期指令。另外,循环执行该指令时禁止中断。该指令代码占两个字,但当Smem采用长偏移间接寻址或绝对寻址方式时就会多占一个字。,例4.39,MVPD 0FE00H,DAT5,Program Memory,Data Memory,例4.40,MVPD 2000,*AR7-0,Program Memory,(9)PORTR语 法:助记符方式 表达式方式PORTR PA,Smem Smem=port(PA)执行过程:(PA)Smem该指令不会影响任何状态位。功能描述:从一个外部I/O口PA(地址为16 bit立即数)把一个16 bit数读入到指定的数据存储器单元Smem中。信号变为低电平表明在访问I/O口;和READY的时序和读外部数据存储器的时序相同。该指令代码占两个字,但当Smem使用长偏移间接寻址或绝对地址寻址时,就会多占一个字。,例4.41,PORTR 05,INDAT;INDAT.equ 60H,I/O Memory,Data Memory,(10)PORTW语 法:助记符方式 表达式方式PORTW Smem,PA port(PA)=Smem执行过程:(Smem)PA该指令不影响任何状态位。功能描述:把指定的数据存储器单元Smem中的16 bit数写到外部I/O口PA中去。信号变为低电平表明在访问I/O口;和READY的时序和读外部数据存储器的时序相同。该指令代码占两个字,但当Smem使用长偏移间接寻址或绝对地址寻址时就会多占一个字。,例4.42,PORTW OUTDAT,5H;OUTDAT.equ 07H,I/O Memory,Data Memory,(11)READA语 法:助记符方式 表达式方式 READA Smem Smem=prog(A)执行过程:APARif(RC)0)Then(由PAR寻址的Pmem)Smem(PAR)+1PAR(RC)-1RCElse(由PAR寻址的Pmem)Smem,该指令不影响任何状态位。功能描述:把累加器A确定的程序存储器单元中的一个字传送到一个数据存储器单元Smem中去。一旦建立了循环流水,指令就变成了单周期指令。对于不同的芯片,累加器A确定程序存储器单元的方式如下:,可以循环执行该指令,把一块连续字(由累加器A确定起始地址)转移到一个连续的使用间接寻址方式的数据存储器空间中去。源和目的块不必全部都在片内或片外。,例4.43,READA DAT6,Program Memory,Data Memory,(12)WRITA语 法:助记符方式 表达方式 WRITA Smem prog(A)=Smem执行过程:A PARif(RC)0Then(Smem)由PAR寻址的Pmem(PRA)+1PRA(RC)-1RCElse(Smem)由PRA寻址的Pmem该指令不影响任何状态位。,功能描述:把一个字从一个由Smem确定的数据存储器单元传送到一个程序存储器单元。程序存储器的地址由累加器A确定,具体情况与芯片有关:,我们可以通过循环指令,把数据存储器中的连续字(使用间接寻址)转移到由PRA寻址的连续的程序存储器空间去。PAR的初始值是累加器A的低16位值。源和目的块都不必完全在片内或片外。当循环时,一旦建立了循环流水,该指令就变成了单周期指令。,例4.44,WRITA DAT5,Program Memory,Data Memory,2算术运算指令 C54x DSP的算术运算指令包括加法指令、乘法指令、乘法累加指令、乘法减法指令、双字运算指令及特殊应用指令。1)加法指令 加法指令共4条,如下所示。,(1)ADD语 法:助记符方式 表达式方式 ADD Smem,src src=src+Smem src+=Smem ADD Smem,TS,src src=src+SmemTS src+=SmemTS ADD Smem,16,src,dst dst=src+Smem16 dst+=Smem16 ADD Smem,SHIFT,src,dst dst=src+SmemSHIFT dst+=SmemSHIFT,ADD Xmem,SHIFT,src src=src+XmemSHIFT src+=XmemSHIFT ADD Xmem,Y mem,dst dst=Xmem16+Ymem16 ADD#1k,SHIFT,src,dst dst=src+#1k SHIFT dst+=#1k SHIFT ADD#1k,16,src,dst dst=src+#1k16 dst+=#1k 16 ADD src,SHIFT,dst dst=dst+srcSHIFT dst+=src+SHIFT ADD src,ASM,dst dst=dst+srcASM dst+=srcASM,执行过程:(Smem)+(src)src(Smem)(TS)+(src)src(Smem)16+(src)dst(Smem)SHIFT+(src)dst(Xmem)SHIFT+(src)src(Xmem)+(Ymem)16dst 1k 16+(src)dst 1k SHIFT+(src)dst(src or dst)+(src)SHIFTdst(src or dst)+(src)ASMdst,该指令受SXM和OVM影响,且影响C和OVdst(如果dst=src,就是OVsrc)。功能描述:把一个16 bit的数加到选定的累加器中,或加到一个采用双数据存储器操作数寻址的16 bit操作数Xmem中。这个16 bit的数可为以下情况中的一个:*单数据存储器操作数(Smem);*双数据存储器操作数(Ymem);*一个16 bit立即操作数(#1k);*src中的移位数。,如果定义了dst,结果就存在dst中;否则,结果存在src中。大部分第二操作数要移位。左移位时低位添0;右移时高位情况为:如果 SXM=1,进行符号扩展;如果 SXM=0,则添0。,例4.45,ADD*AR3+,14,A,Data Memory,例4.46,ADD A,-8,B,ADD#456B,8,A,B,例4.47,(2)ADDC语 法:助记符方式 表达式方式 ADDC Smem,src src=src+Smem+CARRY src+=Smem+CARRY执行过程:(Smem)+(src)+(C)src 该指令受OVM和C影响,并能影响C和OVsrc。功能描述:把16 bit单数据存储器操作数Smem和进位位(C)的值加到src中,其结果存放在src中。无论SXM位的值是什么,都不进行符号扩展。,例4.48,ADDC*+AR2(5),A,Data Memory,(3)ADDM语 法:助记符方式 表达式方式 ADDM#1k,Smem Smem=Smem+#1k Smem+=#1k 执行过程:#1k+(Smem)Smem 该指令受OVM和SXM影响,并能影响C和OVA。功能描述:16 bit单数据存储器操作数Smem与16 bit立即数1k相加,结果存放在Smem中。该指令不能循环执行。,例4.49,ADDM 0123BH,*AR4+,Data Memory,例4.50,ADDM,0FFF8H,*AR4+,Data Memory,(4)ADDS语 法:助记符方式 表达式方式ADDS Smem,src src=src+uns(Smem)src+=uns(Smem)执行过程:uns(Smem)+(src)src 该指令受OVM影响,并能影响C和OVsrc。功能描述:把不带符号的16 bit单数据存储器操作数Smem加到src中,结果存放在src中。无论SXM为何值都不进行符号扩展。,例4.51,ADDS*AR2-,B,Data Memory,2)减法指令减法指令共4条,如下所示。(1)SUB语 法:助记符方式 表达式方式 SUB Smem,src src=src-Smem src-=Smem SUB Smem,TS,src src=src-SmemTS src-=SmemTS SUB Smem,16,src,dst dst=src-Smem16 dst-=Smem16 SUB Smem,SHIFT,src,dst dst=src-SmemSHIFT dst-=SmemSHIFT SUB Xeme,SHIFT,src src=src-XmemSHFT src-=XmemSHFT,SUB Xeme,Ymem,dst dst=Xmem16-Ymem 16 SUB#lk,SHIFT,src,dst dst=src-#lkSHFT dst-=#lkSHFT SUB#lk,16,src,dst dst=src-#lk16 dst-=#lk16 SUB src,SHIFT,dst dst=dst-srcSHIFT dst-=srcSHIFT SUB src,ASM,dst dst=dst-srcASM dst-=srcASM,执行过程:(src)-(Smem)src(src)-(Smem)TSsrc(src)-(Smem)16dst(src)-(Smem)SHIFTdst(src)-(Xmem)SHIFT rc(Xmem)16-(Ymem)16dst(src)-lkSHFTdst(src)-lk16dst(src)-(src)SHFTdst(src)-(src)ASMdst,该指令受SXM和OVM的影响,并能影响C和OVdst(如果dst=src,就为OVsrc)。在语法中,如果减法的结果产生一个借位,则进位位C为0;否则C不受影响。功能描述:从选定的累加器或采用双数据存储器寻址方式的16 bit操作数Xmem中减去一个16 bit值。16 bit减数可能是下列情况中的一种:*单数据存储器操作数(Smem);*双数据存储器操作数(#lk);*16 bit立即数(#lk);*源累加器src的移位值。,如果指定了目的累加器dst,结果就存放在dst中;否则,结果存放在src中。大部分指令的第二操作数都进行了移位。对于左移,低位添0;高位当SXM=1时进行符号扩展,当SXM=0时添0。对于右移,高位当SXM=0时进行符号扩展,当SXM=0时添0。,例4.52,SUB*AR1+,14,A,Data Memory,例4.53,SUB A,-8,B,例4.54,SUB#12345,8,A,B,(2)SUBB语 法:助记符方式 表达式方式 SUBB Smem,src src=src-Smem-BORROWsrc-=Smem-BORROW执行过程:(src)-(Smem)-(C的逻辑反)src 该指令受OVM和C的影响,并能影响C和OVsrc。功能描述:从源累加器中减去单数据存储器操作数的值和进位位C的逻辑反,且不进行符号扩展。,例4.55,SUBB DAT5,A,Data Memory,例4.56,SUBB*AR1+,B,Data Memory,(3)SUBC语 法:助记符方式 表达式方式 SUBC Smem,src subc(Smem,src)执行过程:(src)-(Smem)15)ALU的输出 if ALU的输出0 Then(ALU的输出)1)+1src Else(src)1src该指令受SXM的影响,并能影响C和OVsrc。,功能描述:16 bit单数据存储器操作数Smem左移15 bit,然后再从源累加器src中减去移位后的值。如果结果大于0,结果就左移一位,加上1,再存放到src中;否则,只把src的值左移一位,再存放到src中。除数和被除数在这条指令中都假设为正,SXM将影响该操作:如果SXM=1,则除数的最高位必须为0;如果SXM=0,则任何一个16 bit除数值都可以。Src中的被除数必须初始化为正(bit31为0),且在移位后也必须保持为正。该指令影响OVA或OVB,但不受OVM影响。所以,当发生溢出时,scr不进行饱和运算。,例4.57,SUBC DAT2,A,Data Memory,例4.58,RPT#25 SUBC*AR1,B,Data Memory,(4)SUBS语 法:助记符方式 表达式方式 SUBS Smem,src src=src-uns(Smem)src-=uns(Smem)执行过程:src-不带符号的Smemsrc 该指令受OVM的影响,并能影响C和Ovsrc。功能描述:从源累加器src中减去16 bit单数据存储器操作数Smem的值。无论SXM的值为多少,Smem都被看成是一个16 bit无符号数。,例4.59,SUBS*AR2-,B,Data Memory,3)乘法指令乘法指令共4条,如下所示。(1)MPYR语 法:助记符方式 表达式方式 MPYR Smem,dst dst=rnd(T*Smem)MPY Xmem,Ymem,dst dst=Xmem*Ymem,T=Xmem MPY Smem,#1k,dst dst=Smem*#1k,T=Smem MPY#1k,dst dst=T*#1k,执行方式:(T)(Smem)dst(Xmem)(Ymem)dst(Xmem)T(Smem)1kdst(Smem)T(T)1kdst 该指令受FRCT和OVM的影响,并能影响OVdst。,功能描述:T寄存器的值或一个数据存储器值与另一个数据存储器的值或一个立即数相乘,结果存放在目的累加器dst中。在读操作数阶段把Smem或Xmem的值装入T寄存器中。如果你使用了R后缀,指令就会对结果进行凑整运算。其步骤是:结果加上215再对150位清0。,例4.60,MPY DAT13,A,Data Memory,例4.61,MPY*AR2-,*AR4+0%,B,Data Memory,例4.62,MPY#0FFFEH,A,(2)MPYA语 法:助记符方式 表达式方式 MPYA Smem B=Smem*hi(A),T=Smem MPYA dst dst=T*hi(A)执行过程:(Smem)(A(3216)B(Smem)T(T)(A(3216)dst,该指令受FRCT和OVM的影响,并影响OVsrc(在语法中为OVB)。功能描述:累加器A的高端(3216位)与一个单数据存储器操作数Smem或T寄存器的值相乘,结果存放在累加器dst或累加器B中。在读操作数期间把单数据存储器操作数Smem装入T寄存器中(语法)。该指令代码占一个字,但当Smem采用长偏移间接寻址或绝对寻址方式时就会多占一个字。,例4.63,MPYA*AR2,Data Memory,例4.64,MPYA B,(3)MPYU语 法:助记符方式 表达式方式 MPYU Smem,dst dst=T*uns(Smem)执行过程:无符号的(T)无符号的(Smem)dst 该指令受FRCT和OVM的影响,同时会影响到OVdst。功能描述:不带符号的T寄存器值与不带符号的单数据存储器操作数Smem相乘,结果存放在目的累加器dst中。乘法器对于该指令来说相当于两个操作数的最高位都为0的一个带符号的1717 bit的乘法器。该指令在计算诸如两个32 bit数相乘得到一个64 b

    注意事项

    本文(第4章 TMS320C54xTMDSP汇编语言与混合编程.ppt)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开