TMS320C54x的指令系统x.ppt

上传人:牧羊曲112 文档编号:6522016 上传时间:2023-11-08 格式:PPT 页数:100 大小:1.52MB
返回 下载 相关 举报
TMS320C54x的指令系统x.ppt_第1页
第1页 / 共100页
TMS320C54x的指令系统x.ppt_第2页
第2页 / 共100页
TMS320C54x的指令系统x.ppt_第3页
第3页 / 共100页
TMS320C54x的指令系统x.ppt_第4页
第4页 / 共100页
TMS320C54x的指令系统x.ppt_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《TMS320C54x的指令系统x.ppt》由会员分享,可在线阅读,更多相关《TMS320C54x的指令系统x.ppt(100页珍藏版)》请在三一办公上搜索。

1、第3章 TMS320C54x的指令系统,3.1 寻址方式 3.2 TMS320C54x的指令表示方法 3.3 TMS320C54x的指令系统,3.1 寻址方式,当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。,3.1 寻址方式,C54x有7种基本的数据寻址方式:,立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映像 寄存器寻址 堆栈寻址,:由指令提供一个操作数:由指令提供一个操作数地址:以累加器的内容为地址访问程序空间某单元:寻址地址为DP或SP的值加上指令提供的偏移量:利用辅助寄存器

2、访问存储器:用来改变映像寄存器,但不影响DP或SP的值:用来管理系统堆栈中的操作,3.1.1 立即寻址,指令中含有执行指令所需的操作数。操作数紧随操作码存放在程序存储器中。,例如:LD#F180H,A;将立即数F180H加载到A,立即数的数值形式:短立即数。3、5、8、9位,单字指令;长立即数。16位,双字指令。,特点:指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,并且数值不能改变。,用途:用于表示常数或对寄存器初始化。,注意:在立即寻址的指令中,应在数值或符号前面加一个“#”,表示是一个立即数,以区别于地址。,3.1.2 绝对寻址,指令中含有所要寻找的操作数的16位存储单元

3、地址。,16位地址表示形式:地址标号,如:TABLE;16位符号常量,如:89AB、1234。,例如:,MVKD TABLE,*AR1;将数据存储器TABLE为地址 的单元数据送入AR1寄存器 指定的数据存储单元中,LD*(DATA),A;将DATA指定的数据存储单元 中的数据送入累加器A中,特点:指令中包含一个固定的16位地址,能寻 址所有数据存储空间,但运行速度慢,需要较大的存储空间。,用途:用于对速度要求较低的场合。,3.1.2 绝对寻址,绝对寻址是利用16位地址来寻址操作数的存储单元。由于绝对地址代码的位数为16位,所以绝对地址寻址的指令至少应为2个字长。,绝对寻址有四种类型:数据存储

4、器地址寻址;程序存储器地址寻址;端口寻址;*(lk)寻址。,1.数据存储器地址寻址,用于确定操作数存于数据存储单元的地址。,例如,将数据存储器EXAM1地址单元中的数据复制到AR5寄存器所指向的数据存储单元中。MVKD EXAM1,*AR5,语法:使用一个程序标号或一个数字来指定数 据空间的一个地址。,数据存储器的16位地址,2.程序存储器地址寻址,用于确定程序存储器中的一个地址。,例如,将程序存储器TABLE地址单元中的内容复制到AR2寄存器所指向的数据存储单元中。MVPD TABLE,*AR2,语法:使用一个符号或具体的数字来指定程序 空间的一个地址。,程序存储器的16位地址,3.端口(P

5、A)寻址,用一个符号或一个数字来确定外部I/O端口的地址。,例如,把一个数从端口为FIFO的I/O口复制到AR5寄存器所指向的数据存储单元中。PORTR FIFO,*AR5,I/O端口地址,4.*(1k)寻址,使用一个符号或者一个常数来确定数据存储器中的一个地址。,例如,把地址为2000H的数据单元中的数据装到累加器A中。LD*(2000H),A,注意:*(1k)寻址的指令不能与循环指令(RPT,RPTZ)一起使用。,3.1.3 累加器寻址,将累加器的内容作为地址去访问程序存储单元,即将累加器中的内容作为地址,用来对存放数据的程序存储器寻址。,例如:READA Smem;将A中的数据作为地址寻

