DSP技术TMS320C55x的指令系统课件_第1页
DSP技术TMS320C55x的指令系统课件_第2页
DSP技术TMS320C55x的指令系统课件_第3页
DSP技术TMS320C55x的指令系统课件_第4页
DSP技术TMS320C55x的指令系统课件_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

第3章TMS320C55x的指令系统内容提要

如果要熟练使用数字信号处理器,必须了解处理器的指令系统,这样才能编写出精干、高效的程序。在本章中首先对TMS320C55x的寻址方式做了介绍,之后对C55x的指令系统进行了详细说明。

C55x处理器的指令系统可以分为6大类,包括算术运算指令、位操作指令、扩展辅助寄存器操作指令、逻辑运算指令、移动指令和程序控制指令等。而介绍的内容包括指令格式,执行的操作,是否有并行使能位,长度,周期,在流水线上的执行阶段以及执行的功能单元等。12023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统内容提要12023整体概述THEFIRSTPARTOFTHEOVERALLOVERVIEW,PLEASESUMMARIZETHECONTENT第一部分2整体概述第一部分23.1寻址方式3.2TMS320C55x的指令系统第3章TMS320C55x的指令系统32023/10/6TMS320C55xDSP原理及应用3.1寻址方式第3章TMS320C55x的指令系统3第3章TMS320C55x的指令系统3.1寻址方式

寻址方式是指如何指定指令和操作数所在存储空间的地址。C55xDSP支持三种寻址模式,可以高效、灵活地对数据空间、存储映射寄存器、寄存器位和I/O空间进行寻址,它们是:

绝对寻址模式:通过在指令中指定一个常数地址完成寻址。直接寻址模式:使用地址偏移量寻址。间接寻址模式:使用指针完成寻址。42023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统3.1寻址方式第3章TMS320C55x的指令系统3.1.1绝对寻址模式

