-
附录
6 TMS320C54x
指令系统一览表
(
按指令功能排列
)
一、算术运算指令
1.
加法指令
句
法
ADD Smem
,
src
ADD Smem
,
TS
,
src
表
达
式
src=src+Smem
,
— <
br>dst dst=Xmem<<16 #1k< 16
<
br>, <
br>, <
br>乘法累加
<
br> 寄存器值相乘后 寄存器值与累加器 高位相
src=src+Smem<
说
明
操作数加至累加器
操作数移位后加至累加器
字
周
数
期
1
1
1
1
1
2
1
1
2
2
1
1
1
2
1
ADD Smem
,
16
,
src[
,
dst] dst=src+Smem<<16
ADD
Smem[
,
SHIFT]
,
dst=src+Smem<
src[
,
dst]
ADD Xmem
,
SHFT
,
src
src=src+Xmem<
操作数左移
16
位加至累加器
1
操作数移位后加到累加器
操作数移位后加到累加器
2
1
两个操作数分别左移
16
位后
1
ADD Xmem
Ymem
,
dst
dst=Xmem<<16+Ymem<<16
加到累加器
ADD #lk[
,
SHFT]
,
src[
,
dst
=src+#lk<
dst]
ADD #lk<
/p>
,
16
,
src
[
,
dst]
dst=src+#lk<<16
ADD src
,
[
,
SHIFT][<
/p>
,
dst] dst=dst+src<
ADD src
,
ASM[
,
dst]
ADDC
Smem
,
src
ADDM
#lk
,
Smem
ADDS
Smem
,
src
2.
减法指令
句
法
SUB Smem
,
src
SUB Smem
,
TS
,
src
表
达
式
src=src
—
Smem
src=src
—
Smem<
说
明
从累加器中减去操作数
dst=dst+src<
src=src+Smem+C
Smem=Smem+#lk
src=src+uns(Smem)
长立即数移位后加到累加器
2
p>
长立即数左移
16
位后加到累
2
加器
累加器移位后相加
操作数带进位加至累加器
长立即数加至存储器
符号位不扩展的加法
1
1
2
1
累加器按
ASM
移位后相加
1
字
周
数
期
1
1
1
1
2
1
1
2
2
1
从累加器中减去移位后的操
1
作数
从累加器中减去左移
16
位后
1
的操作数
操作数移位后与累加器相减
2
操作数移位后与累加器相减
1
SUB Smem
,
16
,
src[
,
dst]
dst=src
—
Smem<<16
SUB
Smem[
,
SHIFT]
,
dst=src
—
Smem<
src[
,
dst]
SUB Xmem
,
SHFT
,
src
src=src
Xmem<
两个操作数分别左移
16
位后
1
SUB X
mem
,
Ymem
,
—
Ymem<<16
相减
SUB #lk[
,
SHFT]
,
src[<
/p>
,
dst=src
—
dst]
SUB #lk
,
16
,
src[
p>
,
dst]
dst=src
—
#1k<<16
SUB src[
,
SHIFT][<
/p>
,
dst]
dst=dst
—
src<
长立即数移位后与累加器相
2
减
长立即数左移
位后与累加
2
器相减
源累加器移位后与目的累加
1
器相减
SUB src
,
ASM[
,
dst]
SUBB
Smem
,
src
dst=dst
—
src<
src=src
—
Smem
—
C
—
源累加器按
ASM
移位后与
l
目的累加器相减
从累加器中带借位减操作数
1
l
1
SUBC
Smem
,
src
If
(src
—Smem<<15)≥0
src=(src
—
Smem<<15)<<1+1
有条件减法
Else
src=src<
src=src
—
uns(Smem)
符号位不扩展的减法
1
1
SUBS
Smem
,
src
3.
乘法指令
句
法
MPY Smem
,
dst
MPYR Smem
,
dst
1
1
表
达
式
dst=T*Smem
dst=rnd(T*Smem)
dst=Xmem*Ymem
T=Xmem
dst=T*#lk
dst=T*A(32-16)
B=Smem*A(32-16)
T=Smem
dst=uns(T)*uns(Smem)
dst=Smem*Smem
T=Smem
,
,
说
明
T
寄存器值与操作数相乘
字
周
数
期
1
1
T
寄存器值与操作数相乘
(
带
1
1
舍入
)
两个操作数相乘
1
1
2
2
MPY Xmem
,
Ymem
,
dst
MPY Smem
#lk
,
dst
MPY #lk
,
dst
MPY
A dst
MPY
A Smem
MPYU
Smem
,
dst
SQUR
Smem
,
dst
SQUR
A
,
dst
4.
/
减指令
句
法
MAC
Smem
,
src
dst=Smem
*#lk
,
T=Smem
长立即数与操作数相乘
长立即数与<
/p>
T
寄存器值相乘
2
2
T
寄
存值与累加器
A
高位相
1
1
乘
操作
数与累加器
A
高位相乘
1
1
无符号数乘法
操作数的平方
1
1
1
1
1
1
字
周
数
期
dst=A(32
—
16)*A(32
—
16)
累加器
A
的高位平方
表
达
式
src=src+T*Smem
,
说
明
操作数与
T
寄存器值相乘后加
1
1
到累加器
两个操作数相乘后加到累加器
1
1
长立即数与
T
2
2
加到累加器
MAC Xmem
,
Ymem
,
dst
=src+Xmern*Ymem
T=Xmem
src[
,
dst]
MAC #lk
,
src[
,
dst]
dst=src+T*#lk
MAC Smem
,
#lk
,
src[
,
长立即数与
操作数相乘后加到
2
2
dst=s
rc+Smem*#lk
,
T=Smem
dst]
累加器
MACR Smem
,
src
dst=rnd(src+T*Smem)
操作数与
T
寄存器值相乘后加
1
1
到累加器
(
带舍入
)
MACR Xmem
,<
/p>
Ymem
,
dst=rnd(src+X
mem*Ymem)
,
两个操作数相乘后加到累加器
1
1
T=Xmem
src[
,
dst]
(
带舍入
)
MACA Smem[
,
B]
B=B+Smem*A(32
—
16)
T=Smem
,
操作数与累加器
A
高位相乘后
1
1
加到累加器
B
T
A
高位相
1
1
乘
MACA T
,
src[
,
dst]
dst=src+T*A(32
—
16)
MACAR
Smem[
,
B]
B=rnd(B+
Smem*A(32
—
16))
,
p>
T
寄存器值与累加器
A
1
1
T=Smem <
/p>
乘后加到累加
B(
带舍入
)
累加器
A
高位与
T
寄存器值相
1
1
乘后与源、
累加器相加
(
带舍入
)
MACAR T
,
src[
,
dst]
dst=rnd(src+T*A(32
—
16))
MACD Smem
,
pmad
,
src=src+Smem*pmad
,<
/p>
操作数与程序存储器值相乘后
2
3
src
T=Smem
,
(Smem+1)=Smem
累加并延迟
MACP Smem
p>
,
pmad
,
sr
c=src+Smem*pmad
src
T=Smem
,
操作数与程序存储器值相乘后
2
3
加到累加器
MACSU
Xmem
,
src=src+uns(Xmem)*Ymem
,
元符号数与有符号数相乘后加
1
1
T=Xmem
Ymem
,
src
到累加器
MAS
Smem
,
src
src=src
—
T*Smem
p>
从累加器中减去
T
寄存器值与
1
1
操作数的乘积
MASR Xmem
,
Ymem
,
dst=rnd(src
—
Xmem*Ymem)
,
从累加器中减去两操作数的乘
1
1
T=Xmem
src[
,
dst]
积
(
带舍入
)
MAS Xmem
,
Ymem
,
dst=src
—
X
mem*Ymem
T=Xmem
src[
,
dst]
MASR Smem
,
src
MASA Smem[
,
B]
src=rnd(src
—
T*Smem)
B=B
—
Smem*A(32
—
16)
T=Smem
,
从源累加器中减去两操作数的
1
1
乘积
从
累加器中减去
T
寄存器值与
1
1
操作数的乘积
(
< br>带舍入
)
,
从累加器
B
中减去操作数与累
1
1
加器
A
高
位的乘积
从源累加器中减去
T
寄存器值
1
1
与
累加器
A
高位的乘积
从源累加器中减去
T
寄存器值
与累加器
A
高位的乘积
(
带舍
1
1
入
)
,
,<
/p>
操作数平方并累加
1
1
MASA T
,
< br>src[
,
dst]
dst=
src
—
T*A(32
—
16)
MASAR T
,
src[
,
dst]
dst=rnd
(src
—
T*A(32
—
16))
src=src+Smem*Smem
T=Smem
src=src
—
Smem*Smem
T=Smem
SQURA
Smem
,
src
SQURS
Smem
,
src
从累加器中减去操作数的平方
1
1
5.
双精度
(32
位操作数
)
指令
句
法
表
达
式
说
明
字
周
数
期
If C16=0
dst=Lmem+src
DADD Lmem
,
src[
,
If
C16=1
双精度
/
双
16
位数加到累加器
dst]
dst(39
—
16)=Lmem(31
—
16)+src(31
—
16)
dst(15
—
0)=Lmem(15
—
0)+src(15
—
0)
DADST Lmem
,
dst
If C16=0
1
1
双精度
/
双
16
位数与
T
寄存器值
1
1
dst=Lmem+(T<<16+T)
If C16=1
dst(39
—
16)=Lmem(3
1
—
16)+T
dst(15
—
0)=Lmem(15
—
< br>0)
—
T
相加
/
减
If C16=0
src=Lmem
—
src
双精度
/
双
16
位数中减去累加器
1
DRSUB
Lmem
,
src
If C16=1
值
src(39
—
16)=Lmem(31
—
16
)
—
src(31
—
< br>16)
src(15
—
0)=
Lmem(15
—
0)
—
src(15
—
0)
If
C16=0
dst=Lmem
—
(T
<<16+T)
DSADT
Lmem
,
dst
If C16=1
dst(39
—
16)=Lmem(3
1
—
16)
—
T
dst(15
—
0)=Lmem(
15
—
0)+T
1
长操作数与
T
寄存器值相加
/
减
1
1
DSUB Lmem
,
src
If C16=0
src=src
—
Lmem
从累加器中减去双精度
/
双
16
位
If C16=1
1
数
src(39
—
16)=src(31
—
16)
—
Lmem(31
—
< br>16)
src(15
—
0)=
src(15
—
0)
—
Lmem(15
—
0)
1
If C16=0
dst=Lmem
—
(T<<16+T)
DSUBT
Lmem
,
dst
If C16=1
dst(39
—
16)=Lmem(3
1
—
16)
—
T
dst(15
—
0)=Lmem(
15
—
0)
—
T
6.
专用指令
句
法
表
达
式
p>
从长操作数中减去
T
寄存器值
1
1
说
明
字
周
数
期
1
1
ABDST Xmem
,
Ymem B
=B+|A(32
—
16)|
,
A=(Xmem
—
Ymem)<<16
绝对距离
ABS
src[
,
dst]
CMPL
src[
,
dst]
DELAY
Smem
EXP src
dst=|src|
dst=
s
r
c
(Smem+1)=Smem
T=number of sign
bits(src)
—
8
———
累加器取绝对值
1
1
累加器取反
1
1
存储器单元延迟
1
1
求累加器的指数
1
1
对称
FIR
滤波
,
求最小均方值
2
3
1
1
FIRS Xmem
,
Ymem
,
B=B+A*pmad
,
A=(Xmem+Ymem)<<16
pmad
LMS Xmem
,
Ymem
MAX dst
MIN dst
NEG src[
,
dst]
B=B+Xmem*Ymem
A=(A+Xmem<<16)+215
dst=max(A
,
B)
dst=min(A
,
B)
dst=-src
求累加器
(A
p>
,
B)
最
1
1
大值
求
累加器
(A
,
B)
最
1
1
小值
累加器变负
1
1
NORM
src[
,
dst]
POL
Y Smem
RND
src[
,
dst]
SAT src
<
br>dst] <
br>, <
br>16
<
br>TC=Xmem(15
/[3
<
br>子 <
br>无 5?/3§ 地 <
br>— PC=IPTR(15 <
br>,
<
br>7)+K<<2
<
br>,
<
br>MMR <
br>instructions
<
br>,※延迟指令。 <
br>dst=Smem<
dst=src<
,
dst=n
orm(src
,
TS)
B=Sme
m<<16
,
A=rnd(A*T+B)
dst=src+215
saturate(src)
,
归一化
求多项式的值
1
1
1
1
累加器舍入运算
1
1
累加器饱和运算
1
1
求距离的平方
1
1
B=B+A(32
—
16)*A(32
—
16)
SQDST Xmem
,
Ymem
A=(Xmem
—
Ymem)<<16
二、逻辑运算指令
1.
与逻辑运算指令
句
法
AND Smem
,
src
表
达
式
src=src&Smem
说
明
操作数和累加器相与
字
周
数
期
1
1
2
2
1
2
AND #lk[
,
SHFT]
,
src[
,<
/p>
dst] dst=srclk<
AND #l
k
,
16
,
s
rc[
,
dst]
AND src[
,
SHIFT][
,
ANDM
#lk
,
Smem
2.
或逻辑运算指令
句
法
OR Smem
表
达
式
src=src|Smem
dst=srclk<<16
dst=dst&src<
Smem=Smemlk
长立即数移位后和累加器相与
2 <
/p>
长立即数左移
16
位后和累加器
2
相与
源累加器移位后和目的累加器
1
相与
操作数和长立即数相与
2
字
周
数
期
l
1
2
2
1
2
说
明
操作数和累加器相或
OR #lk[
,
SHFT]
,
src[
,
dst] dst=src|#lk<
长立即数移位后和累加器相或
2
OR #lk
,
16
src[
,
dst]
OR src[
,
SHIFT][
p>
,
dst]
ORM
#lk
,
Smem
3.
异或逻辑运算指令
句
法
XOR Smem
,
src
表
达
式
src=src
∧
Smem
∧
说
明
操作数和累加器相异或
dst=src|#lk<<16
dst=dst|src<
Smem=Smem|#lk
长立即数左移
位后和累加
2
器相或
源累加器移位后和目的累加器
1
相或
操作数和长立即数相或
2
字
周
数
期
1
1
2
2
1
2
周
XOR
#lk
,
[
,
SHFT]
,
src[
,
dst=src
dst]
#lk<
XOR #lk
,
16
,
src[
,
dst]
XOR src[
,
SHIFT][<
/p>
,
dst]
XORM
#lk
,
Smem
4.
移位指令
句
法
表
达
式
长立即数移位后和累加器相异或
2
长立即数左移
16
位后和累加器相
p>
2
异或
dst=src
∧
#lk<<16
dst=dst
src<
∧
源累加器移位后和目的累加器相
1
异或
2
字
Smem=Smem
∧
#lk
操作数和长立即数相异或
说
明
数
期
ROL src
ROLTC src
ROR src
Rotate left with carry in
Rotate left with TC in
Rotate right with carry in
累加器经进位位循环左
1
移
累加器经
TC
位循环左移
1
累加器经进位位循环右
1
移
累加器算术移位
1
1
1
字
周
数
期
1
l
2
1
2
1
1
1
1
1
1
1
dst=src<
SFTA src
,
SHIFT[
p>
,
dst]
shift}
SFTC src
5.
测试指令
句
法
表
达
式
SFTL src
,
SHIFT[
,
dst]
dst=src<
if
src(31)=src(30)then src=src<<1
累加器条件移位
累加器逻辑移位
说
明
BIT
Xmem
,
—
BITC)
测试指定位
BITC
BITF
Smem
,
TC=(Smemlk)
#lk
BITT
Smem
测试由立即数规定的
2
位域
测试由
T
寄存器指定
TC=Smem(15
—
T(3
—
O))
1
的位
存储单元与长立即数
2
比较
CMPM
Smem
,
TC=(Smem==#lk)
#lk
CMPR
CC
,
辅助寄存
器
ARx
与
Compare ARx with AR0
1
ARx
ARO
比较
三、程序控制指令
1.
分支转换指令
句
法
B[D] pmad
BACC[D] src
BANZ[D] pmad
,
Sind
表
达
式
PC=pmad(15
—
0)
PC=src(15
—
0)
if(Sind≠0)
PC=pmad(15
—
0)
说
明
无条件分支转移
字
周期
数
2
4/[2
※
]
按累加器规定的地址转
1
6/[4
※
]
移
then
辅助寄存器不为
O
就转
4?/2§<
/p>
/[2
2
移
※
]
then
条件分支转移
,
2
5?/3§
※
]
BC[D]
pmad
,
cond[
,
if(cond(s))
PC=pmad(15
—
0)
cond[
,
cond]]
FB[D] extpmad
FBACC[D] src
2.
调用指令
句
法
表
达
式
p>
PC=pmad(15
—
0)
XPC=pmad(22
—
16)
PC=src(15
—
0)
X
PC=src(22
—
16)
无条件远程分支转移
2
4/[2
※
]
,
按累加器规定的地址远
1
6/[4
※
]
程分支转移
字
周期
数
说
明
CALA[D] src
——
SP=
PC
,
PC=src(15
—
0)
按
累
加
器
规
定
的
地
址
调
用
1
程序
条
件
调
用
子
2
程序
,
有<
/p>
条
件
调
用
子
2
程序
6/[4
※
]
CALL[D] pmad
——
SP
=PC
,
PC=pmad(15
—
p>
0)
4/[2§
]
/[3
※
]
6/[4
※
]
CC[D] pmad
,
cond[<
/p>
,
cond[
,
if(cond(s))then
——
SP=PC
cond]]
PC=pmad(15
—
0)
FCALA[D] src
按
累
p>
加
器
规
定
——
SP=PC
,
——
SP=XPC
,
的
址
远
程
调
1
PC=src(15
—
0)
,
XPC=src(22
16)
用子程序
——
SP=PC
,
——
SP=XPC
PC=pmad(15
—
0)
XPC=pmad(22
—
16)
,
无
条
p>
件
远
程
调
2
,
用子程序
FCALL[D] extpmad
3.
中断指令
句
法
INTR K
表
达
式
4[2
※
]
说
明
字
周
数
期
3
3
——
SP=PC
,
—
7)+K<<2
不可屏蔽的软件中断,
关闭其他可屏蔽
1
INTM=1
中断
<
/p>
不可屏蔽的软件中断,
不影响
INTM<
/p>
位
1
说
明
远程返回
字数
周
期
1
6/[4
※
]
6/[4
※
]
TRAP K
——
SP=PC
,
PC=IPTR(15
—
4.
返回指令
句
法
FRET[D]
FRETE[D]
表
达
式
XPC=SP++
,
PC=SP++
XPC=SP++
,
PC=SP++<
/p>
,
开中断,从远程中断返回
1
INTM=O
条件返回
返回
开中断,从中断返回
1
1
1
RC[D]
cond[
,
cond[
,<
/p>
if(cond(s)) then PC=SP++
cond]]
RET[D]
RETE[D]
RETF[D]
5.
重复指令
句
法
RPT Smem
RPT #K
RPT #lk
RPTB[D] pmad
表
达
式
Repeat
single
,
RC=Smem
Repeat
single
,
RC=#K
Repeat
single
,
RC=#lk
PC=SP++
PC=SP++
,
INTM=O
p>
PC=RTN
,
SP++
INTM=O
5?3§
/[
3
※
]
5/[3
※
]
5/[3
※
]
3/[1
※
]
字
周
期
数
1
1
2
4/[2
※
]
2
开中断,从中断快速返回
1
说
明
p>
重
复
执
行
下
条
指
令
1
(Smem)+1
次
重复执行下条指令
k
十
1
次
1
重复执行下条指令
#lk+1
次
2
2
Repeat
block
,
RSA=PC+2[4#]
,
块重复指令
REA=pmad
—
1
RPTZ dst
,
#lk
Repeat single
,
RC=
#lk
,
dst=O
6.
堆栈管理指令
句
法
表
达
式
说
明
重复执行下条指令,累加器
2
清
O
字
周
数
期
FRAME K
SP=SP+K
,<
/p>
-
128≤k≤127
堆栈指针偏移一个立即数值
POPD
Smem
POPM
MMR
PSHD
Smem
PSHM
MMR
Smem=SP++
MMR=SP++
——
SP=Smem
——
SP=MMR
1
1
1
1
1
1
将数据从栈顶弹出至数据存储
1
器
将数据从栈顶弹出至
MMR
将数据压人堆栈
将
压人堆栈
1
1
l
7.
其他程序控制指令
句
法
IDLE K
表
达
式
p>
idle(K)
,
1≤k≤3
说
明
字
周
数
期
4
保持空转状态,
直到中断发
1
生
MAR Smem
If CMPT=0
,
then
modify ARx
,
ARP
is unchanged
If
CMPT=1
and
ARx≠AR0
,
then
modify
ARx
,
修改辅助寄存器
ARP=x
If
CMPT=1
and
ARx=AR0
,
then
modify
AR(ARP)
,
ARP is unchanged
no
operation
software reset
STN(SBIT)=0
STN(SBIT)=1
空操作
软件复位
状态寄存器位复位
状态寄存器位置位
1
1
NOP
RESET
RSBX N
,
SBIT
SSBX N
,
SBIT
1
1
1
1
1
1
3
1
1
1
If(cond(s))then
execute
the
next
n
XC n
,
cond[
,
cond[
,
cond]]
有条件执行
;
n=1or2
注:
?
条件
―
真
‖
,
§
条件
―
假
‖
四、加载和存储指令
1.
加载指令
句
法
表
达
式
说
明
双精度
/
双
16
位长字加载累加器
将操作数加载到累加器
字数
周期
1
1
1
1
1
1
2
DLD
Lmem
,
dst=Lmem
dst
LD Smem
,
dst
dst=Smem
LD
Smem
,
dst=Smem<
TS
,
dst
LD
Smem
,
dst=Smem<<16
16
,
dst
LD
Smem[
,
操作数按
TREG(
5
~
0)
移位后加载到累加器
1
操作数左移
16
位后加载累加器
操作数移位后加载累加器
1
2
-
-
-
-
-
-
-
-
-
上一篇:变量、函数、运算符(答案)
下一篇:英语圣诞活动文案