6、址程序 存储器中的数据,并将数据送 入Smem指定的数据存储单元。,WRITA Smem;将Smem指定的数据存储单元中的 数据,写入A所指定的程序存储 单元。,用途:用于完成程序存储空间与数据存储空间之间的数据传输。,注意:,大多数C54x用A的低16位作为程序存储器的地址,而C548和C549是以A的低23位作为程序存储器地址,C5402是以A的低20位作为程序存储器地址;,只能使用累加器A寻址程序空间。,累加器A用来寻址程序空间。Smem用来寻址数据空间。,3.1.4 直接寻址,利用数据指针DP和堆栈指针SP寻址。,16位数据存储器地址由基地址(数据 页指针DP或堆栈指针SP)和偏移地址

7、(dmad)共同构成。,第3章 TMS320C54x的指令系统,指令格式:,特点:指令中只含有数据存储器的低7位地 址(偏移地址dmad);,3.1.4 直接寻址,所要寻址的数据存储器16位地址是由基地址和偏移地址构成。,基地址:,数据页指针DP(9位);堆栈指针SP。,当CPL=0时,数据存储器16位地址由DP和偏移地址dmad构成;,当CPL=1时,数据存储器16位地址由SP加偏移地址dmad构成。,第3章 TMS320C54x的指令系统,地址形成过程:,当CPL=0时,,高9位,低7位,16位数据存储器地址,第3章 TMS320C54x的指令系统,地址形成过程:,当CPL=1时,,高9位

8、,低7位,16位数据存储器地址,SP+dmad,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,DP地址的范围是从0511(29-1),将存储器分成512页。,以DP为基准的直接寻址是由DP值确定是512页中的哪一页,由dmad确定是该页中的哪一个单元。,7位dmad范围是从0127,每页有128个可以访问的单元。,SP可以指向存储器中的任意一个地址。dmad可以指向当前页中具体的单元,从而允许访问存储器任意基地址中的连续的128个单元,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,直接寻址标识:变量前加,如x;在偏移量前加,如5。,利用直接寻址可以在不改变DP或

9、SP的情况下,随机寻址128个存储单元中的任何一个单元。,直接寻址的优点:每条指令只需要一个字。,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,例1:数据存储器存储数据如图所示,采用数据页指针DP直接寻址,完成x,y单元的两个数据求和。,RSBX CPL,LD#3,DP,LD x,A,ADD y,A,;CPL复位;立即数3赋给DP;x单元的数据送入A;完成x和y单元的数 据相加,LD#3,DP,LD#3,DP,LD x,A,LD x,A,01FF,1000,01FF,1000,ADD y,A,0180,0001,0180,0001,ADD y,A,第3章 TMS320C54x的

10、指令系统,3.1.4 直接寻址,例2:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中两个数x,y的和。,SSBX CPL,LD 1,A,ADD 2,A,;CPL置位;x单元的数据送入A;完成x和y单元的数 据相加,SP,x:,y:,SP,x:,y:,SSBX CPL,LD 1,A,x:,0200H,1=0201H,0100,00 0000 0100,0100,x:,ADD 2,A,2=0202H,y:,0050,0,00 0000,5,1,0,+,y:,0050,00 0000 0150,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,直接寻址特点:所寻址数据存储

11、器的16位地址是由DP或SP 与7位偏移地址dmad构成;可在单周期寻址128个单元;寻址速度快,能进行流水线并行操作。,用途:主要用于要求运算速度较快的场合。,注意:上述两种直接寻址方式是相互排斥的;采用DP寻址时,要注意数据所在的页面 指针。,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,是根据辅助寄存器(AR0-AR7)给出的16位地址进行寻址,8个辅助寄存器(AR0-AR7),由一 个辅助寄存器指针(ARP 3-bit)来指定,辅助寄存器算术单元(ARAU)作16-bit 无符号数运算,决定一个新的地址,装 入辅助寄存器中的一个,第3章 TMS320C54x的指令系统,

12、3.1.5 间接寻址,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,1.单操作数寻址,用来完成存储单元中16位单数据的读写操作。,在使用AR0-AR7寻址时,AR的内容相当灵活:,将该AR的内容加1或减1,再寻址(循环常用),将该AR的内容加上或减去AR0的内容,再寻址。,将该AR的内容加上或减去一个立即数,再寻址。,第3章 TMS320C54x的指令系统,ADD*AR1,8,A;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,ADD*AR1+,8,A,AR4;数据左移,加给AccA后,当前辅助寄存器加1,选择辅助寄存器AR4,ADD*AR1+0,8,A;执行

