您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > DSP器件及其应用-DSP的指令系统
TMS320C54x的指令系统IntroductionTMS320C54x的寻址方式TMS320C54x指令的表示方法TMS320C54x的指令系统一、寻址方式当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法——寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。TMS320C54x的寻址方式立即寻址:指令中有一个固定的立即数;绝对地址寻址:指令中有一个固定的地址(16位);累加器寻址:按累加器的内容作为地址去访问程序存储器中的一个单元;直接寻址:指令编码中含有的7位地址与DP或SP一起合成数据存储器中操作数的实际地址;间接寻址:通过辅助寄存器寻址;存储器映射寄存器寻址:修改存储器映射寄存器中的值,而不影响当前数据页面指针DP和当前堆栈指针SP的值;堆栈寻址:把数据压入或弹出系统堆栈。寻址方式寻址方式用途举例指令含义立即寻址主要用于初始化LD#10,A立即数10A绝对寻址利用16位地址寻址存储单元STLA,*(y)将AL内容存入y所在的存储单元累加器寻址将累加器中的内容作为地址READAx将A的内容作为地址读程序存储器,并存入x存储单元直接寻址利用数据页指针和堆栈指针寻址LD@x,A(DP+x的低7位地址)A间接寻址利用辅助寄存器作为地址指针LD*AR1,A((AR1))A存储器映像寄存器寻址快速寻址存储器映象寄存器LDMST1,B(ST1)B堆栈寻址压入/弹出数据存储器和存储器映像寄存器MMRPSHMAG(SP)-1SP,(AG)(SP)符号含义Smem16位单寻址操作数Xmem16位的双寻址操作数,从DB总线读出Ymem16位的双寻址操作数,从CB总线读出dmad16位立即数,数据存储器的地址pmad16位立即数,程序存储器的地址PA16位立即数,I/O的地址src源累加器dst目的累加器lk16位的长立即数寻址指令中用到的缩写符号及其含义立即寻址短立即数寻址(单字指令)在指令字中包括立即操作数RPT#99;将下一条指令循环100次LD#0h,DP;将0装入数据页指针ADD#0ffh,A;将0ffh加给AccA立即寻址长立即数寻址指令字的后一个字是立即数(双字指令)ADD#1234h,A;将#1234h加给AccA绝对地址寻址数据存储器地址(dmad)寻址:用一个符号或一个数来确定数据空间中的一个地址例:MVKDsample,*AR5;sample所代表的就是一个dmadMVKD1000h,*AR5;将数据存储器1000h单元的数据传送到由AR5所指的存储单元中。1000h代表的是一个dmad绝对地址寻址程序存储器地址(pmad)寻址:用一个符号或一个数来确定程序地址空间中的一个地址例:MVPDtable,*AR5table所代表的就是一个pmad绝对地址寻址端口地址(PA)寻址用一个符号或常数来确定I/O口地址PORTRPA,Smem;从PA单元端口读入一个数据,传送到Smem所指的数据单元中去PORTWSmem,PA;从Smem所指的数据单元取出一个数据,传送到PA单元端口PORTRFIFO,*AR5;把一个数从端口为FIFO的I/O口传送到AR5所指向的数据单元绝对地址寻址*(lk)寻址用一个符号或一个表示16位地址的长立即数来确定数据存储器中的一个地址例:LD*(BUFFER),A;把地址为BUFFER的数据单元中的数据装到AccA中LDSmem,dst试比较:LD#1000H,A;#1000H-A双字,立即LD*(1000H),A;(1000H)-A双字,绝对累加器寻址用累加器中的数作为一个地址,可用来对存放数据的程序存储器寻址:READASmemWRITASmemREADA,把累加器A所确定的程序存储器单元中的一个字,传送到数据存储器单元Smem中。WRITA,把数据单元Smem中的一个字,传送到累加器A确定的程序存储器单元。直接寻址TMS320C54的数据存储器分为512页,每页128字。设置一个数据页指针DP(DataPointer),用9-bit指向一个数据页,再加上一个7-bit的页内偏移地址,形成16-bit的数据地址LD#4,DP;指向页4(0200h-027Fh)ADD9h,A;将数据页4中地址9h的数据加给AccA直接寻址间接寻址8个辅助寄存器(AR0--AR7),由一个辅助寄存器指针(ARP3-bit)来指定辅助寄存器算术单元(ARAU)作16-bit无符号数运算,决定一个新的地址,装入辅助寄存器中的一个间接寻址间接寻址AR0--AR7的内容相当灵活,可以装入立即数,加上立即数,减去立即数;例如:STM#0060h,AR1;AR1=0060H也可以从数据存储器装入地址;还可以作以下的变址寻址:间接寻址将该AR的内容加1或减1,再寻址(循环常用)将该AR的内容加上或减去AR0的内容,再寻址。间接寻址ADD*AR2,8,A;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccAADD*AR2+,8,A,AR4;数据左移加给AccA后,当前辅助寄存器加1,选择辅助寄存器AR4ADD*AR2+0,8,A;执行加法后,将AR0的值加给当前辅助寄存器ADD*AR2+,8,A;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,当前辅助寄存器加1.存储器映射寄存器(MMR)寻址存储器映射寄存器寻址用来修改存储器映射寄存器。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用。STM#8888h,T;存储器映射寄存器寻址。T暂存器。LDMMMR,dst;将MMR加载到累加器MVDMdmad,MMR;数据存储器向MMR传送数据MVMDMMR,dmad;MMR向指定地址传送数据MVMMMMRx,MMRy;MMRx向MMRy传送数据POPMMMR;将数据从栈顶弹至MMRPSHMMMR;将MMR数据压入堆栈STLMsrc,MMR;累加器低位存入MMRSTM#lk,MMR;长立即数lk存入MMRC54x共有8条指令可以进行MMR寻址。存储器映射寄存器(MMR)寻址堆栈寻址系统堆栈用来在中断和子程序期间自动存放程序计数器。它也能用来存放额外的数据项或传递数据值。处理器使用一个16-bit的存储器映射寄存器—堆栈指针(SP)来对堆栈寻址,它总是指向存放在堆栈中的最后一个元素。在压入堆栈操作时,SP先减1,然后将数据压入堆栈;在弹出堆栈操作时,数据从堆栈中弹出后,SP再加1.PUSH;把一个数据存储器数据压入堆栈POP;从堆栈中弹出一个数据至数据存储器单元堆栈寻址’C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。堆栈寻址:利用SP指针,按照先进后出的原则进行寻址。当进栈操作时,SP先减1,然后数据进入堆栈;当出栈操作时,数据先出栈,然后SP加1。0001001000110100010101100001001000110100010101100011sp操作前的堆栈和SP0010sp操作后的堆栈和SPX1X1X2图、堆栈操作对堆栈指针的影响堆栈寻址采用堆栈寻址的指令:PSHDSmem;将Smem中的数据压入堆栈PSHMMMR;将MMR中的数据压入堆栈POPDSmem;将数据从栈顶弹至Smem中POPMMMR;将数据从栈顶弹至MMR中7种寻址方式不同的用途(1)立即寻址运行速度慢,但需要较多的程序存储空间,而且数值不能改变,主要用于表示常数和初始化。(2)绝对寻址可以访问任何的数据空间,但速度慢,要求较多的存储空间,用于对速度没有苛求的场合。(3)累加器寻址主要是在程序空间和数据空间传送数据。(4)间接寻址类似于高级语言中的指针,较为灵活,主要是针对数字信号处理的算法而设计的。(5)直接寻址中寻址速度较快,用于时间要求较高的场合。(6)MMR是基地址为零(不考虑SP、DP、CPL)的直接寻址方式,寻址速度较快,可以直接快速访问数据存储器的0页资源。二、TMS320C54x的指令表示方法’C54x的助记符指令是由操作码和操作数两部分组成。在进行汇编以前,操作码和操作数都是用助记符表示。例如:LD#0FFh,A;将立即数0FF传送至A操作码源操作数目的操作数注释指令系统中的符号1.指令系统中的符号和缩略语序号符号含义1A累加器A2ALU算术逻辑运算单元3AR泛指通用辅助寄存器4ARx指定某一辅助寄存器AR0~AR75ARPST0中的3位辅助寄存器指针6ASMST1中的5位累加器移位方式位-16~157B累加器B8BRAFST1中的块重复操作标志9BRC块重复操作寄存器10BITC或bit_code用于测试指令,指定数据存储器单元中的哪一位被测试,取指范围:0~15序号符号含义11C16ST1中的双16位/双精度算术运算方式位12CST0中的进位位13CC2位条件码(0CC3)14CMPTST1中的ARP修正方式位15CPLST1中的直接寻址编辑标志位16cond表示一种条件的操作数,用于条件执行指令17[d],[D]延时选项18DABD地址总线19DARDAB地址寄存器20dmad16位立即数数据存储器地址(0~65535)指令系统中的符号1.指令系统中的符号和缩略语序号符号含义21Dmem数据存储器操作数22DPST0中的数据存储器页指针(0DP511)23dst目的累加器(A和B)24dst_与dst相反的目的累加器25EABE地址总线26EAREAB地址总线27extpmad23位立即程序存储器地址28FRCTST1中的小数方式位29hi(A)累加器的高阶位(AH或BH)30HMST1中的保持方式位指令系统中的符号1.指令系统中的符号和缩略语序号符号含义31IFR中断标志寄存器32INTMST1中的中断屏蔽位33K少于9位的短立即数34k33位立即数(0k37)35k55位立即数(-16k515)36k99位立即数(0k9511)37lk16位长立即数38Lmem利用长字寻址的32位单数据存储器操作数39Mmr,MMR存储器映像寄存器40MMRx,MMRy存储器映像寄存器,AR0~AR7或SP指令系统中的符号1.指令系统中的符号和缩略语序号符号含义41nXC指令后面的字数,取1或242N指定状态寄存器,N=0为ST0,N=1为ST143OVAST0中的累加器A溢出标志44OVBST0中的累加器B溢出标志45OVdst指定目的累加器(A或B)的溢出标志46OVdst_指定与Ovdst相反的目的累加器的溢出标志47OVsrc指定源累加器(A或B)的溢出标志48OVMST1中的溢出方式位49PA16位立即端口地址(0PA65535)50PAR程序存储器地址寄存器指令系统中的符号1.指令系统中的符号和缩略语序号符号含义51PC程序计数器52pmad16位立即程序存储器地址(0pmad65535)53pmem程序存储器操作数54PMST处理器工作方式状态寄存器55prog程序存储器操作数56[R]舍入选项57rnd循环寻址58RC重复计数器59RTN快速返回寄存器60REA块重复结束地址寄存器指令系统中的符号1.指令系统中的符号和缩略语序号符号含义61RSA块重复起始地址寄存器62SBIT用于指定状态寄存器位的4位地址(0~15)63SHFT4位移位值(0~15)64SHIFT5位移位值(-16~15)65Sind间接寻址的单数据存储器操作数66Smem16位单数据存储器操作数67SP堆栈指针寄存器68src源累加器(A或B)69ST0,ST1状态寄存器0,状态寄存器170SXMST1中的符号扩展方式位指令系统中的符号1.指令系统中的符号和缩略语序号符号含义71T暂存器72TCST0中的测试/控制标志73TOS堆栈顶部74TRN状态转移寄存器75TS由T寄存器的5~0位所规定的移位数(-16~31)76uns无符号数77XFST1中的外部标志状态位78XPC程序计数器扩展寄存器79Xmem16位双数据存储
本文标题:DSP器件及其应用-DSP的指令系统
链接地址:https://www.777doc.com/doc-2910488 .html