绝对寻址模式有三种,它们分别是:k16绝对寻址、k23绝对寻址和I/O绝对寻址。1.k16绝对寻址使用该模式寻址的指令其操作数为*abs16(#k16),其中k16是一个16位的无符号常数。寻址方法是将7位的寄存器DPH(扩展数据页指针XDP的高位部分)和k16级联形成一个23位的地址,用于对数据空间的访问。该模式可以访问一个存储单元和一个存储映射寄存器。52023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统3.1.1绝对寻第3章TMS320C55x的指令系统0000000.00000000000000000000001.00000000000000000000010000000000000000011111110000000000000000DPHk16数据空间0000000~00000000000000000000000~1111111111111111第0主数据页:000000h~00FFFFh0000001~00000010000000000000000~1111111111111111第1主数据页:010000h~01FFFFh0000010~00000100000000000000000~1111111111111111第2主数据页:000000h~00FFFFh~~~1111111~11111111111111111111111~1111111111111111第127主数据页:7F0000h~7FFFFFh

k16绝对寻址模式

*由于对指令进行了扩展,使用该模式寻址的指令不能与其他指令并行执行。62023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统0000000.0第3章TMS320C55x的指令系统2.k23绝对寻址使用该模式寻址的指令其操作数为*(#k23),其中k23是一个23位的无符号常数。如图3-2所示。使用这种寻址方法的指令将常数编码为3字节(去掉最高位),与k16绝对寻址一样,使用该模式寻址的指令不能与其他指令并行执行。00000000000000000000000000000100000000000000000000010000000000000000011111110000000000000000k23数据空间00000000000000000000000~00000001111111111111111第0主数据页:000000h~00FFFFh00000010000000000000000~00000011111111111111111第1主数据页:010000h~01FFFFh~~11111110000000000000000~11111111111111111111111第127主数据页:7F0000h~7FFFFFh72023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统2.k2第3章TMS320C55x的指令系统3.I/O绝对寻址

对于I/O绝对寻址模式,如果使用代数指令,其操作数是*port(#k16),其中k16是一个16位无符号常数;如果使用助记符指令,其操作数是port(#k16)(操作数前没有*)。如下所示,使用该模式的指令将常数编码为2字节。同样,该指令不能与其他指令并行执行。

k16I/O空间0000000000000000~

11111111111111110000h~FFFFh82023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统3.I/3.1.2直接寻址模式第3章TMS320C55x的指令系统

直接寻址有以下几种方式:数据页指针(DP)直接寻址、堆栈指针(SP)直接寻址、寄存器位直接寻址和外设数据页指针(PDP)直接寻址。其中,DP直接寻址和SP直接寻址与状态寄存器ST1-55的CPL位有关:

当CPL=0,采用DP直接寻址模式当CPL=1,采用SP直接寻址模式

而寄存器位寻址和PDP直接寻址与CPL无关。92023/10/6TMS320C55xDSP原理及应用3.1.2直接寻址模式第3章TMS320C55x的指第3章TMS320C55x的指令系统1.DP直接寻址

在DP直接寻址方法中,23位地址的形成如图3-3所示。其中高7位由DPH提供,用来确定主数据页,其余低16位由两部分组成。(1)DP:DP确定在主数据页内长度为128字节的局部数据页的起始地址,该起始地址可以是主数据页内的任何地址。(2)由汇编器计算出的7位偏移量(Doffset):偏移量的计算与访问的是数据空间还是存储映射寄存器(限定词是mmap())有关。

由DPH和DP构成扩展数据页寄存器XDP,可以将DPH和DP分别载入,也可以用一条指令载入XDP。102023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统1.DP第3章TMS320C55x的指令系统

XDP0000000000000000000000000000010000000000000000.11111110000000000000000DPH(DP+Doffset)数据空间0000000~00000000000000000000000~1111111111111111第0主数据页:000000h~00FFFFh0000001~00000010000000000000000~1111111111111111第1主数据页:010000h~01FFFFh0000010~00000100000000000000000~1111111111111111第2主数据页:020000h~02FFFFh~~

~1111111~11111110000000000000000~1111111111111111第127主数据页:020000h~02FFFFhDP直接寻址模式

XDP112023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统XDP00000第3章TMS320C55x的指令系统2.SP直接寻址当一条指令采用SP直接寻址模式,23位地址的形成如图所示。其中,SPH确定高7位地址,其余16位地址由SP和7位偏移量决定,偏移量的范围是0~127。由SPH和SP构成了扩展数据堆栈指针XSP。

由于在第0主数据页,地址000000h~00005Fh为存储映射寄存器保留,所以若数据栈位于该主数据页,则可以使用的地址范围是000060h~00FFFFh。122023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统2.SP第3章TMS320C55x的指令系统

SP直接寻址模式

XSP000000000000000000000000000001000000000000000011111110000000000000000SPH(SP+Doffset)数据空间0000000~00000000000000000000000~1111111111111111第0主数据页:000000h~00FFFFh0000001~00000010000000000000000~1111111111111111第1主数据页:010000h~01FFFFh0000010~00000100000000000000000~1111111111111111第2主数据页:020000h~02FFFFh~~~1111111~11111110000000000000000~1111111111111111第127主数据页:020000h~02FFFFhXSP132023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统SP直接寻址模式第3章TMS320C55x的指令系统3.寄存器位寻址使用寄存器位寻址的指令其操作数是@bitoffset,该操作数是从寄存器的最低位开始的偏移值。例如,如果bitoffset为0,那么就可以访问寄存器的最低位;如果bitoffset为3,那么就可以访问寄存器的第3位。

只有寄存器的位测试、置位、清零、取反指令支持这种寻址模式。这种方式仅能访问下列寄存器的各位:AC0~AC3,AR0~AR7,T0~T3.142023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统3.寄存第3章TMS320C55x的指令系统4.PDP直接寻址当一条指令使用PDP直接寻址模式,16位I/O地址的形成如图3-5所示。64K

16位的I/O空间分成512个外设数据页,用9位的外设数据页指针PDP表示,其中每一页有128个字,由指令中的指定的7位偏移值来表示。例如,如果访问一页的第一个字,其偏移值为0。152023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统4.PD第3章TMS320C55x的指令系统

PDP直接寻址模式000000000000000000000001000000000000010.0000000111111110000000PDPPoffsetI/O空间(64K字)00000000~000000000000000~1111111第0外设数据页:0000h~007Fh00000001~000000010000000~1111111第1外设数据页:0080h~00Fh00000010~000000100000000~1111111第2外设数据页:0100h~017Fh~~~111111111111111第511外设数据页:FF80h~FFFFh162023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统PDP直接寻址模式3.1.3间接寻址模式第3章TMS320C55x的指令系统CPU支持的间接寻址模式有AR间接寻址、双AR间接寻址、CDP间接寻址和系数间接寻址。利用这些模式可以进行线性或循环寻址。1.AR间接寻址模式

该模式通过一个辅助寄存器ARn(n=0,1,2,3,4,5,6,或7)访问数据空间。而ST2-55的ARMS位决定了AR间接寻址的操作类型:当ARMS=0,DSP模式:CPU提供DSP增强应用的高效执行功能。当ARMS=1,控制模式:针对控制系统的应用,CPU能够优化代码的长度。

下面分别给出了AR间接寻址的DSP模式和控制模式。

172023/10/6TMS320C55xDSP原理及应用3.1.3间接寻址模式第3章TMS320C55x的指第3章TMS320C55x的指令系统AR间接寻址DSP模式在生成地址之后增加:16位操作,ARn=ARn+1在生成地址之后减少:16位操作,ARn=ARn

1在生成地址之前增加:16位操作,ARn=ARn+1在生成地址之前减少:16位操作,ARn=ARn

1在生成地址之后,ARn加上T0或ARn中16位带符号的常数:如果C54CM=0,ARn=ARn+T0在生成地址之后,ARn减去T0或ARn中16位带符号的常数:如果C54CM=0,ARn=ARn

T0序号操作数地址修改1*ARnARn未修改2*Arn+在生成地址之后增加:16位操作,ARn=ARn+132位操作,ARn=ARn+2

3*Arn

在生成地址之后减少:16位操作,ARn=ARn132位操作,ARn=Arn2

4*+ARn在生成地址之前增加:16位操作,ARn=ARn+132位操作,ARn=ARn+25*

ARn在生成地址之前减少:16位操作,ARn=ARn132位操作,ARn=ARn2

6*(ARn+T0/AR0)在生成地址之后,ARn加上T0或ARn中16位带符号的常数:如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0182023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统AR间接寻址DSP模第3章TMS320C55x的指令系统AR间接寻址DSP模式(续)在生成地址之后,ARn减去T0或ARn中16位带符号的常数:如果C54CM=0,ARn=ARn

T0在生成地址之后,ARn加上T0或ARn中16位带符号的常数:如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0在生成地址之后,ARn减去T0或ARn中16位带符号的常数:如果C54CM1=0,ARn=ARn

T0如果C54CM=1,ARn=ARn

AR0在生成地址之后,ARn加上T1中16位带符号的常数:在生成地址之后,ARn减去T1中16位带符号的常数:7*(ARn

T0/AR0)在生成地址之后,ARn减去T0或ARn中16位带符号的常数:如果C54CM=0,ARn=ARnT0如果C54CM=1,ARn=ARnAR08*ARn(T0/AR0)ARn未被修改。ARn被作为基指针,T0或AR0中16位带符号常数被作为偏移量9*(ARn+T0B/AR0B)在生成地址之后,ARn加上T0或ARn中16位带符号的常数:如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0按位倒序模式相加

10*(ARn

T0B/AR0B)在生成地址之后,ARn减去T0或ARn中16位带符号的常数:如果C54CM1=0,ARn=ARn

T0如果C54CM=1,ARn=ARn

AR0按位倒序模式相减[注1]:C54CM是状态寄存器ST1-55中TMS320C54x兼容模式。192023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统AR间接寻址DSP模第3章TMS320C55x的指令系统在生成地址之后,ARn加上T1中16位带符号的常数:在生成地址之后,ARn减去T1中16位带符号的常数:在生成地址之后,ARn加上T1中16位带符号的常数:在生成地址之后,ARn减去T1中16位带符号的常数:11*(ARn+T1)在生成地址之后,ARn加上T1中16位带符号的常数:ARn=ARn+T1

12*(ARn

T1)在生成地址之后,ARn减去T1中16位带符号的常数:ARn=ARnT113*ARn(T1)ARn未被修改。ARn被作为基指针,T1中16位带符号常数被作为偏移量14*ARn(#K16)ARn未被修改。ARn被作为基指针,16位带符号常数(K16)被作为偏移量15*+ARn(#K16)在地址生成之前,ARn加上16位带符号常数(K16)AR间接寻址DSP模式(续)202023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统在生成地址之后,AR第3章TMS320C55x的指令系统在生成地址之后增加:16位操作,ARn=ARn+1序号操作数地址修改1*ARnARn未修改2*ARn+在生成地址之后增加:16位操作,ARn=ARn+132位操作,ARn=ARn+2

AR间接寻址控制模式

3*ARn

在生成地址之后减少:16位操作,ARn=ARn132位操作,ARn=ARn2

4*(ARn+T0/AR0)在生成地址之后,ARn加上T0或AR0中16位带符号的常数:如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0

5*(ARn

T0/AR0)在生成地址之后,ARn减去T0或AR0中16位带符号的常数:如果C54CM=0,ARn=ARnT0如果C54CM=1,ARn=ARnAR0

212023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统在生成地址之后增加:第3章TMS320C55x的指令系统

AR间接寻址控制模式(续)6*ARn(T0/AR0)ARn未被修改。ARn被作为基指针,T0或AR0中16位带符号常数被作为偏移量7*ARn(#K16)ARn未被修改。ARn被作为基指针,16位带符号常数(k16)被作为偏移量8*+ARn(#K16)在地址生成之前,ARn加上16位带符号常数(k16)9*ARn(short(#k3))ARn未被修改。ARn被作为基指针,3位带符号常数(k13)被作为偏移量222023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统AR间接寻址控制模第3章TMS320C55x的指令系统2.双AR间接寻址模式

双AR间接寻址模式可以通过8个辅助寄存器(AR0~AR7)同时访问两个数据存储单元,与单个AR间接访问数据空间一样,CPU使用一个扩展辅助寄存器产生23位地址。双AR间接寻址可以实现以下功能:(1)执行一个指令同时访问两个16位数据存储器地址。在这种情况下,两个数据存储操作数在指令中为Xmem和Ymem。例如:ADDXmem,Ymem,ACx(2)并行执行两条指令,每个指令都访问一个数据存储器地址。在这种情况下,操作数在指令中是Smem或Lmem。MOVSmem,dst||ANDSmem,src,dst

双AR间接寻址操作数是AR间接寻址操作数的子集,而ARMS状态位不影响双AR间接寻址的操作。232023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统2.双A第3章TMS320C55x的指令系统

双AR间接寻址操作数

在生成地址之后增加:16位操作,ARn=ARn+1在生成地址之后减少:16位操作,ARn=ARn

1在生成地址之后,ARn加上T0或AR0中16位带符号的常数:如果C54CM=0,ARn=ARn+T0序号操作数地址修改1*ARnARn未修改2*ARn+在生成地址之后增加:16位操作,ARn=ARn+132位操作,ARn=ARn+23*ARn

在生成地址之后减少:16位操作,ARn=ARn132位操作,ARn=ARn2

4*(ARn+T0/AR0)在生成地址之后,ARn加上T0或AR0中16位带符号的常数:如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0

242023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统双AR间接寻址操作第3章TMS320C55x的指令系统

双AR间接寻址操作数(续)在生成地址之后,ARn减去T0或AR0中16位带符号的常数:如果C54CM=0,ARn=ARn

T0在生成地址之后,ARn加上T1中16位带符号的常数:在生成地址之后,ARn减去T1中16位带符号的常数:序号操作数地址修改5*(ARn

T0/AR0)在生成地址之后,ARn减去T0或AR0中16位带符号的常数:如果C54CM=0,ARn=ARnT0如果C54CM=1,ARn=ARnAR0

6*ARn(T0/AR0)ARn未被修改。ARn被作为基指针,T0或AR0中16位带符号常数被作为偏移量7*(ARn+T1)在生成地址之后,ARn加上T1中16位带符号的常数:ARn=ARn+T1

8*(ARn

T1)在生成地址之后,ARn减去T1中16位带符号的常数:ARn=ARn-T1252023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统双AR间接寻址操作第3章TMS320C55x的指令系统3.CDP间接寻址模式

CDP间接寻址模式使用系数数据指针(CDP)对数据空间、寄存器位和I/O空间进行访问。

在生成地址之后增加:16位操作,CDP=CDP+1在生成地址之后减少:16位操作,CDP=CDP

1在地址生成之前,CDP加上16位带符号常数(K16):序号操作数地址修改1*CDPCDP未修改2*CDP+在生成地址之后增加:16位操作,CDP=CDP+132位操作,CDP=CDP+23*CDP

在生成地址之后减少:16位操作,CDP=CDP132位操作,CDP=CDP2

4*CDP(#K16)CDP未被修改。CDP被作为基指针,16位带符号常数(K16)被作为偏移量5*+CDP(#K16)在地址生成之前,CDP加上16位带符号常数(K16):CDP=CDP+K16

262023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统3.CD第3章TMS320C55x的指令系统4.系数间接寻址模式系数间接寻址模式的地址产生过程与使用CDP间接寻址数据空间的地址产生过程一样。CDP间接寻址模式支持以下算术指令:FIR滤波、乘法、乘加、乘减和双乘加或双乘减。在生成地址之后增加:16位操作,CDP=CDP+1在生成地址之后减少:16位操作,CDP=CDP

1在生成地址之后,CDP加上T0或AR0中16位带符号的常数:如果C54CM=0,CDP=CDP+T0序号操作数地址修改1*CDPCDP未修改2*CDP+在生成地址之后增加:16位操作,CDP=CDP+132位操作,CDP=CDP+23*CDP

在生成地址之后减少:16位操作,CDP=CDP132位操作,CDP=CDP24*(CDP+T0/AR0)在生成地址之后,CDP加上T0或AR0中16位带符号的常数:如果C54CM=0,CDP=CDP+T0如果C54CM=1,CDP=CDP+AR0272023/10/6TMS320C55xDSP原理及应用第3章TMS320C55x的指令系统4.系数上述3种寻址方式都可以用于对数据存储器的寻址。例3-1:*abs16(#k16)用于数据存储器寻址,设DPH=03h。MOV*abs16(#2002h),T2;#k16=2002,CPU从032002h处读取数据装入T2例3-2:*(#k23)用于数据存储器寻址。MOV*(#032002h),T2;k23=032002h,CPU从032002h处读取数据装入T23.1.4数据存储器的寻址例3-3:@Daddr用于数据存储器寻址,设DPH=03h,DP=0000h。MOV@0005h,T2;DPH:(DP+Doffset)=03:(0000h+0005h)=030005h;CPU从030005h处读取数据装入T2第3章TMS320C55x的指令系统282023/10/6TMS320C55xDSP原理及应用上述3种寻址方式都可以用于对数据存储器的寻址。3.1.4数例3-4:*SP(offset)用于数据存储器寻址,设SPH=0,SP=FF00h。MOV*SP(5),T2;SPH:(SP+offset)=00FF05h,CPU从00FF05h处读取数据;装入T2例3-5:*ARn用于数据存储器寻址,设ARn工作在线性寻址状态。MOV*AR4,T2;AR4H:AR4=XAR4,CPU从XAR4处读取数据装入T2.例3-6:*(ARn+T0)用于数据存储器寻址,设ARn工作在线性寻址状态。MOV*(AR4+T0),T2;AR4H:AR4=XAR4,CPU从XAR4处读取数据装入T2,然后;AR4=AR4+T0第3章TMS320C55x的指令系统3.1.4数据存储器的寻址292023/10/6TMS320C55xDSP原理及应用例3-4:*SP(offset)用于数据存储器寻址,设SP3.1.5存储器映射寄存器(MMR)的寻址例3-8:*abs16(#k16)用于MMR寻址,DPH必须为00h。MOV*abs16(#AR2),T2;DPH:k16=000012h(AR2的地址为000012h);CPU从000012h处读取数据装入T2。例3-9:*(#k23)用于MMR寻址。MOV*(#AR2),T2;k23=000012h(AR2的地址为000012h);CPU从000012h处读取数据装入T2。第3章TMS320C55x的指令系统302023/10/6TMS320C55xDSP原理及应用3.1.5存储器映射寄存器(MMR)的寻址第3章TMS3.1.6寄存器位的寻址直接和间接寻址方式可以用于对寄存器位的寻址。例3-10:@bitoffset用于对寄存器位的寻址。BSET@0,AC3;CPU将AC3的位0置为1例3-11:*ARn用于对寄存器位的寻址,设AR0=0。BSET*AR0,AC3;CPU将AC3的位0置为1第3章TMS320C55x的指令系统312023/10/6TMS320C55xDSP原理及应用3.1.6寄存器位的寻址第3章TMS320C55x的指3.1.7I/O空间的寻址绝对、直接和间接寻址方式可以用于对I/O空间的寻址。例3-12:*port(#k16)用于对I/O空间的寻址。(1)MOVport(#2),AR2;CPU从I/O地址0002h读取数据进AR2(2)MOVAR2,port(#0F000h);CPU把AR2的数据输出到I/O地址0F000h例3-13:*ARn用于对I/O空间的寻址,设AR4=FF80h,AR5=FFFFh。(1)MOVport(*AR4),T2;CPU从FF80h读取数据进T2。(2)MOVT2,port(*AR5);CPU把T2的数据输出到I/O地址0FFFFh。第3章TMS320C55x的指令系统322023/10/6TMS320C55xDSP原理及应用3.1.7I/O空间的寻址第3章TMS320C55x的汇编程序语法TMS320的汇编程序包含汇编指令(伪指令,assemblerdirectives)、汇编语言指令(assemblylanguageinstructions)、宏指令(macrodirectives)和注释(comments)。33汇编程序语法TMS320的汇编程序包含汇编指令(伪指令,asC55的指令既可以是助记符方式,也可以是代数式方式两种指令集在功能上是一一对应的,只是表示形式不同。

代数指令集中的指令类似于代数表达式,运算关系比较清楚;助记符指令集与计算机汇编语言相似,采用助记符来表示指令。注意:DSP的软件开发工具只支持单一的指令形式,不支持助记符指令和代数指令的混合形式。术语、符号和缩写见表3-6;P46运算符见表3-7;P4734C55的指令既可以是助记符方式,也可以是代数式方式两种指令集助记符方式汇编程序语法[label][:]mnemonic[operandlist][;comment][标号][:]

助记符[操作数][;注释]35助记符方式汇编程序语法35汇编程序语法所有的语句必须由语句标号、空格、*号或;号开头。语句标号不是必须的,如果用,就必须在第一列。语句中的各部分之间,由一个或多个空格分开。注释不是必须的。注释可以从第一列的*号或;号开头;如果不是从第一列开始,就必须用;号开头。36汇编程序语法所有的语句必须由语句标号、空格、*号或;号开头语句标号

由字母、数字、_、$组成,最多不超过32个字符,对大小写敏感,第一个字符不能是数字。后跟:,但分号不是语句标号的组成部分。37语句标号由字母、数字、_、$组成,最多不超过32个字助记符助记符不允许从第一列开始,否则被认为是语句标号。助记符可以是机器指令(如MAC,MPYM,SQA等)、伪指令(如.data,.list,.set等)、宏指令(如.macro,.var,.mexit等)和宏调用。38助记符助记符不允许从第一列开始,否则被认为是语句标号。助记符操作数操作数可以是常数、符号或表达式。当操作数多于一个时,用逗号分开。39操作数操作数可以是常数、符号或表达式。当操作数多于一个时,用常数二进制常数(如01B或01b)八进制常数(如10Q或10q)十进制常数(如23)十六进制常数(如78H或78h)字符常数(如‘A’或‘b’)字符串(如“sampleprogram”)汇编时使用的常数40常数二进制常数(如01B或01b)40表达式表达式是一个常数、符号、或用算术运算符连接起来的常数或符号。表达式的值的范围为-32768到3276741表达式表达式是一个常数、符号、或用算术运算符连接起来的常数或指令状态位和执行条件

一条指令的执行可能会受到某些状态位的影响,也可能会改变某些状态位的值,这些状态位都在状态寄存器。422023/10/6TMS320C55xDSP原理及应用指令状态位和执行条件422023/10/6TMS320C551.M40:40比特运算模式,用于控制D单元的运行模式,会影响累加器溢出,进位标志等。M40=0时,D单元按32位运算模式,因此累加器溢出、进位、符号扩展和移位操作都以第31比特为准。M40=1时,D单元按40位运算模式,因此累加器溢出、进位、符号扩展和移位操作都以第39比特为准。432023/10/6TMS320C55xDSP原理及应用1.M40:40比特运算模式,用于控制D单元的运行模式,会442023/10/6TMS320C55xDSP原理及应用442023/10/6TMS320C55xDSP原理及应用452023/10/6TMS320C55xDSP原理及应用452023/10/6TMS320C55xDSP原理及应用462023/10/6TMS320C55xDSP原理及应用462023/10/6TMS320C55xDSP原理及应用472023/10/6TMS320C55xDSP原理及应用472023/10/6TMS320C55xDSP原理及应用482023/10/6TMS320C55xDSP原理及应用482023/10/6TMS320C55xDSP原理及应用492023/10/6TMS320C55xDSP原理及应用492023/10/6TMS320C55xDSP原理及应用502023/10/6TMS320C55xDSP原理及应用502023/10/6TMS320C55xDSP原理及应用512023/10/6TMS320C55xDSP原理及应用512023/10/6TMS320C55xDSP原理及应用TMS320C55x汇编指令集按操作类型可分为以下6种:算术运算指令位操作指令扩展辅助寄存器操作指令逻辑运算指令移动指令程序控制指令

指令一条指令的属性包括:语法(Syntax)执行的操作操作数相关的状态位是否有并行使能位长度(Size)执行周期(Cycles)在流水线(Pipeline)上的执行阶段在哪个功能单元执行(Executed)是否可以重复执行等。52TMS320C55x汇编指令集按操作类型可分为以下6种:指令532023/10/6TMS320C55xDSP原理及应用532023/10/6TMS320C55xDSP原理及应用算术运算指令

加法指令

减法指令

乘法指令

乘加指令

乘减指令

双乘加/减指令

特殊操作指令54算术运算指令加法指令54加法指令助记符指令代数指令说明ADD[src,]dstdst=dst+src两个寄存器的内容相加ADDk4,dstdst=dst+k44位无符号立即数加到寄存器ADDK16,[src,]dstdst=src+K1616位有符号立即数和源寄存器的内容相加ADDSmem,[src,]dstdst=src+Smem

操作数和源寄存器的内容相加ADDACx<<Tx,ACyACy=ACy+(ACx<<Tx)累加器ACx根据Tx中的内容移位后,再和累加器ACy相加

ADDACx<<#SHIFTW,ACyACy=ACy+(ACx<<#SHIFTW)累加器ACx移位后与累加器ACy相加55加法指令助记符指令代数指令说明ADD[src加法指令(续)ADDK16<<#16,[ACx,]ACyACy=ACx+(K16<<#16)16位有符号立即数左移16位后加到累加器ADDK16<<#SHFT,[ACx,]ACyACy=ACx+(K16<<#SHFT)16位有符号立即数移位后加到累加器ADDSmem<<Tx,[ACx,]ACyACy=ACx+(Smem<<Tx)操作数根据Tx中的内容移位后,再和累加器ACx相加ADDSmem<<#16,[ACx,]ACyACy=ACx+(Smem<<#16)操作数左移16位后,再和累加器ACx相加ACyACy=ACx+uns(Smem)+CARRY操作数带进位加到累加器ADD[uns()Smem[]],[ACx,]ACyACy=ACx+uns(Smem)操作数加到累加器[ACx,]ACyACy=ACx+(uns(Smem)<<#SHIFTW)操作数移位后加到累加器ADDdbl(Lmem),[ACx,]ACyACy=ACx+dbl(Lmem)32位操作数加到累加器ADDXmem,Ymem,ACxACx=(Xmem<<#16)+(Ymem<<#16)两操作数均左移16位后加到累加器ADDK16,SmemSmem=Smem+K16操作数和16位有符号立即数相加ADD[R]V[ACx,]ACyACy=rnd(ACy+|ACx|)与绝对值相加56加法指令(续)ADDK16<<#16,[ACx,]ACyA减法指令助记符指令代数指令说明SUB[src,]dstdst=dst–src两个寄存器的内容相减SUBk4,dstdst=dst–k4寄存器的内容减去4位无符号立即数SUBK16,[src,]dstdst=dst–K16寄存器的内容减去16位有符号立即数SUBSmem,[src,]dstdst=dst–Smem寄存器的内容减去操作数SUBsrc,Smem,dstdst=Smem–src操作数减去源寄存器的内容SUBACx<<Tx,ACyACy=ACy–(ACx<<Tx)累加器ACx根据Tx中的内容移位后,作为减数和累加器ACy相减57减法指令助记符指令代数指令说明SUB[src,减法指令(续)SUBACx<<#SHIFTW,ACyACy=ACy–(ACx<<#SHIFTW)累加器ACx移位后,作为减数和累加器ACy相减SUBK16<<#16,[ACx,]ACyACy=ACx–(K16<<#16)16位有符号立即数左移16位后,作为减数和累加器ACx相减SUBK16<<#SHFT,[ACx,]ACyACy=ACx–(K16<<#SHFT)16位有符号立即数移位后,作为减数和累加器ACx相减SUBSmem<<Tx,[ACx,]ACyACy=ACx–(Smem<<Tx)操作数根据Tx中的内容移位后,作为减数和累加器ACx相减SUBSmem<<#16,[ACx,]ACyACy=ACx–(Smem<<#16)操作数左移16位后,作为减数和累加器ACx相减SUBACx,Smem<<#16,ACyACy=(Smem<<#16)–ACx操作数左移16位后,作为被减数和累加器ACx相减58减法指令(续)SUBACx<<#SHIFTW,ACySUB[uns(]Smem[)]<<#SHIFTW,[ACx,]ACyACy=ACx–(uns(Smem)<<#SHIFTW)从累加器中减去移位后的操作数SUBdbl(Lmem),[ACx,]ACyACy=ACx–dbl(Lmem)从累加器中减去32位操作数SUBACx,dbl(Lmem),ACyACy=dbl(Lmem)–Acx32位操作数减去累加器SUBXmem,Ymem,ACxACx=(Xmem<<#16)–(Ymem<<#16)两操作数均左移16位后相减减法指令(续)59SUB[uns(]Smem[)]<<#SHIFTW,条件加减法指令助记符指令代数指令说明ADDSUBCCSmem,ACx,TCx,ACyACy=adsc(Smem,ACx,TCx)IfTCx=1ACy=ACx+(Smem<<#16)elseACy=ACx-(Smem<<#16)ADDSUBCCSmem,ACx,TC1,TC2,ACyACy=adsc(Smem,ACx,TC1,TC2)IfTC2=1ACy=ACxIfTC2=0andTC1=1ACy=ACx+(Smem<<#16)IfTC2=0andTC1=0ACy=ACx–(Smem<<#16)

ADDSUBCCSmem,ACx,Tx,TC1,TC2,ACyACy=ads2c(Smem,ACx,Tx,TC1,TC2)IfTC2=1andTC1=1ACy=ACx+(Smem<<#16)IfTC2=0andTC1=1ACy=ACx+(Smem<<Tx)IfTC2=1andTC1=0ACy=ACx–(Smem<<#16)IfTC2=0andTC1=0ACy=ACx–(Smem<<Tx)

60条件加减法指令助记符指令代数指令说明ADDSU乘法指令助记符指令代数指令说明SQR[R][ACx,]ACyACy=rnd(ACx*ACx)计算累加器ACx高位部分(32~16位)的平方值,结果舍入后放入累加器ACyMPY[R][ACx,]ACyACy=rnd(ACy*ACx)计算累加器ACx和ACy高位部分(32~16位)的乘积,结果舍入后放入累加器ACyMPY[R]Tx,[ACx,]ACyACy=rnd(ACx*Tx)计算累加器ACx高位部分(32~16位)和Tx中内容的乘积,结果舍入后放入累加器ACyMPYK[R]K8,[ACx,]ACyACy=rnd(ACx*K8)计算累加器ACx高位部分(32~16位)和8位有符号立即数的乘积,结果舍入后放入累加器ACy61乘法指令助记符指令代数指令说明SQR[R][MPYK[R]K16,[ACx,]ACyACy=rnd(ACx*K16)计算累加器ACx高位部分(32~16位)和16位有符号立即数的乘积,结果舍入后放入累加器ACyMPYM[R][T3=]Smem,Cmem,ACxACx=rnd(Smem*coef(Cmem))[,T3=Smem]两个操作数相乘,结果舍入后放入累加器ACxSQRM[R][T3=]Smem,ACxACx=rnd(Smem*Smem)[,T3=Smem]操作数的平方,结果舍入后放入累加器ACxMPYM[R][T3=]Smem,[ACx,]ACyACy=rnd(Smem*ACx)[,T3=Smem]操作数和累加器ACx相乘,结果舍入后放入累加器ACyMPYMK[R][T3=]Smem,K8,ACxACx=rnd(Smem*K8)[,T3=Smem]操作数和8位有符号立即数相乘,结果舍入后放入累加器ACxMPYM[R][40][T3][uns(]Xmem[)],[uns()Ymem[]],ACxACx=M40(rnd(uns(Xmem)*uns(Ymem)))[,T3=Xmem]两数据存储器操作数相乘,结果舍入后放入累加器ACxMPYM[R][U][T3=]Smem,Tx,ACxACx=rnd(uns(Tx*Smem))[,T3=Smem]Tx的内容和操作数相乘,结果舍入后放入累加器ACx乘法指令(续)62MPYK[R]K16,[ACx,]ACyACy=乘加指令助记符指令代数指令说明SQA[R][ACx,]ACyACy=rnd(ACy+(ACx*ACx))累加器ACy和累加器ACx的乘方相加,结果舍入后放入累加器ACyMAC[R]ACx,Tx,ACy[,ACy]ACy=rnd(ACy+(ACx*Tx))累加器ACx和Tx的内容相乘后,再与累加器ACy相加,结果舍入后放入累加器ACyMAC[R]ACy,Tx,ACx,ACyACy=rnd((ACy*Tx)+ACx)累加器ACy和Tx的内容相乘后,再与累加器ACx相加,结果舍入后放入累加器ACyMACK[R]Tx,K8,[ACx,]ACyACy=rnd(ACx+(Tx*K8))Tx的内容和8位有符号立即数相乘后,再与累加器ACx相加,结果舍入后放入累加器ACy63乘加指令助记符指令代数指令说明SQA[R][乘加指令(续)MACMK[R][T3=]Smem,K8,[ACx,]ACySmem]操作数和8位有符号立即数相乘,再与累加器ACx相加,结果舍入后放入累加器ACyMACM[R][40][T3=][uns()Xmem[]],[uns()Ymem[]],[ACx,]ACy(Ymem))))[,T3=Xmem]两数据存储器操作数相乘,再与累加器ACx相加,结果舍入后放入累加器ACyMACM[R][40][T3=][uns()Xmem[]],[uns()Ymem[]],ACx>>#16[,ACy](Xmem)*uns(Ymem))))[,T3=Xmem]两数据存储器操作数相乘,再与累加器ACx右移16位后的值相加,结果舍入后放入累加器ACy64乘加指令(续)MACMK[R][T3=]Smem,K乘减指令助记符指令代数指令说明SQS[R][ACx,]ACyACy=rnd(ACy–(ACx*ACx))累加器ACy减去累加器ACx的平方,结果舍入后放入累加器ACyMAS[R]Tx,[ACx,]ACyACy=rnd(ACy–(ACx*Tx))累加器ACy减去累加器ACx和Tx内容的乘积,结果舍入后放入累加器ACyMASM[R][T3=]Smem,Cmem,ACxACx=rnd(ACx–(Smem*Cmem))[,T3=Smem]累加器ACx减去两个操作数的乘积,结果舍入后放入累加器ACxSQSM[R][T3=]Smem,[ACx,]ACyACy=rnd(ACx–(Smem*Smem))[,T3=Smem]累加器ACx减去一个操作数的平方,结果舍入后放入累加器ACyMASM[R][T3=]Smem,[ACx,]ACyACy=rnd(ACy–(Smem*ACx))[,T3=Smem]累加器ACy减去操作数和累加器ACx的乘积,结果舍入后放入累加器ACyMASM[R][T3=]Smem,Tx,[ACx,]ACyACy=rnd(ACx–(Tx*Smem))[,T3=Smem]累加器ACx减去Tx的内容和操作数的乘积,结果舍入后放入累加器ACyMASM[R][40][T3=][uns()Xmem[]],

[uns(]Ymem[)],[ACx,]ACyACy=M40(rnd(ACx–(uns(Xmem)*uns(Ymem))))[,T3=Xmem]累加器ACx减去两数据存储器操作数的乘积,结果舍入后放入累加器ACy65乘减指令助记符指令代数指令说明SQS[R][

双乘加/双乘减指令助记符指令代数指令说明MPY[R][40][uns(]Xmem[)],uns(]Cmem[)],ACx::MPY[R][40][uns(]Ymem[)],[uns()Cmem[]],ACy

ACx=M40(rnd(uns(Xmem)*uns(coef(Cmem)))),ACy=M40(rnd(uns(Ymem)*uns(coef(Cmem))))

在一个周期内同时完成下列算术运算:两个操作数相乘MAC[R][40][uns(]Xmem[)],[uns(]Cmem[)],ACx::MPY[R][40][uns(]Ymem[)],[uns()Cmem[]],ACyACx=M40(rnd(ACx+(uns(Xmem)*uns(coef(Cmem))))),ACy=M40(rnd(uns(Ymem)*uns(coef(Cmem)))))

在一个周期内同时完成下列算术运算:累加器ACx与两个操作数的乘积相加,结果舍入后放入累加器ACx;两个操作数相乘,结果舍入后放入累加器ACy66双乘加/双乘减指令助记符指令代数指令说明MMAS[R][40][uns(]Xmem[)],[uns(]Cmem[)],ACx::MPY[R][40][uns(]Ymem[)],[uns(]Cmem[)],ACyACx=M40(rnd(ACx–(uns(Xmem)*uns(coef(Cmem))))),ACy=M40(rnd(uns(Ymem)*uns(coef(Cmem))))

在一个指令周期内同时完成下列算术运算:累加器ACx减去两个操作数的乘积,结果舍入后放入累加器ACx;两个操作数相乘,结果舍入后放入累加器ACy

双乘加/双乘减指令(续)AMARXmem::MPY[R][40][uns(]Ymem[)],[uns()Cmem[]],ACxmar(Xmem),ACx=M40(rnd(uns(Ymem)*uns(coef(Cmem))))在一个指令周期内同时完成下列算术运算:修改操作数的值;两个操作数的乘法运算MAC[R][40][uns(]Xmem[)],[uns(]Cmem[)],ACx::MAC[R][40][uns(]Ymem[)],[uns(]Cmem[)],ACyACx=M40(rnd(ACx+(uns(Xmem)*uns(Cmem)))),ACy=M40(rnd(ACy+(uns(Ymem)*uns(Cmem))))在一个指令周期内同时完成下列算术运算:累加器和两个操作数的乘积相加MAS[R][40][uns(]Xmem[)],[uns(]Cmem[)],ACx::MAC[R][40][uns(]Ymem[)],[uns(]Cmem[)],ACyACx=M40(rnd(ACx–(uns(Xmem)*uns(Cmem)))),ACy=M40(rnd(ACy+(uns(Ymem)*uns(Cmem))))在一个指令周期内同时完成下列算术运算:累加器和两个操作数的乘积相减;累加器和两个操作数的乘积相加67MAS[R][40][uns(]Xmem[)],[uns隐含并行指令隐含并行指令完成的操作包括:加—存储、乘加/乘减—存储、加/减—存储、装载—存储和乘加/乘减—装载助记符指令代数指令说明MPYM[R][T3=]Xmem,Tx,ACy::MOVHI(ACx<<T2),YmemACy=rnd(Tx*Xmem)[,T3=Xmem],Ymem=HI(ACx<<T2)并行执行以下运算:Tx内容和操作数相乘,结果舍入后放入累加器ACy;累加器ACx左移后高16位赋值给YmemMACM[R][T3=]Xmem,Tx,ACy::MOVHI(ACx<<T2),YmemACy=rnd(ACy+(Tx*Xmem))[,T3=Xmem],Ymem=HI(ACx<<T2)并行执行以下运算:Tx内容和操作数相乘,再和累加器ACy相加,结果舍入后放入累加器ACy;累加器ACx左移后高16位赋值给Ymem68隐含并行指令隐含并行指令完成的操作包括:加—存储、乘加/乘减MASM[R][T3=]Xmem,Tx,ACy::MOVHI(ACx<<T2),YmemACy=rnd(ACy–(Tx*Xmem))[,T3=Xmem],Ymem=HI(ACx<<T2)并行执行以下运算:Tx内容和操作数相乘,再作为被减数和累加器ACy相减,结果舍入后放入累加器ACy;累加器ACx左移后高16位赋值给YmemADDXmem<<#16,ACx,ACy::MOVHI(ACy<<T2),YmemACy=ACx+(Xmem<<#16),Ymem=HI(ACy<<T2)并行执行以下运算:操作数左移16位,再和累加器ACx相加,结果放入累加器ACy;累加器ACy左移后高16位赋值给YmemSUBXmem<<#16,ACx,ACy::MOVHI(ACy<<T2),YmemACy=(Xmem<<#16)–ACx,Ymem=HI(ACy<<T2)并行执行以下运算:操作数左移16位,再减去累加器ACx,结果放入累加器ACy;累加器ACy左移后高16位赋值给YmemMOVXmem<<#16,ACy::MOVHI(ACx<<T2),YmemACy=Xmem<<#16,Ymem=HI(ACx<<T2)并行执行以下运算:操作数左移16位,结果放入累加器ACy;累加器ACx左移后高16位赋值给Ymem隐含并行指令(续)69MASM[R][T3=]Xmem,Tx,ACyAC隐含并行指令(续)MACM[R][T3=]Xmem,Tx,ACx::MOVYmem<<#16,ACyACx=rnd(ACx+(Tx*Xmem))[,T3=Xmem],ACy=Ymem<<#16并行执行以下运算:Tx内容和操作数相乘,再和累加器ACx相加,结果舍入后放入累加器ACx;操作数左移16位后,结果放入累加器AcyMASM[R][T3=]Xmem,Tx,ACx::MOVYmem<<#16,ACyACx=rnd(ACx–(Tx*Xmem))[,T3=Xmem],ACy=Ymem<<#16并行执行以下运算:Tx内容和操作数相乘,再作为被减数和累加器ACx相减,结果舍入后放入累加器ACx;操作数左移16位后,结果放入累加器ACy70隐含并行指令(续)MACM[R][T3=]Xmem,特殊操作指令比较和选择极值指令最大/最小值指令存储器比较指令寄存器比较指令带符号移位指令修改辅助寄存器(MAR)指令修改堆栈指针指令绝对距离指令绝对值指令FIR滤波指令最小均方(LMS)指令补码指令,归一化指令,饱和和舍入指令,平方差指令71特殊操作指令比较和选择极值指令71

温馨提示

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

最新文档

评论

0/150

提交评论