13、加法后,将AR0的内容加给当前辅助寄存器,ADD*AR1+,8,A;数据左移,加给AccA后,当前辅助寄存器加1,3.1.5 间接寻址,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,2.双操作数寻址,用于完成执行2次读操作或者1次读和1次的并行存储操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,两个数据存储器操作数由Xmem和Ymem表示。,Xmem:读操作数;,Ymem:,在两次读操作的指令中,表示一个读操作数;,在一次读和一次写的指令中,表示写操作数。,第3章 TMS320C54x的指令系统,2.双操作数寻址,用于完成执行2次读操作或者1次读和1次的并行存

14、储操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,第3章 TMS320C54x的指令系统,2.双操作数寻址,可用于双操作数间接寻址的辅助寄存器有4个,分别是:AR2、AR3、AR4、AR5,MPY*AR2,*AR3,A;将AR2和AR3所指地址里的数据相乘,乘积放入ACCA,第3章 TMS320C54x的指令系统,间接寻址特点:通过辅助寄存器和辅助寄存器指针来寻址数据空间存储单元,并自动实现增量、减量、变址寻址、循环寻址等。,用途:用于需要按固定步长寻址的场合。,3.1.5 间接寻址,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,是一种不考虑DP和

15、SP为何值,以0为基地址来访问MMR的寻址方式。主要用于修改存储器映像寄存器的内容。,1.采用直接寻址方式,2.采用间接寻址方式,高9位数据存储器地址置0,利用指令中的低7位地址直接访问MMR。,高9位数据存储器地址置0,按照当前辅助寄存器ARx的低7位地址访问MMR。,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,C54x共有8条指令可以进行MMR寻址。,LDM MMR,dst;将MMR加载到累加器 MVDM dmad,MMR;数据存储器向MMR传送数据 MVMD MMR,dmad;MMR向指定地址传送数据 MVMM MMRx,MMRy;MMRx向MMRy传送数据

16、 POPM MMR;将数据从栈顶弹至MMR PSHM MMR;将MMR数据压入堆栈 STLM src,MMR;累加器低位存入MMR STM#lk,MMR;长立即数lk存入MMR,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,MMR寻址特点:,寻址速度快,对MMR执行写操作开销小;可直接利用MMR的名称快速访问数据存储空间的0页资源;只能寻址数据空间的0页单元。,用途:主要用于不改变DP、SP的情况下,修改MMR中的内容。,第3章 TMS320C54x的指令系统,3.1.7 堆栈寻址,堆栈:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。,C54

17、x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。,堆栈寻址:利用SP指针,按照先进后出的原则进 行寻址。,当进栈操作时,SP先减小,然后数据进入堆栈;,当出栈操作时,数据先出栈,然后SP增加。,第3章 TMS320C54x的指令系统,3.1.7 堆栈寻址,进栈操作时,SP先减小,然后数据进入堆栈;,SPSP-1,使SP指向03FEH;,SP,03FEH,数据进栈,SP=03FEH。,13FF,SP,出栈操作时,数据先出栈,然后SP增加。,SP=03FEH,数据出栈;,SP,13FF,SPSP+1,使SP指向03FFH。,SP,第3章 TMS320C54x的指令系统,3.1

18、.7 堆栈寻址,采用堆栈寻址的指令:,PSHD Smem;将Smem中的数据压入堆栈 PSHM MMR;将MMR中的数据压入堆栈 POPD Smem;将数据从栈顶弹至Smem中 POPM MMR;将数据从栈顶弹至MMR中,第3章 TMS320C54x的指令系统,3.2 TMS320C54x的指令表示方法,C54x的助记符指令是由标号:、助记符、操作数列表、;注释四部分组成。,例如:begin:LD#0FFh,A;将立即数0FF传送至A,助记符,源操作数,目的操作数,注释,第3章 TMS320C54x的指令系统,标号,3.2.1 汇编程序语句格式,3.2.1 混编程序语句格式,1.标号域,第3章

19、 TMS320C54x的指令系统,对所有C54x的汇编语言指令和大多数的汇编伪指令,标号域为可选项。但是伪指令.set和.equ在使用时必须有标号。,标号必须从源语句的第一列开始书写,一个标号最多允许有32个字符;标号可由下列字符组成:AZ、az、09、_和$,但是标号的第一个字符不能是数字,并且标号区分大小写。,标号后的:为可选项,当不使用标号时,源语句的第一列只能是空格、分号或星号,3.2.1 混编程序语句格式,1.标号域,第3章 TMS320C54x的指令系统,标号值等于它所指向的语句所在的单元地址,START:.word 0AH,3,7;把0AH、3、7三个数存放到当前段的 连续 的单

