以下为《[附录2] TMS320C54X指令速查表》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
§6.2 [附录2] TMS320C54X指令速查表
TMS320C54X指令一共有129条,按功能分为算术指令、逻辑指令、程序控制指令、存储和装入指令、单个循环指令5类。
要读懂指令系统,首先须理解其中的符号所代表的意义,见下表:
符号
意义
A
累加器A
ACC
累加器
ACCA
累加器A
ACCB
累加器B
ALU
算术逻辑单元
ARx
特指某个辅助寄存器(0≤x≤7)
ARP
ST0中的辅助寄存器指针位;这3位指向当前辅助寄存器(AR)
ASM
ST1中的5位累加器移位方式位(-16≤ASM≤15)
B
累加器B
BRAF
ST1中的块循环有效标志
BRC
块循环计数器
BITC
4位某某决定位测试指令对指定的数据存储器值的哪一位进行测试
C16
ST1中的双16位/双精度算术方式位
C
ST0中的进位位
CC
2位条件代码(0≤CC≤3)
CMPT
ST1中的兼容方式位
CPL
ST1中的编译方式位
Cond
操作数表示条件执行指令使用的条件
[d], [D]
延迟方式
DAB
D数据总线
DAR
DAB地址寄存器
dmad
16位立即数表示的数据存储器地址(0≤dmad≤65535)
Dmem
数据存储器操作数
DP
ST0中的9位某某据存储器页指针(0≤DP≤511)
dst
目的累加器(A或B)
dst_
另一个目的累加器
EAB
E地址总线
EAR
EAB地址寄存器
extpmad
23位立即数表示的程序存储器地址
FRCT
ST1中的分数方式位
hi (A)
累加器A的高端(31-16位)
HM
ST1中的保持方式位
IFR
中断标志寄存器
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
存储器映射寄存器,AR0-AR7或SP
n
紧跟XC指令的字数,n=1或2
N
指定在RSBX,SSBX和XC指令中修改的状态寄存器(ST0或ST1)
OVA
ST0中的累加器A的溢出标志
OVB
ST0中的累加器B的溢出标志
OVdst
目的累加器(A或B)的溢出标志
OVdst_
目的累加器反(A或B)的溢出标志
Ovsrc
源累加器(A或B)的溢出标志
OVM
ST1中的溢出方式位
PA
16位立即数表示的端口地址(0≤PA≤65535)
PAR
程序地址寄存器
PC
程序计数器
pmad
16位立即数表示的程序存储器地址(0≤pmad≤65535)
Pmem
程序存储器操作数
PMST
处理器方式状态寄存器
prog
程序存储器操作数
[R]
凑整选项
md
凑整
RC
循环计数器
RTN
在指令RETF[D]中使用的快速返回寄存器
REA
块循环结束地址寄存器
RSA
块循环开始地址寄存器
SBIT
4位某某指明在指令RSBX,SSBX和XC中修改的状态寄存器位某某 (0≤SBIT≤15)
SHFT
4位移位某某(0≤SHFT≤15)
SHIFT
5位移位某某(-16≤SHIFT≤15)
Sind
使用间接寻址的单数据存储器操作数
Smem
16位单数据存储器操作数
SP
堆栈指针
src
源累加器(A或B)
ST0
状态存储器0
ST1
状态存储器1
SXM
ST1中的符号扩展方式位
T
暂存器
TC
ST0中测试/控制标志位
TOS
堆栈栈顶
TRN
状态转移寄存器
TS
T寄存器的5-0位确定的移位某某(-16≤TS≤31)
uns
无符号的数
XF
ST1中的外部标志状态位
XPC
程序计数器扩展寄存器
Xmem
在双操作数指令和一些单操作数指令中使用的16位双数据存储器操作数
Ymem
在双操作数指令使用的16位双数据存储器操作数
1. 算术运算指令
(1) 加法指令
ADD Smem, src
与ACC相加
ADD Smem, TS, src
操作数移位后加到ACC中
ADD Smem, 16, src[,dst]
把左移16位的操作数加到ACC中
ADD Smem, [,SHIFT], src[,dst]
把移位后的操作数加到ACC中
ADD Xmem, SHFT, src
把移位后的操作数加到ACC中
ADD Xmem, Ymem, dst
把两个操作数分别左移16位,然后相加
ADD # lk [,SHFT], src [,dst]
长立即数移位后加到ACC中
ADD # lk, 16, src[,dst]
把左移16位的长立即数加到ACC中
ADD src, [,SHIFT][,dst]
移位再相加
ADD src, ASM[,dst]
移位再相加,移动位某某为ASM的值
ADDC Smem, src
带有进位位的加法
ADDM # lk, Smem
把长立即数加到存储器中
ADDS Smem, src
带符号扩展的加法
(2)减法指令
SUB Smem, src
从累加器中减去一个操作数
SUB Smem, TS, src
移位后再与ACC相减
SUB Smem, 16, src[,dst]
把左移16位的操作数与ACC相减
SUB Smem, [,SHIFT], src[,dst]
把移位后的操作数与ACC相减
SUB Xmem, SHFT, src
把移位后的操作数与ACC相减
SUB Xmem, Ymem, dst
把两个操作数分别左移16位,然后相减
SUB # lk [,SHFT], src [,dst]
长立即数移位后与ACC相减
SUB # lk, 16, src[,dst]
把左移16位的长立即数与ACC相减
SUB src, [,SHIFT][,dst]
移位再相减
SUB src, ASM[,dst]
移位再相减,移动位某某为ASM的值
SUBB Smem, src
带有借位位的加法
SUBC Smem, src
条件减法
SUBS Smem, src
带符号扩展的减法
(3)乘法指令
MPY Smem, dst
T寄存器与单数据存储器操作数相乘
MPYR Smem, dst
T寄存器带四舍五入与单数据存储器操作数相乘
MPY Xmem, Ymem, dst
两个数据存储器操作数相乘
MPY Smem, # lk, dst
长立即数与单数据存储器操作数相乘
MPY # lk, dst
长立即数与T寄存器的值相乘
MPYA dst
ACCA的高端与T寄存器的值相乘
MPYA Smem
单数据存储器操作数与ACCA的高端相乘
MPYU Smem, dst
T寄存器的值与符号数相乘
SQUR Smem, dst
单数据存储器操作数的平方
SQUR A, dst
ACCA的高端的平方
(4)乘加与乘减指令
MAC Smem, src
与T寄存器相乘再加到ACC中
MAC Xmem, Ymem src[,dst]
双操作数相乘再加到ACC中
MAC # lk, src[,dst]
T寄存器与长立即数相乘再加到ACC中
MAC Smem, # lk, src[,dst]
与长立即数相乘再加到ACC中
MACR Smem, src
带四舍五入与T寄存器相乘再加到ACC中(凑整)
MACR Xmem, Ymem,src [,dst]
带四舍五入双操作数相乘再加到ACC中( 凑整)
MACA Smem, [,B]
与ACCA的高端相乘再加到ACCB中
MACA T, src[,dst]
T寄存器与ACCA的高端相乘再加到ACC中
MACAR Smem[,B]
带四舍五入与ACCA的高端相乘再加到ACCB (凑整)
MACAR T, src[,dst]
T寄存器带四舍五入与ACCA高端相乘,再加到ACC中(凑整)
MACD Smem, pmad, src
带延时的与程序寄存器值相乘再累加
MACP Smem, pmad, src
与程序寄存器值相乘再累加
MACSU Xmem, Ymem, src
带符号数与无符号数相乘再累加
MAS Smem, src
与T寄存器相乘再与ACC相减
MASR Smem, src
带四舍五入与T寄存器相乘再与ACC相减(凑整)
MAS Xmem, Ymem, src[,dst]
双操作数相乘再与ACC相减
MASR Xmem, Ymem, src[,dst]
双操作数带四舍五入相乘再与ACC相减
MASA Smem [,B]
从ACCB中减去单数据存储器操作数与ACCA的乘积
MASA T, src[,dst]
从src中减去ACCA高端与T寄存器的乘积
MASAR T, src[,dst]
从src中减去ACCA高端与T寄存器的乘积(凑整)
SQURA Smem, src
平方后累加
SQURS Smem, src
平方后相减
(5)双操作数指令
DADD Lmem, src[,dst]
双重加法
DADST Lmem, dst
T寄存器与长立即数的双重加法和减法
DRSUB Lmem, src
长字的双16位减法
DSADT Lmem, dst
T寄存器与长操作数的双重减法
DSUB Lmem, src
ACC的双精度/双16位减法
DSUBT Lmem, dst
T寄存器和长操作数的双重减法
(6)特殊应用指令
ABDST Xmem, Ymem
求绝对值
ABS src[,dst]
ACC的值取绝对值
CMPL src[,dst]
求累加器值的反码
DELAY Smem
存储器延迟
EXP src
求累加器指数
FIRS Xmem, Ymem, pmad
对称有限冲击响应滤波器
LMS Xmem, Ymem
求最小均方某某
MAX dst
求累加器的最大值
MIN dst
求累加器的最小值
NEG src[,dst]
求累加器的反值
NORM src[,dst]
归一化
POLY Smem
求多项式的值
RND src[,dst]
求累加器的四舍五入值
SAT src
对累加器的值做饱和计算
SQDST Xmem, Ymem
求两点之间距离的平方
2.逻辑指令
(1)与指令
AND Smem, src
单数据存储器读数和ACC相与
AND # lk[,SHFT], src[,dst]
长立即数移位某某ACC相与
AND # lk, 16, src[,dst]
长立即数左移16位某某ACC相与
AND src[,SHIFT] [,dst]
累加器的值移位后相与
ANDM # lk, Smem
单数据存储器操作数与长立即数相与
(2)或指令
OR Smem, src
单数据存储器读数和ACC相或
OR # lk[,SHFT], src[,dst]
长立即数移位某某ACC相或
OR # lk, 16, src[,dst]
长立即数左移16位某某ACC相或
OR src[,SHIFT] [,dst]
累加器的值移位后相或
ORM # lk, Smem
单数据存储器操作数与长立即数相或
(3)异或指令
XOR Smem, src
单数据存储器读数和ACC相异或
XOR # lk[,SHFT], src[,dst]
长立即数移位某某ACC相异或
XOR # lk, 16, src[,dst]
长立即数左移16位某某ACC相异或
XOR src[,SHIFT] [,dst]
累加器的值移位后相异或
XORM # lk, Smem
单数据存储器操作数与长立即数相异或
(4)移位指令
ROL src
累加器值循环左移
ROL TC src
累加器值带TC位循环左移
ROR src
累加器值循环右移
SFTA src, SHIFT[,dst]
累加器值算术移位
SFTC src
累加器值条件移位
SFTL src, SHIFT[,dst]
累加器值逻辑移位
(5)测试指令
BIT Xmem, BITC
测试指定位
BITF Smem, # lk
测试由立即数指定位
BITF Smem
测试由T寄存器指定位
CMPM Smem, # lk
比较单数据存储器操作数和立即数的值
CMPR CC, ARx
辅助寄存器ARx和AR0相比较
3.程序控制指令
(1)分支指令
B[D] pmad
可以选择延时的无条件转移
BACC[D] src
可以选择延时的指针指向的地址
BANZ[D] pmad, Sind
当AR不为0时转移
BC[D] pmad, cond[,cond[,cond]]
可以选择延时的条件转移
FB[D] extpmad
可以选择延时的远程无条件转移
FBACC[D] src
远程转移到ACC所指向的地址
(2)调用指令
CALA[D] src
可选择延时的调用ACC所指向的子程序
CALL[D] pmad
可选择延时的无条件调用
CC[D] pmad,cond[,cond[,cond]]
可选择延时的条件调用
FCALA[D] src
可选择延时的远程无条件调用
FCALL[D] extpmad
可选择延时的远程条件调用
(3)中断指令
INTRK
软件中断
TRAPK
软件中断
(4)返回指令
FRET[D]
可选择延时的远程返回
FRETE[D]
可选择延时的远程返回,且允许中断
RC[D] cond[,cond[,cond]]
可选择延时的条件返回
RET[D]
可选择延时的无条件返回
RETE[D]
可选择延时的无条件返回,且允许中断
RETF[D]
可选择延时的快速无条件返回,且允许中断
(5)重复指令
RPT Smem
循环执行下一条指令,计数为单数据存储器操作数
RPT # k
循环执行下一条指令,计数为短立即数
RPT # lk
循环执行下一条指令,计数为长立即数
RPTB[D] pmad
可以选择延时的块循环
RPTZ dst, # lk
循环执行下一条指令且对ACC清0
(6)堆栈操作指令
FRAME K
堆栈指针加上立即数的值
POPD Smem
把数据从栈顶弹入数据存储器
POPM MMR
把数据从栈顶弹入存储器映射寄存器
PSHD Smem
把数据存储器值压入堆栈
PSHM MMR
把存储器映射寄存器值压入堆栈
(7)其他程序控制指令
IDLE k
保持空闲状态直到有中断产生
MAR Smem
修改辅助寄存器
NOP
无任何操作
RESET
软件复位
RSBX N, SBIT
状态寄存器复位
SSBX N, SBIT
状态寄存器置位
XC n, cond[,cond[,cond]]
条件执行
4.装入指令
(1)存储指令
DST src, Lmem
把累加器的值存放到长字中
ST T, Smem
存储T寄存器的值
ST TRN, Smem
存储TRN的值
ST # lk, Smem
存储长立即操作数
STH src, Smem
把累加器的高端存放到数据存储器中
STH src, ASM, Smem
ACC的高端移位后存放到数据存储器中,移动位某某由ASM决定
STH src, SHFT, Xmem
ACC的高端移位后存放到数据存储器中
STH src[,SHIFT], Smem
ACC的高端移位后存放到数据存储器中
STL src, Smem
把累加器的低端存放到数据存储器中
STL src, ASM, Smem
ACC的低端移位后存放到数据存储器中,移动位某某由ASM决定
STL src, SHFT, Xmem
ACC的低端移位后存放到数据存储器中
STL src[,SHIFT], Smem
ACC的低端移位后存放到数据存储器中
STL M src, MMR
把累加器的低端存放到存储器中
STM # lk, MMR
把累加器的低端存放到存储器映射寄存器中
(2)装入指令
DLD Lmem, dst
把长字装入累加器
LD Smem, dst
把操作数装入累加器
LD Smem, TS, dst
操作数移位后装入ACC
LD Smem, 16, dst
把操作数左移16位后装入ACC
LD Smem[,SHIFT], dst
操作数移位后装入ACC
LD Xmem, SHFT, dst
操作数Xmem移位后装入ACC
LD # K, dst
把短立即操作数装入ACC
LD # lk[,SHFT], dst
长立即操作数移位后装入ACC
LD # lk, 16, dst
长立即操作数左移16位后装入ACC
LD src, ASM[,dst]
累加器移动由ASM决定的位某某
LD src[, SHIFT], dst
累加器移位
LD Smem, T
把单数据存储器操作数装入T寄存器
LD Smem, DP
把单数据存储器操作数装入DP
LD # k9, DP
把9位操作数装入DP
LD # k5, ASM
把5位操作数装入累加器移位方式寄存器中
L 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 器相比较
DST
长字(32位)存储
FB[D]
无条件远程跳转
FBACC[D]
远程跳转至累加器所指定的位置
FCALA[D]
远程调用子循环,地址由累加器所指定
FCALL[D]
无条件远程调用
FRET[D]
远程返回
FRETE[D]
中断使能并从中断中远程返回
IDLE
IDLE指令
INTR
中断
LD ARP
调用辅助寄存器指针
LD DP
调用数据页指针
MVMM
MMR之间的移动
ORM
数据存储器与长立即数相与
RC[D]
条件返回
RESET
软件复位
RET[D]
无条件返回
RETF[D]
从中断返回
RND
累加器求余
RPT
重复执行下一条指令
RPTB[D]
块重复
RPTZ
重复下一条指令并清除累加器
RSBX
复位状态寄存器中的位
SSBX
置位状态寄存器中的位
TRAP
软件中断
XC
条件执行
XORM
长立即数和数据存储器相异或
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]
以上为《[附录2] TMS320C54X指令速查表》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。