DSP指令大全Word文档下载推荐.docx
- 文档编号:21270549
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:31
- 大小:24.33KB
DSP指令大全Word文档下载推荐.docx
《DSP指令大全Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DSP指令大全Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。
src=src+uns(Smem)
符号位不扩展的加法
2.减法指令
SUBSmem,src
src=src—Smem
从累加器中减去操作数
SUBSmem,TS,src
src=src—Smem<
从累加器中减去移位后的操作数
SUBSmem,16,src[,dst]
dst=src—Smem<
从累加器中减去左移16位后的操作数
SUBSmem[,SHIFT],src[,dst]
操作数移位后与累加器相减
SUBXmem,SHFT,src
src=src—Xmem<
SUBXmem,Ymem,dst
16—Ymem<
两个操作数分别左移16位后相减
SUB#lk[,SHFT],src[,dst]
dst=src—#1k<
长立即数移位后与累加器相减
SUB#lk,16,src[,dst]
长立即数左移16位后与累加器相减
SUBsrc[,SHIFT][,dst]
dst=dst—src<
源累加器移位后与目的累加器相减
SUBsrc,ASM[,dst]
源累加器按ASM移位后与目的累加器相减
l
SUBBSmem,src
src=src—Smem——C
从累加器中带借位减操作数
SUBCSmem,src
If(src—Smem<
15)≥0
src=(src—Smem<
15)<
1+1
Else
src=src<
有条件减法
SUBSSmem,src
src=src—uns(Smem)
符号位不扩展的减法
3.乘法指令
MPYSmem,dst
dst=T*Smem
T寄存器值与操作数相乘
MPYRSmem,dst
dst=rnd(T*Smem)
T寄存器值与操作数相乘(带舍入)
MPYXmem,Ymem,dst
dst=Xmem*Ymem,T=Xmem
两个操作数相乘
MPYSmem,#lk,dst
dst=Smem*#lk,T=Smem
长立即数与操作数相乘
MPY#lk,dst
dst=T*#lk
长立即数与T寄存器值相乘
MPYAdst
dst=T*A(32-16)
T寄存值与累加器A高位相乘
MPYASmem
B=Smem*A(32-16),T=Smem
操作数与累加器A高位相乘
MPYUSmem,dst
dst=uns(T)*uns(Smem)
无符号数乘法
SQURSmem,dst
dst=Smem*Smem,T=Smem
操作数的平方
SQURA,dst
dst=A(32—16)*A(32—16)
累加器A的高位平方
4.乘法累加/减指令
MACSmem,src
src=src+T*Smem
操作数与T寄存器值相乘后加到累加器
MACXmem,Ymem,src[,dst]
dst=src+Xmern*Ymem,T=Xmem
两个操作数相乘后加到累加器
MAC#lk,src[,dst]
dst=src+T*#lk
长立即数与T寄存器值相乘后加到累加器
MACSmem,#lk,src[,dst]
dst=src+Smem*#lk,T=Smem
长立即数与操作数相乘后加到累加器
MACRSmem,src
dst=rnd(src+T*Smem)
操作数与T寄存器值相乘后加到累加器(带舍入)
MACRXmem,Ymem,src[,dst]
dst=rnd(src+Xmem*Ymem),T=Xmem
两个操作数相乘后加到累加器(带舍入)
MACASmem[,B]
B=B+Smem*A(32—16),T=Smem
操作数与累加器A高位相乘后加到累加器B
MACAT,src[,dst]
dst=src+T*A(32—16)
T寄存器值与累加器A高位相乘
MACARSmem[,B]
B=rnd(B+Smem*A(32—16)),T=Smem
T寄存器值与累加器A高位相乘后加到累加B(带舍入)
MACART,src[,dst]
dst=rnd(src+T*A(32—16))
累加器A高位与T寄存器值相乘后与源、累加器相加(带舍入)
MACDSmem,pmad,src
src=src+Smem*pmad,
T=Smem,(Smem+1)=Smem
操作数与程序存储器值相乘后累加并延迟
3
MACPSmem,pmad,src
src=src+Smem*pmad,T=Smem
操作数与程序存储器值相乘后加到累加器
MACSUXmem,Ymem,src
src=src+uns(Xmem)*Ymem,T=Xmem
元符号数与有符号数相乘后加到累加器
MASSmem,src
src=src—T*Smem
从累加器中减去T寄存器值与操作数的乘积
MASRXmem,Ymem,src[,dst]
dst=rnd(src—Xmem*Ymem),T=Xmem
从累加器中减去两操作数的乘积(带舍入)
MASXmem,Ymem,src[,dst]
dst=src—Xmem*Ymem,T=Xmem
从源累加器中减去两操作数的乘积
MASRSmem,src
src=rnd(src—T*Smem)
从累加器中减去T寄存器值与操作数的乘积(带舍入)
MASASmem[,B]
B=B—Smem*A(32—16),T=Smem
从累加器B中减去操作数与累加器A高位的乘积
MASAT,src[,dst]
dst=src—T*A(32—16)
从源累加器中减去T寄存器值与累加器A高位的乘积
MASART,src[,dst]
dst=rnd(src—T*A(32—16))
从源累加器中减去T寄存器值与累加器A高位的乘积(带舍入)
SQURASmem,src
src=src+Smem*Smem,T=Smem
操作数平方并累加
SQURSSmem,src
src=src—Smem*Smem,T=Smem
从累加器中减去操作数的平方
5.双精度(32位操作数)指令
DADDLmem,src[,dst]
IfC16=0
dst=Lmem+src
IfC16=1
dst(39—16)=Lmem(31—16)+src(31—16)
dst(15—0)=Lmem(15—0)+src(15—0)
双精度/双16位数加到累加器
DADSTLmem,dst
dst=Lmem+(T<
16+T)
dst(39—16)=Lmem(31—16)+T
dst(15—0)=Lmem(15—0)—T
双精度/双16位数与T寄存器值相加/减
DRSUBLmem,src
src=Lmem—src
src(39—16)=Lmem(31—16)—src(31—16)
src(15—0)=Lmem(15—0)—src(15—0)
双精度/双16位数中减去累加器值
DSADTLmem,dst
dst=Lmem—(T<
dst(39—16)=Lmem(31—16)—T
dst(15—0)=Lmem(15—0)+T
长操作数与T寄存器值相加/减
DSUBLmem,src
src=src—Lmem
src(39—16)=src(31—16)—Lmem(31—16)
src(15—0)=src(15—0)—Lmem(15—0)
从累加器中减去双精度/双16位数
DSUBTLmem,dst
从长操作数中减去T寄存器值
6.专用指令
ABDSTXmem,Ymem
B=B+|A(32—16)|,A=(Xmem—Ymem)<
绝对距离
ABSsrc[,dst]
dst=|src|
累加器取绝对值
CMPLsrc[,dst]
dst=———src
累加器取反
DELAYSmem
(Smem+1)=Smem
存储器单元延迟
EXPsrc
T=numberofsignbits(src)—8
求累加器的指数
FIRSXmem,Ymem,pmad
B=B+A*pmad,A=(Xmem+Ymem)<
对称FIR滤波
LMSXmem,Ymem
B=B+Xmem*Ymem,A=(A+Xmem<
16)+215
求最小均方值
MAXdst
dst=max(A,B)
求累加器(A,B)最大值
MINdst
dst=min(A,B)
求累加器(A,B)最小值
NEGsrc[,dst]
dst=-src
累加器变负
NORMsrc[,dst]
dst=src<
TS,dst=norm(src,TS)
归一化
POLYSmem
B=Smem<
16,A=rnd(A*T+B)
求多项式的值
RNDsrc[,dst]
dst=src+215
累加器舍入运算
SATsrc
saturate(src)
累加器饱和运算
SQDSTXmem,Ymem
B=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<
求距离的平方
二、逻辑运算指令
1.与逻辑运算指令
ANDSmem,src
src=src&
Smem
操作数和累加器相与
AND#lk[,SHFT],src[,dst]
dst=src&
#lk<
长立即数移位后和累加器相与
AND#lk,16,src[,dst]
长立即数左移16位后和累加器相与
ANDsrc[,SHIFT][,dst]
dst=dst&
src<
源累加器移位后和目的累加器相与
ANDM#lk,Smem
Smem=Smem&
#lk
操作数和长立即数相与
2.或逻辑运算指令
ORSmem
src=src|Smem
操作数和累加器相或
OR#lk[,SHFT],src[,dst]
dst=src|#lk<
长立即数移位后和累加器相或
OR#lk,16,src[,dst]
长立即数左移16位后和累加器相或
ORsrc[,SHIFT][,dst]
dst=dst|src<
源累加器移位后和目的累加器相或
ORM#lk,Smem
Smem=Smem|#lk
操作数和长立即数相或
3.异或逻辑运算指令
XORSmem,src
src=src∧Smem
操作数和累加器相异或
XOR#lk,[,SHFT],src[,dst]
dst=src∧#lk<
长立即数移位后和累加器相异或
XOR#lk,16,src[,dst]
长立即数左移16位后和累加器相异或
XORsrc[,SHIFT][,dst]
dst=dst∧src<
源累加器移位后和目的累加器相异或
XORM#lk,Smem
Smem=Smem∧#lk
操作数和长立即数相异或
4.移位指令
ROLsrc
Rotateleftwithcarryin
累加器经进位位循环左移
ROLTCsrc
RotateleftwithTCin
累加器经TC位循环左移
RORsrc
Rotaterightwithcarryin
累加器经进位位循环右移
SFTAsrc,SHIFT[,dst]
SHIFT{arithmeticshift}
累加器算术移位
SFTCsrc
ifsrc(31)=src(30)thensrc=src<
累加器条件移位
SFTLsrc,SHIFT[,dst]
SHIFT{logicalshift}
累加器逻辑移位
5.测试指令
BITXmem,BITC
TC=Xmem(15—BITC)
测试指定位
BITFSmem,#lk
TC=(Smem&
#lk)
测试由立即数规定的位域
BITTSmem
TC=Smem(15—T(3—O))
测试由T寄存器指定的位
CMPMSmem,#lk
TC=(Smem==#lk)
存储单元与长立即数比较
CMPRCC,ARx
CompareARxwithAR0
辅助寄存器ARx与ARO比较
三、程序控制指令
1.分支转换指令
B[D]pmad
PC=pmad(15—0)
无条件分支转移
4/[2※]
BACC[D]src
PC=src(15—0)
按累加器规定的地址转移
6/[4※]
BANZ[D]pmad,Sind
if(Sind≠0)thenPC=pmad(15—0)
辅助寄存器不为O就转移
4/2§
/[2※]
BC[D]pmad,cond[,cond[,cond]]
if(cond(s))thenPC=pmad(15—0)
条件分支转移
5/3§
/[3※]
FB[D]extpmad
PC=pmad(15—0),XPC=pmad(22—16)
无条件远程分支转移
FBACC[D]src
PC=src(15—0),XPC=src(22—16)
按累加器规定的地址远程分支转移
2.调用指令
CALA[D]src
——SP=PC,PC=src(15—0)
按累加器规定的地址调用子程序
CALL[D]pmad
——SP=PC,PC=pmad(15—0)
无条件调用子程序
4/[2§
]
CC[D]pmad,cond[,cond[,cond]]
if(cond(s))then——SP=PC,PC=pmad(15—0)
有条件调用子程序
FCALA[D]src
——SP=PC,——SP=XPC,PC=src(15—0),XPC=src(22—16)
按累加器规定的地址远程调用子程序
FCALL[D]extpmad
——SP=PC,——SP=XPC,PC=pmad(15—0),XPC=pmad(22—16)
无条件远程调用子程序
4[2※]
3.中断指令
INTRK
——SP=PC,PC=IPTR(15—7)+K<
2,INTM=1
不可屏蔽的软件中断,关闭其他可屏蔽中断
TRAPK
不可屏蔽的软件中断,不影响INTM位
4.返回指令
周期
FRET[D]
XPC=SP++,PC=SP++
远程返回
FRETE[D]
XPC=SP++,PC=SP++,INTM=O
开中断,从远程中断返回
RC[D]cond[,cond[,cond]]
if(cond(s))thenPC=SP++
条件返回
53§
RET[D]
PC=SP++
返回
5/[3※]
RETE[D]
PC=SP++,INTM=O
开中断,从中断返回
RETF[D]
PC=RTN,SP++,INTM=O
开中断,从中断快速返回
3/[1※]
5.重复指令
RPTSmem
Repeatsingle,RC=Smem
重复执行下条指令(Smem)+1次
RPT#K
Repeatsingle,RC=#K
重复执行下条指令k十1次
RPT#lk
Repeatsingle,RC=#lk
重复执行下条指令#lk+1次
RPTB[D]pmad
Repeatblock,RSA=PC+2[4#],REA=pmad—1
块重复指令
RPTZdst,#lk
Repeatsingle,RC=#lk,dst=O
重复执行下条指令,累加器清O
6.堆栈管理指令
FRAMEK
SP=SP+K,-128≤k≤127
堆栈指针偏移一个立即数值
POPDSmem
Smem=SP++
将数据从栈顶弹出至数据存储器
POPMMMR
MMR=SP++
将数据从栈顶弹出至MMR
PSHDSmem
——SP=Smem
将数据压人堆栈
PSHMMMR
——SP=MMR
将MMR压人堆栈
7.其他程序控制指令
IDLEK
idle(K),1≤k≤3
保持空转状态,直到中断发生
4
MARSmem
IfCMPT=0,thenmodifyARx,
ARPisunchanged
IfCMPT=1andARx≠AR0,thenmodifyARx,
ARP=x
IfCMPT=1andARx=AR0,thenmodifyAR(ARP),
修改辅助寄存器
NOP
nooperation
空操作
RESET
softwarereset
软件复位
RSBXN,SBIT
STN(SBIT)=0
状态寄存器位复位
SSBXN,SBIT
STN(SBIT)=1
状态寄存器位置位
XCn,cond[,cond[,cond]]
If(cond(s))thenexecutethenextninstructions;
n=1or2
有条件执行
注:
条件“真”,§
条件“假”,※延迟指令。
四、加载和存储指令
1.加载指令
DLDLmem,dst
dst=Lmem
双精度/双16位长字加载累加器
LDSmem,dst
dst=Smem
将操作数加载到累加器
LDSmem,TS,dst
dst=Smem<
操作数按TREG(5~0)移位后加
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 指令 大全