20、元中,在这条指令中,START的值就等于存放0AH的单元地址值,MVPD START,*AR2,;将程序存储器START地址单元中的内容复制到AR2 寄存器所指向的数据存储单元中。,第3章 TMS320C54x的指令系统,3.2.1 混编程序语句格式,2.指令域,在标号域后面是指令域。如果没有标号域,指令域只能从第一列以后开始书写,如果从第一列开始书写指令,则汇编器会误认为为标号。,指令域可以包括下列指令码之一:汇编语言指令、汇编伪指令、宏指令,第3章 TMS320C54x的指令系统,3.2.1 混编程序语句格式,3.操作数域,操作数域中包含的是源操作数和目的操作数,操作数可以是常量、符号,或

21、者是常量和符号的混合表达式。,根据寻址方式的不同,操作数可以是立即数、地址或间接地址,可以在操作数前加上前缀符号来进行区分。,#:表示其后的操作数是立即数。,*:表示其后的操作数是间接地址。,:表示其后的操作数是采用直接寻址。,注:助记符指令格式中,在使用直接寻址方式时可以省略。,第3章 TMS320C54x的指令系统,3.2.1 混编程序语句格式,4.注释域,注释域可以从任意列开始书写,但是必须以;开头。如果注释从第一列开始书写也可以用*开头。,小结:,(1)语句的开头只能是标号、空格、星号或分号。,(2)标号域是可选的,如果使用只能从第一列开始。,(3)每个域之间必须有空格分开。,(4)注

22、释域是可选项,如果从第一列开始必须用;或*开头,从其他列开始只能用;开头。,(5)源语句的字符数每行不能超过200个。,第3章 TMS320C54x的指令系统,3.2.2 汇编语言常量,C54x汇编器支持7种类型的常量:二进制、八进制、十进制、十六进制、字符常量、汇编时间常量和浮点数常量。,1.二进制整数常量,可以由最多16个二进制数字组成,后缀为B或b。如果少于16位,汇编器会把数字右对齐并在左边补0。,2.八进制整数常量,最多由6个八进制数字组成,后缀为Q或q。,3.十进制整数常量,由十进制数字串组成,范围从32768 32767,或从0 65535。,4.十六进制整数常量,最多由4个十六

23、进制数字组成,后缀为H或h,也可以用前缀0 x表示,第3章 TMS320C54x的指令系统,3.2.2 汇编语言常量,5.字符常量,字符常量是由单引号括住的一个或两个字符组成,在汇编器内部会用字符对应的ASC码进行表示。如果单引号中间为空,则表示为0。,6.汇编时间常量,用.set伪指令给一个符号赋值,则这个符号等效一个常量。,shift.set 3LD#shift,A;伪指令给一个符号赋值,则这个符号等效一个常 量。,7.浮点数常量,浮点数常量可用来表示小数,通常由一串十进制数字、小数点、小数部分、指数部分组成。,第3章 TMS320C54x的指令系统,3.2.3 字符串,字符串是由双引号括

24、起来的一串字符,主要为伪指令所用。,3.2.4 符号,符号可用于标号、常量和替代其他字符,一个符号名最多可以有32位字符组成(AZ、az、09、_和$),第一位不能是数字,并且字符之间不能有空格。符号对大小写敏感。,用作标号的符号在使用前必须被定义,该标号代表程序中对应位值的地址。,3.3 TMS320C54x的指令系统,C54x的指令系统共有129条基本指令,由于操作数的寻址方式不同,由它们可以派生多至205条指令。,按指令的功能可分成五大类:,数据传送指令 算术运算指令 逻辑运算指令,程序控制指令 重复操作指令,第3章 TMS320C54x的指令系统,练习:阅读下列程序段,添加注释,了解程

