《汇编语言指令》PPT课件.ppt
2023/7/19,1,第四章 DSP汇编语言基础,2、C54x汇编语言指令系统类型:助记符:例:ADD src,Smem;代数表达式:例:src=src+Smem;,2023/7/19,2,指令集符号和简写 符号意义 A 累加器 A;ALU 算术逻辑运算单元;AR 辅助寄存器,通用惯例;ARx 指定具体的辅助寄存器(0-7);ARP ST0中的辅助寄存器指针;这3位指出了当前使用 的辅助寄存器(ARx);ASM ST1(16 ASM 15)中的5位移位字段;B 累加器B;BRAF ST1中的块重复激活标志;BRC 块重复计数器;BITC 指定数据存储器中的测试位,4位数字表示(0BITC 15);C16 ST1中的算术精度模式位双16位/双精度;,2023/7/19,3,第四章 DSP汇编语言基础,C ST0中的进位标志位;CC 2位条件代码(0 CC 3);CMPT ST1中的比较模式位;CPL ST1中的编译模式位;cond 指令操作执行条件;D 延时操作;DAB D数据地址总线;DAR DAB 地址寄存器;dmad 16位立即数存储器地址(0 dmad 65535);Dmem 数据存储器操作数;DP ST0中的9位数据存储器页指针(0 DP 511),2023/7/19,4,第四章 DSP汇编语言基础,dst 目的累加器(A or B);dst_ 对应目的累加器:If dst=A,then dst_=B;If dst=B,then dst_=A。EAB E可执行 地址总线;EAR EAB 地址寄存器;extpmad 23位立即数程序存储器地址;FRCT ST1中的小数模式位;hi(A)累加器A的高位(3116)HM ST1中的保持模式;IFR 中断屏蔽寄存器;,2023/7/19,5,第四章 DSP汇编语言基础,INTM ST1中的中断模式位;K 低于9的短立即数;k3 3位表示的立即数(0 k3 7);k5 5位表示的立即数(16 k5 15);k9 9位表示的立即数(0 k9 511);lk 16位长立即数;Lmem 32位单周期数据存储器操作数,用长字寻址;mmr,MMR 存储器映射寄存器;MMRx,MMRy 存储器映射寄存器AR0AR7,SPn XC 指令的字数,n=1 or 2;N 指定 RSBX,SSBX,XC 修正的寄存器:N=0 修正 ST0 N=1 修正 ST1,2023/7/19,6,第四章 DSP汇编语言基础,OVA ST0中累加器A的溢出标志;OVB ST0中累加器B的溢出标志;OVdst 目的累加器(A or B)的溢出标志;OVdst_ 对应目的累加器(A or B)的溢出标志;OVsrc 源累加器(A or B)的溢出标志;OVM ST1中的溢出模式位;PA 16位端口立即数地址(0 PA 65 535);PAR 程序地址寄存器;PC 程序计数器;pmad 16位立即数程序存储器地址(0 pmad 65 535);Pmem 程序存储器操作数;PMST 处理器模式状态寄存器;,2023/7/19,7,第四章 DSP汇编语言基础,prog 程序存储器操作数;R 循环操作;RC 重复计数器;REA 块重复结束地址;rnd 循环;RSA 块重复开始地址寄存器;RTN RETFD指令中的快速返回寄存器;SBIT 4位数指定在 RSBX,SSBX,XC指令中修订的状态状 态寄存器位数(0 SBIT 15);SHFT 4位移位值(0 SHFT 15);SHIFT 5位移位值(16 SHIFT 15);Sind 间接寻址的单操作数据寄存器操作数;,2023/7/19,8,第四章 DSP汇编语言基础,Smem 16位单数据存储器操作数;SP 堆栈指针;src 源累加器(A or B);ST0,ST1 状态寄存器 0,状态寄存器 1SXM Sign-extension mode bit in ST1中符号扩展模式位;T 暂存寄存器;TC ST0中的测试/控制位;TOS 堆栈栈顶;TRN 转换寄存器;TS T(16TS 31)的50位指定的移位值;uns 无符号;XF ST1中的外部符号状态位;,2023/7/19,9,第四章 DSP汇编语言基础,XPC 程序扩展计数器;Xmem 用于单操作或双操作存储器指令中的16位双数据存 储操作数;Ymem 用于双操作存储器指令中的16位双数据存储操作数;SP 堆栈指针减1;+SP 堆栈指针加 1;+PC 程序计数器加 1。指令集 共有指令129条,由寻址方式衍生至216条。第一类 算数运算指令加法指令13条:ADD Smem,src;src=src+Smem,2023/7/19,10,第四章 DSP汇编语言基础,不同移位寻址方式衍生:ADD Smem,TS,src;src=src+Smem TSADD Smem,16,src,dst;dst=src+Smem16ADD Smem,SHIFT,src,dst;dst=src+SmemSHIFTADD Xmem,SHFT,src;src=src+XmemSHFTADD Xmem,Ymem,dst;dst=Xmem16+Ymem16ADD#lk,SHFT,src,dst;dst=src+#lkSHFTADD#lk,16,src,dst;dst=src+#lk 16ADD src,SHIFT,dst;dst=dst+srcSHIFTADD src,ASM,dst;dst=dst+srcASMADDC Smem,src;src=src+Smem+CADDM#lk,Smem;Smem=Smem+#lkADDS Smem,src;src=src+uns(Smem),2023/7/19,11,第四章 DSP汇编语言基础,减法指令13条:SUB Smem,src;src=src-Smem 不同移位寻址方式衍生:SUB Smem,TS,src;src=src-Smem TC SUB Smem,16,src,dst;dst=src-Smem16 SUB Smem,SHIFT,src,dst;dst=src-SmemSHIFT SUB Xmem,SHFT,src;src=src-XmemSHFT SUB Xmem,Ymem,dst;dst=Xmem16-Ymem16 SUB#lk,SHFT,src,dst;dst=src-#lkSHFT,2023/7/19,12,SUB#lk,16,src,dst;dst=src-#lk 16SUB src,SHIFT,dst;dst=dst-srcSHIFTSUB src,ASM,dst;dst=dst-srcASMSUBB Smem,src;src=src-Smem-C SUBC Smem,src;if(src-Smem15)0;src=(src-Smem15)1+1;else src=src1 SUBS Smem,src;src=src-uns(Smem)乘法指令10条 MPY Smem,dst;dst=TSmem MPYR Smem,dst;dst=rnd(TSmem)MPY Xmem,Ymem,dst;dst=Xmem Ymem,T=Xmem,第四章 DSP汇编语言基础,2023/7/19,13,第四章 DSP汇编语言基础,MPY Smem,#lk,dst;dst=Smem#lk,T=SmemMPY#lk,dst;dst=T#lkMPYA dst;dst=T A(32-16)MPYA Smem;B=Smem A(32-16),T=SmemMPYU Smem,dst;dst=uns(T)uns(Smem)SQUR Smem,dst;dst=Smem Smem,T=SmemSQUR A,dst;dst=A(32-16)A(32-16)多项式加减22条MAC Smem,src;src=src+T SmemMAC Xmem,Ymem,src,dst;dst=src+Xmem Ymem,T=Smem,2023/7/19,14,第四章 DSP汇编语言基础,MAC#lk,src,dst;dst=src+T#lkMAC Smem,#lk,src,dst;dst=src+Smem#lk,T=SmemMACR Smem,src,dst;dst=rnd(scr+T Smem)MACR Xmem,Ymem,src,dst;dst=(src+Xmem Ymem),T=XmemMACA Smem,B;B=B+Smem A(32-16),T=SmemMACA T,src,dst;dst=src+T A(32-16)MACAR Smem,B;B=rnd(B+Smem A(32-16),T=SmemMACAR T,src,dst;dst=rnd(src+T A(32-16)MACD Smem,pmad,src;src=src+Smem pmad,;T=Smem,(Smem+1)=Smem,2023/7/19,15,第四章 DSP汇编语言基础,MACP Smem,pmad,src;src=src+Smempmad,T=SmemMACSU Xmem,Ymem,src;src=src+uns(Xmem)Ymem,;T=XmemMAS Smem,src;src=src-T SmemMASR Xmem,Ymem,src,dst;;dst=rnd(src-Xmem Ymem),T=XmemMAS Xmem,Ymem,src,dst;;dst=src-Xmem Ymem,T=XmemMASR Smem,src;src=rnd(src-T Smem)MASA Smem,B;B=B-Smem A(32-16),T=SmemMASA T,src,dst;dst=src-T A(32-16)MASAR T,src,dst;dst=rnd(src-T A(32-16),2023/7/19,16,第四章 DSP汇编语言基础,SQURA Smem,src;src=src+Smem Smem,T=SmemSQURS Smem,src;src=src-Smem Smem,T=Smem双精度指令DADD Lmem,src,dst;if C16=0,dst=Lmem+src;if C16=1,;dst(39-16)=dst(39-16)+src(31-16);dst(15-0)=dst(15-0)+src(15-0)DADST Lmem,src;if C16=0,dst=Lmem+(T16+T);if C16=1,;dst(39-16)=dst(39-16)+T;dst(15-0)=dst(15-0)+T,2023/7/19,17,第四章 DSP汇编语言基础,DRSUB Lmem,src;if C16=0,src=Lmem-src;if C16=1,;src(39-16)=Lmem(31-16)-src(31-16);src(15-0)=Lmem(15-0)-src(15-0)DSADT Lmem,dst;if C16=0,dst=Lmem-(T16+T);if C16=1,;dst(39-16)=Lmem(31-16)-T;dst(15-0)=Lmem(15-0)+TDSUB Lmem,src;if C16=0,src=src-Lmem;if C16=1,;src(39-16)=src(31-16)-Lmem(31-16);src(15-0)=src(15-0)-Lmem(15-0),2023/7/19,18,第四章 DSP汇编语言基础,DSUBT Lmem,dst;if C16=0,dst=Lmem-(T16+T);if C16=1,;dst(39-16)=Lmem(31-16)-T;dst(15-0)=Lmem(15-0)-T特定应用指令ABDST Xmem,Ymem;B=B+|A(32-16)|;A=(Xmem-Ymem)16ABS src,dst;dst=|src|CMPL src,dst;dst=srcDELAY Smem;(Smem+1)=SmemEXP src;T=(src)的符号位数-8,2023/7/19,19,第四章 DSP汇编语言基础,FIRS Xmem,Ymem,pmad;B=B+A pmad;A=(Xmem+Ymem)16LMS Xmem,Ymem;B=B+Xmem Ymem;A=(A+Xmem16)+215MAX dst;dst=maxA,BMIN dst;dst=minA,BNEG src,dst;dst=-srcNORM src,dst;dst=srcTS,dst=norm(src,TS)POLY Smem;B=Smem16RND src,dst;dst=src+215SAT src;饱和(src)SQDST Xmem,Ymem;B=B+A(32-16)A(32-16);A=(Xmem+Ymem)16,2023/7/19,20,第四章 DSP汇编语言基础,第2类 逻辑操作指令AND逻辑“与”5条AND Smem,src;src=src dst=src|#lk 16,2023/7/19,21,第四章 DSP汇编语言基础,OR src,SHIFT,dst;dst=dst|src SHIFTORM#lk,Smem;Smem=Smem|#lkXOR逻辑“异或”5条XOR Smem,src;src=src SmemXOR#lk,SHFT,src,dst;dst=src#lk SHFT XOR#lk,16,src,dst;dst=src#lk 16XOR src,SHIFT,dst;dst=dst src SHIFT XORM#lk,Smem;Smem=Smem#lk移位指令6条ROL src;带进位循环左移ROLTC src;带TC位循环左移 ROR src;带进位循环右移,2023/7/19,22,SFTA src,SHIFT,dst;dst=src SHIFT 算术移位SFTC src;if src(31)=src(30)then src=src 1SFTL src,SHIFT,dst;dst=src SHIFT 逻辑移位测试指令5条BIT Xmem,BITC;TC=Xmem(15 BITC)BITF Smem,#lk;TC=(Smem 比较 ARx 与AR0,第四章 DSP汇编语言基础,2023/7/19,23,第三类 程序控制指令分支转移指令6条:,第四章 DSP汇编语言基础,BD pmad;PC=pmad(150)BACCD src;PC=src(150)BANZD pmad,Sind;if(Sind0),then PC=pmad(150)BCD pmad,cond,cond,cond;if(cond(s),then PC=pmad(150)FBD extpmad;PC=pmad(150),;XPC=pmad(2216)FBACCD src;PC=src(150),XPC=src(2216),2023/7/19,24,第四章 DSP汇编语言基础,调用指令5条:CALAD src;SP,PC+1=TOS,PC=src(150)CALLD pmad;SP,PC+2=TOS,;PC=pmad(150)CCD pmad,cond,cond,cond;if(cond(s)then SP,;PC+2=TOS,PC=pmad(150)FCALAD src;SP,PC+1=TOS,;PC=src(150),XPC=src(2216)FCALLD extpmad;SP,PC+2=TOS,;PC=pmad(150),XPC=pmad(2216),2023/7/19,25,中断指令2条:INTR K;SP,+PC=TOS,;PC=IPTR(157)+K 2,;INTM=1TRAP K;SP,+PC=TOS,;PC=IPTR(157)+K 2返回指令6条:FRETD;XPC=TOS,+SP,PC=TOS,;+SP FRETED;XPC=TOS,+SP,PC=TOS,;+SP,INTM=0,第四章 DSP汇编语言基础,2023/7/19,26,RCD cond,cond,cond;if(cond(s)then PC=TOS,+SP RETD;PC=TOS,+SPRETED;PC=TOS,+SP,INTM=0RETFD;PC=RTN,+SP,INTM=0重复指令5条:RPT Smem;单指令重复,RC=Smem RPT#K;单指令重复,RC=#KRPT#lk;单指令重复,RC=#lk,第四章 DSP汇编语言基础,2023/7/19,27,第四章 DSP汇编语言基础,RPTBD pmad;块重复,RSA=PC+2,;REA=pmad,BRAF=1RPTZ dst,#lk;单指令重复,RC=#lk,dst=0堆栈指令5条:FRAME K;SP=SP+KPOPD Smem;Smem=TOS,+SPPOPM MMR;MMR=TOS,+SP PSHD Smem;SP,Smem=TOS PSHM MMR;SP,MMR=TOS,2023/7/19,28,Miscellaneous程序控制指令:IDLE K;idle(K)MAR Smem;If CMPT=0,修正 ARx;If CMPT=1,且 ARxAR0,修正ARx,ARP=x;If CMPT=1,且 ARx=AR0,修正AR(ARP)NOP;空操作RESET;软件复位RSBX N,SBIT;STN(SBIT)=0SSBX N,SBIT;STN(SBIT)=1 XC n,cond,cond,cond;If(cond(s),执行后 n条指令,n=1 or 2,第四章 DSP汇编语言基础,2023/7/19,29,第四章 DSP汇编语言基础,第四类 数据传送指令装载指令21条DLD Lmem,dst;dst=LmemLD Smem,dst;dst=SmemLD Smem,TS,dst;dst=Smem TSLD Smem,16,dst;dst=Smem 16LD Smem,SHIFT,dst;dst=Smem SHIFTLD Xmem,SHFT,dst;dst=Xmem SHFT LD#K,dst;dst=#KLD#lk,SHFT,dst;dst=#lk SHFT,2023/7/19,30,第四章 DSP汇编语言基础,LD#lk,16,dst;dst=#lk 16LD src,ASM,dst;dst=src ASM LD src,SHIFT,dst;dst=src SHIFTLD Smem,T;T=Smem LD Smem,DP;DP=Smem(80)LD#k9,DP;DP=#k9LD#k5,ASM;ASM=#k5LD#k3,ARP;ARP=#k3 LD Smem,ASM;ASM=Smem(40)LDM MMR,dst;dst=MMR,2023/7/19,31,LDR Smem,dst;dst=rnd(Smem)LDU Smem,dst;dst=uns(Smem)LTD Smem;T=Smem,(Smem+1)=Smem存储指令14条:DST src,Lmem;Lmem=src ST T,Smem;Smem=TST TRN,Smem;Smem=TRNST#lk,Smem;Smem=#lkSTH src,Smem;Smem=src 16STH src,ASM,Smem;Smem=src(ASM 16)STH src,SHFT,Xmem;Xmem=src(SHFT 16),第四章 DSP汇编语言基础,2023/7/19,32,STH src,SHIFT,Smem;Smem=src src(150),;Smem=src(3116);If src(3116)=src(150),;Smem=src(150),第四章 DSP汇编语言基础,2023/7/19,33,SACCD src,Xmem,cond;If(cond);Xmem=src(ASM 16)SRCCD Xmem,cond;If(cond)Xmem=BRCSTRCD Xmem,cond;If(cond),Xmem=T并行装载和存储指令ST src,Ymem|LD Xmem,dst;Ymem=src(ASM 16);|dst=Xmem 16ST src,Ymem|LD Xmem,T;Ymem=src(ASM 16);|T=Xmem,第四章 DSP汇编语言基础,2023/7/19,34,并行装载和多项式指令4条LD Xmem,dst|MAC Ymem,dst_;dst=Xmem 16;|dst_=dst_+T YmemLD Xmem,dst|MACR Ymem,dst_;dst=Xmem 16;|dst_=rnd(dst_+T Ymem)LD Xmem,dst|MAS Ymem,dst_;dst=Xmem 16;|dst_=dst_ T YmemLD Xmem,dst|MASR Ymem,dst_;dst=Xmem 16;|dst_=rnd(dst_ T Ymem),第四章 DSP汇编语言基础,2023/7/19,35,并行存储和加减指令2条:ST src,Ymem|ADD Xmem,dst;Ymem=src(ASM 16);|dst=dst_+Xmem 16ST src,Ymem|SUB Xmem,dst;Ymem=src(ASM 16);|dst=(Xmem 16)dst_并行存储和多项式 6条ST src,Ymem|MAC Xmem,dst;Ymem=src(ASM 16);|dst=dst+T*Xmem,第四章 DSP汇编语言基础,2023/7/19,36,ST src,Ymem|MAC Xmem,dst;Ymem=src(ASM 16);|dst=dst+T XmemST src,Ymem|MACR Xmem,dst;Ymem=src(ASM 16);|dst=rnd(dst+T Xmem)ST src,Ymem|MAS Xmem,dst;Ymem=src(ASM 16);|dst=dst T XmemST src,Ymem|MASR Xmem,dst;Ymem=src(ASM 16);|dst=rnd(dst T Xmem),第四章 DSP汇编语言基础,2023/7/19,37,ST src,Ymem|MPY Xmem,dst;Ymem=src(ASM 16);|dst=T XmemMiscellaneous Miscellaneous装载-存储指令12条MVDD Xmem,Ymem;Ymem=XmemMVDK Smem,dmad;dmad=SmemMVDM dmad,MMR;MMR=dmad MVDP Smem,pmad;pmad=Smem MVKD dmad,Smem;Smem=dmadMVMD MMR,dmad;dmad=MMR,第四章 DSP汇编语言基础,2023/7/19,38,MVMM MMRx,MMRy;MMRy=MMRxMVPD pmad,Smem;Smem=pmadPORTR PA,Smem;Smem=PAPORTW Smem,PA;PA=SmemREADA Smem;Smem=(A)WRITA Smem;(A)=Smem单周期重复指令特点:重复下一条指令,重复次数为操作数+1,此数存储于重复计数器RC中,只能由重复指令装载,不能对其编程;使用单周期重复指令时,程序或数据的绝对寻址自动加1;,第四章 DSP汇编语言基础,2023/7/19,39,第四章 DSP汇编语言基础,单周期重复指令译码时,所有中断禁止,包括NMI,直到指令循环执行完毕;重复指令可用于多项式/累加、块搬移,以增加指令执行速度。这些多周期指令,在第一次指令执行后,变为单周期指令;使用单数据存储操作数指令的长偏移地址修正或间接寻址时,不能使用单周期重复指令;有些不能使用单周期重复的指令参见参考文献4-1。,