25、序功能,第3章 TMS320C54x的指令系统,.bss x,5.bss y,1.def start table:.word 10,20,3,4,5start:STM#x,AR1 RPT#4 MVPD table,*AR1+LD#0,A CALL SUMend:B endSUM:STM#x,AR3 STM#4,AR2 loop:ADD*AR3+,A BANZ loop,*AR2-STL A,*(y)RET.end,3.3.1 数据传送指令,是从存储器中将源操作数传送到目的操作数所指定的存储器中。,包括:,装载指令,存储指令,条件存储指令,混合装载和存储指令,第3章 TMS320C54x的指令系

26、统,1.装载指令,即取数或赋值指令,用于将存储器内容或立即数赋给目的寄存器。,格式:,操作码 源操作数,移位数,目的操作数,功能:源操作数按移位数进行移位,将移位结果送入 目的操作数指定的寄存器。,DLDLDLDMLDRLDULTD,Lmem SARAM中的32位数据Smem SARAM中的16位数据Xmem DARAM中的16位数据#K 小于9位的短立即数#lK 16位长立即数#k9 9位立即数#k5 5位立即数#k3 3位立即数src 源累加器A或BMMR 存储器映像寄存器,-16SHIFT31,dst 累加器A或B,T 暂存器,DP RAM页指针,ARP 辅助寄存器 指针,第3章 TMS

27、320C54x的指令系统,1.装载指令,(1)DLD Lmem,dst,功能:,dst=Lmem 将Lmem所指定的单数据存 储器中的32位数据送入累加器A或B中。,(2)LD Smem,dst,dst=Smem 将Smem所指定的单数据存 储器中的16位数据送入累加器A或B中。,功能:,第3章 TMS320C54x的指令系统,(3)LD Smem,16,dst,功能:,dst=Smem16 将Smem所指定的单数据存 储器的数据左移16位后送入A或B。,1.装载指令,第3章 TMS320C54x的指令系统,(4)LD Smem,TS,dst,dst=SmemTS 将Smem所指定的单数据 存

28、储器中的数据,按T暂存器提供的数(-16TS31)移位,然后送入A或B。,功能:,(5)LD src,ASM,dst,功能:,dst=srcASM 将源累加器src中的数 据,按ASM(-16SAM15)所给定的移位 数移位后,送入目的累加器dst。,(6)LD Smem,T,T=Smem 将Smem所指定的单数据器的 数据送入暂存器T。,功能:,1.装载指令,(9)LDM MMR,dst,功能:,dst=MMR 将MMR寄存器中的数据,送 入累加器dst。,第3章 TMS320C54x的指令系统,(7)LDR Smem,dst,功能:,dst(31-16)=rnd(Smem)将Smem所指定

29、的 单数据存储器的数据低位补0后送入累加 器。,(8)LDU Smem,dst,功能:,dst=uns(Smem)将Smem所指定的单数 据存储器的无符号数据,送入累加器。,2.存储指令,是将源操作数或立即数存入指定存储器或寄存器。,格式:,操作码 源操作数,移位数,目的操作数,功能:源操作数按移位数进行移位,将移位结果存入 目的存储器或寄存器。,DSTSTSTHSTLSTLMSTM,src 源累加器A或BT 暂存器TRN 状态寄存器#lK 16位长立即数,-16SHIFT15,Smem 16位单数据存储器操作数,Xmem 16位双数据存储器操作数,MMR 存储器映像寄存器,第3章 TMS32

30、0C54x的指令系统,2.存储指令,第3章 TMS320C54x的指令系统,(1)DST src,Lmem,功能:,把累加器A或B中的内容存入数据存储器 Lmem中(32位的长字存储单元)。,(2)ST T,Smem,功能:,把T暂存器里的内容存放到数据存储器 Smem中(16位)。,2.存储指令,第3章 TMS320C54x的指令系统,(5)STH src,Asm,Smem,功能:,(3)STH src,Smem,功能:,把累加器A或B中高16位的内容存入数据 存储器 Smem中。,功能:,(4)STL src,Smem,把累加器A或B中低16位的内容存入数据 存储器 Smem中。,把累加器

31、A或B中高16位的内容按Asm指 定的数字移位后,存入数据 存储器 Smem 中。,2.存储指令,第3章 TMS320C54x的指令系统,(6)STM#LK,MMR,功能:,把一个16位的立即数存入存储器映像寄存 器MMR中。,(7)STLM Src,MMR,功能:,把累加器A或B中的低16位存入存储器映 像寄存器MMR中。,3.条件存储指令,根据条件将源操作数存入目的存储器,共计4条指令。,(1)CMPS src,Smem,功能:,若src(3116)src(150),则Smem=src(3116);若src(3116)src(150),则Smem=src(150)。即比较累加器的高、低位,

32、并存储最大值。,(2)SACCD src,Xmem,cond,若满足cond条件,则累加器值按ASM-16的差值 移位,并存入Xmem中。,功能:,第3章 TMS320C54x的指令系统,3.条件存储指令,(3)SRCCD Xmem,cond,功能:,若满足cond条件,则将块重复计数器BRC的内 容存入Xmem中。,(4)STRCD Xmem,cond,若满足cond条件,则将T寄存器中的内容存入 Xmem中。,功能:,第3章 TMS320C54x的指令系统,4.混合装载和存储指令,用于完成数据存储器、程序存储器以及I/O口之间的数据传输,共计12条。,(1)MVDD Xmem,Ymem,功

33、能:,Ymem=Xmem 将数据存储器Xmem中的数据传送 到数据存储器Ymem中。,(2)MVDK Smem,dmad,dmad=Smem 将数据存储器Smem中的数据传送 到以dmad为地址的数据存储器中。,功能:,第3章 TMS320C54x的指令系统,(3)MVKD dmad,Smem,功能:,Smem=dmad 将以dmad为地址的数据存储器中 的数据传送到数据存储器Smem中。,4.混合装载和存储指令,(4)MVDP Smem,pmad,功能:,pmad=Smem 将数据存储器Smem中的数据传送 到以pmad为地址的程序存储器中。,第3章 TMS320C54x的指令系统,(5)M

34、VPD pmad,Smem,功能:,Smem=pmad 将以pmad为地址的程序存储器中的数据传送到数据存储器Smem中。,(6)MVDM dmad,MMR,功能:MMR=dmad 将以dmad为地址的数据存储器中的 数据传送到MMR中。,4.混合装载和存储指令,(8)MVMM MMRx,MMRy,功能:,MMRy=MMRx 将映像寄存器MMRx中的数据传送到MMRy中。,(9)PORTR PA,Smem,功能:,Smem=PA 将以PA为地址的I/O口中的数据传送到数据存储器Smem中。,第3章 TMS320C54x的指令系统,(7)MVMD MMR,dmad,功能:,dmad=MMR 将M

35、MR中的数据传送到以dmad为地 址的数据存储器中。,4.混合装载和存储指令,(10)PORTW Smem,PA,功能:,PA=Smem 将数据存储器Smem中的数据传送到以PA为地址的I/O口中。,(11)READA Smem,功能:,Smem=Pmem(A)将以累加器A为地址的程序存储器中的数据传送到数据存储器Smem中。,(12)WRITA Smem,功能:,Pmem(A)=Smem 将数据存储器Smem中的数据传送到以累加器A为地址的程序存储器中。,第3章 TMS320C54x的指令系统,3.3.2 算术运算指令,算术运算指令是实现数学计算的重要指令集合。C54x的算术指令具有运算功能

36、强、指令丰富等特点。,包括:,加法指令(ADD)减法指令(SUB)乘法指令(MPY)乘法-累加/减指令(MAC/MAS)双字运算指令特殊用途指令,第3章 TMS320C54x的指令系统,3.3.2 算术运算指令,(1)加法指令,C54x的加法指令共有13条,可完成两个操作数的加法运算、移位后的加法运算、带进位的加法运算和不带符号位扩展的加法运算。,ADD、ADDC、ADDM、ADDS,指令格式:操作码 源操作数,移位数,目的操作数,Smem、Xmem、Ymem、#lk、src,T、16、ASM,dst、Smem,第3章 TMS320C54x的指令系统,3.3.2 算术运算指令,(2)减法指令,

37、C54x的减法指令共有13条,可完成两个操作数的减法运算、移位后的减法运算、带借位的减法运算、条件减法运算和不带符号位扩展的减法运算。,SUBSUBBSUBCSUBS,指令格式:操作码 源操作数,移位数,目的操作数,SmemXmemYmem#lksrc,TS16ASM,dst,第3章 TMS320C54x的指令系统,(3)乘法指令,C54x的指令系统提供了10条乘法运算指令,其运算结果都是32位的,存放在累加器A和B中。而参与运算的乘数可以是T寄存器、立即数、存储单元和累加器A或B的高16位。,格式:操作码 源操作数1,源操作数2,目的操作数,MPY、MPYR、MPYA、MPYU、SQUR,S

38、mem、Xmem、#lk,Ymem、#lk,dst,第3章 TMS320C54x的指令系统,(3)乘法指令,MPY,SmemXmem#lk,MPY Smem,dstMPY Smem,#lk,dst,操作码 源操作数 指令格式,MPY Xmem,Ymem,dst,MPY#lk,dst,MPYA,MPYA dst,MPYA Smem,第3章 TMS320C54x的指令系统,(3)乘法指令,MPYR,操作码 源操作数 目的操作数 指令格式,Smem,MPYR Smem,dst,MPYU,Smem,MPYU Smem,dst,SQUR,Smem,SQUR Smem,dst,dst,dst,dst,A,

39、dst,SQUR A,dst,第3章 TMS320C54x的指令系统,(4)乘法-累加和乘法-减法指令,这类指令共计22条,除了完成乘法运算外,还具有加法或减法运算。因此,在一些复杂的算法中,可以大大提高运算速度。参与运算的乘数可以是T寄存器、立即数、存储单元和累加器A或B的高16位。乘法运算结束后,再将乘积与目的操作数进行加法或减法运算。,第3章 TMS320C54x的指令系统,(4)乘法-累加和乘法-减法指令,格式:操作码 源操作数1,源操作数2,目的操作数,MAC、MACR、MACA、MACAR、MACP、MACSU、MAS、MASR、MASA,Smem、Xmem、#lk、T,Ymem、

40、#lk、pmad,dst,第3章 TMS320C54x的指令系统,(4)乘法-累加和乘法-减法指令,MAC,SmemXmem#lk,MAC Smem,srcMAC Smem,#lk,src,dst,操作码 源操作数 指令格式,MAC Xmem,Ymem,src,dst,MAC#lk,src,dst,MACR,MACR Smem,src,MACR Xmem,Ymem,src,dst,SmemXmem,第3章 TMS320C54x的指令系统,(4)乘法-累加和乘法-减法指令,操作码 源操作数1 源操作数2 指令格式,MACA,MACA Smem,B,MACA T,src,dst,Smem T,MA

41、CAR,MACAR Smem,B,MACAR T,src,dst,Smem T,MACD:,MACD Smem,pmad,src,MACSU:,MACSU Xmem,Ymem,src,第3章 TMS320C54x的指令系统,MACP:,MACP Smem,pmad,src,(4)乘法-累加和乘法-减法指令,操作码 源操作数 指令格式,MAS,MAS Smem,src,MAS Xmem,Ymem,src,dst,SmemXmem,MASR,MASR Smem,src,MASR Xmem,Ymem,src,dst,SmemXmem,第3章 TMS320C54x的指令系统,MASA,MASA Sme

42、m,B,MASA T,src,dst,Smem T,3.3.3 逻辑运算指令,C54x的指令系统具有丰富的逻辑运算指令。,包括:,与运算指令(AND)或运算指令(OR)异或运算指令(XOR)移位操作指令(SHIFT)测试操作指令(TEST),第3章 TMS320C54x的指令系统,3.3.3 逻辑运算指令,(1)与运算指令,AND、ANDM,指令格式:操作码 源操作数,移位数,目的操作数,Smem、#lk、src,dst、Smem,第3章 TMS320C54x的指令系统,(1)与运算指令,第3章 TMS320C54x的指令系统,3.3.3 逻辑运算指令,(2)或运算指令,指令格式:操作码 源操

43、作数,移位数,目的操作数,Smem,SHFT,src,OR,#lk,src,dst,OR,SHIFT,src,dst,OR,#lk,Smem,ORM,第3章 TMS320C54x的指令系统,3.3.3 逻辑运算指令,(3)异或运算指令,指令格式:操作码 源操作数,移位数,目的操作数,第3章 TMS320C54x的指令系统,3.3.3 逻辑运算指令,(4)移位操作指令,指令格式:操作码 源操作数,移位数,目的操作数,C54x共有6条移位指令,可实现带进位位循环移位、带TC位循环左移、算术移位、条件移位和逻辑移位等操作。,ROL、ROLTC、ROR、SFTA、SFTC、SFTL,src,SHIFT

44、,dst,第3章 TMS320C54x的指令系统,(4)移位操作指令,带进位位循环左移,操作数src:累加器A或B,指令功能:累加器src与进位位C循环左移一位。,执行过程:C src(0)src(300)src(311)src(31)C 0 src(3932),指令格式:ROL src,;C的值移入src的最低位,;src左移一位,;src的最高位移入C,;src的保护位清0,第3章 TMS320C54x的指令系统,(4)移位操作指令,带测试位循环左移,操作数src:累加器A或B,指令功能:累加器src与测试位TC循环左移一位。,执行过程:,指令格式:ROLTC src,TC的值移入src的

45、最低位,累加器src左移一位,src的最高位移入TC,src的保护位清0,0,第3章 TMS320C54x的指令系统,(4)移位操作指令,带进位位循环右移,操作数src:累加器A或B,指令功能:累加器src与进位位C循环右移一位。,执行过程:,指令格式:ROR src,C的值移入src的31位 累加器src右移一位 src的最低位移入C src的保护位清0,0,第3章 TMS320C54x的指令系统,算术移位,操作数src:累加器A或B,指令功能:根据SHIFT,src的内容算术移位。,指令格式:SFTA src,SHIFT,dst,第3章 TMS320C54x的指令系统,算术移位,执行过程:

46、,当SHIFT 0时,进行算术右移 1)src的第(-SHIET-1)位复制到进位位C;2)40位src右移SHIFT位,结果存入src或dst;3)符号扩展处理 若SXM=1,进行符号位扩展。src(39)写入dst(39(39+SHIFT+1)若SXM=0,不进行符号位扩展。0写入dst(39(39+SHIFT+1),第3章 TMS320C54x的指令系统,算术移位,执行过程:,当SHIFT 0时,进行算术左移 1)src的第(39-SHIET)位复制到进位位C;2)40位src左移SHIFT位,结果存入src或dst;3)将0置入dst的低SHIFT的各位 0写入dst(SHIFT-1)

47、0),第3章 TMS320C54x的指令系统,(4)移位操作指令,条件移位,操作数src:累加器A或B,指令功能:,指令格式:SFTC src,If src=0 Then 1 TC Else If src(31)=src(30)Then src1 src 0 TC Else 1 TC,第3章 TMS320C54x的指令系统,条件移位,执行过程:当src=0时,将1写入测试位TC;当src0时,进行条件移位。若src有两个有效符号位,则移位。32位src左移一位;保护位src(3932)不变;0写入测试位TC。若src只有一个符号位,则不移位。1写入测试位TC。,第3章 TMS320C54x的指

48、令系统,逻辑移位,执行过程:若SHIFT 0,则进行逻辑左移。src的第(31-(SHIFT-1)位复制到进位位C;src(31-SHIFT)0)左移SHIFT位存入dst;0写入dst的低SHIFT位,即0dst(SHIFT-1)0);0写入dst的高8位,即0dst(3932)。,第3章 TMS320C54x的指令系统,SFTL src,SHIFT,dst,(4)移位操作指令,3.3.3 逻辑运算指令,(5)测试操作指令,C54x共有5条测试操作指令。,BIT,指令格式:BIT Xmem,BITC,指令功能:(Xmem(15-BITC)TC功能说明:将Xmem的指定位复制到TC位。,操 作

49、 数:Xmem双数据存储操作数 BITC测试位的位代码,取值:015,第3章 TMS320C54x的指令系统,(5)测试操作指令,BITF,指令格式:BITF Smem,#lk,指令功能:If(Smem)AND lk)=0 Then 0 TC Else 1 TC功能说明:测试Smem中由lk指定的某些位。若指定的测试位为0,TC=0,否则,TC=1。,操 作 数:Smem单数据存储操作数#lk16位长立即数,取值:0 65 535,第3章 TMS320C54x的指令系统,(5)测试操作指令,BITT,指令格式:BITT Smem,指令功能:(Smem(15-T(30)TC功能说明:将Smem的

50、指定位复制到TC中。T寄存器的低4位T(30)用于确定测试位 的位代码。,操 作 数:Smem单数据存储操作数,第3章 TMS320C54x的指令系统,(5)测试操作指令,CMPM,指令格式:CMPM Smem,#lk,操 作 数:Smem单数据存储操作数#lk长立即数,取值:-32 768 32 768,指令功能:If(Smem)=lk Then 1 TC Else 0 TC功能说明:比较Smem中的操作数与常量lk是否相等。若(Smem)=1k,则TC=1,否则,TC=0。,第3章 TMS320C54x的指令系统,(5)测试操作指令,CMPR,指令格式:CMPR CC,ARx,操 作 数:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号