DSP指令一览表
第五章 DSP的汇编指令..
第五章 TMS320C55x系列DSP的汇编指令
(2) 用户自定义的双指令的并行
这两条指令的并行是通过用户或C编译器定义的。两条指令 同时执行两个操作,用并行符“||”区分并行执行的两条指令。 例:
MPYM *AR1+, *CDP, AC1 ;D单元的一个MAC来完成
||XOR AR2,T1
;A单元的ALU来完成
第五章 TMS320C55x系列DSP的汇编指令
1、高速数字信号处理中常采用汇编语言编程。 2、汇编语言中的两种指令集 (1) 助记符指令集:有助于记忆的符号来表示指令。 (2) 代数指令集:类似于代数表达式,运算关系清楚明了。 注意:DSP的软件开发工具只支持单一的指令形式,不支持助记
符指令和代数指令的混合形式。 3、术语、符号和缩写见P93的表5-1 4、运算符见表5-2
令执行的条件:
TCx(测试/控制标志为1) !TCx(测试/控制标志为0)
TC1&TC2 TC1&!TC2 TC1|TC2 TC1|!TC2 TC1^TC2 TC1^!TC2
!TC1&TC2 !TC1&!TC2 !TC1|TC2 !TC1|!TC2 !TC1^TC2 !TC1^!TC2
第五章 TMS320C55x系列DSP的汇编指令
4、双16比特算术指令: [(1)语法、(2)操作数、(3)状态位] 在D单元中利用其ALU的双16比特模式,同时执行(并行)两个16
比特算术运算,包括加-减、减-加、两个加和两个减运算。
例:
说明: NO:不能并行执行 3:指令的长度为3字节 1:周期为1 X:在X(执行)流水线阶段处理
D – ALU:在D单元ALU执行。 执行结果:AC0=(*AR3)+CARRY+AC1 状态位: Affected by CARRY,C54CM,M40等
dsp汇编指令系统介绍(精)
汇编指令集本节根据指令的功能来分,提供六张表来说明指令集的概况:累加器、算数和逻辑指令(表2);辅助寄存器和数据页指针指令(表3);TREG、PREG和乘法指令(表4);转移指令(表5);控制指令(表6);I/O和存储器操作(表7)。
在每张表中,指令按字母顺序排列。
执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。
编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。
由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。
为了参照起见,我们先定义这六张概述表的符号意义:ACC 累加器。
ARBITXCM 辅助寄存器。
4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。
2位数值,CMPR指令执行CM值所声明的比较:若CM=00,测试当前AR=AR0否;若CM=01,测试当前AR<AR0否;若CM=10,测试当前AR>AR0否;若CM=11,测试当前AR≠AR0否。
ShiftTP 4位右移量。
用于条件执行指令的2位数值,代表如下4种条件:若BIO引脚为低,TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=11。
ARX 用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。
52表2 累加器、算数和逻辑指令 ABS周期|(ACC)|→ACC 1(ACC)+(数据存储器地址)×12shift→ACC(ACC)+(数据存储器地址)×216→ACC 1(ACC)+k→ACC 1shift(ACC)+lk×2→ACC 2指令功能(ACC)+(数据存储器地址)+(C)→ACC寻址方式直接/间接直接/间接短立即数长立即数指令说明ACC取绝对值移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。
DSP编程指令全集
Add to Accumulator Short Immediate
TMS320C1x devices: Add an 8-bit immediate value to the accumulator. TMS320C2x, TMS320C2xx, and TMS320C5x devices: Add an 8-bit immediate value, right-justified, to
ADRK# k
Add to Auxiliary Register Short Immediate
Add an 8-bit immediate value to the current auxiliary register.
ANDdma
AND{ind} [ ,next ARP]
AND# lk [ ,shift]
ADDTdma
ADDT{ind} [ ,next ARP]
Add to Accumulator With Shift Specified by T Register
Left-shift the contents of the addressed data memory location by the value in the 4 LSBs of the T register; add the result to the accumulator. If a shift is specified, leftshift the data before the add. During shifting, low-order bits are zero-filled, and high-order bits are sign-extended if SXM = 1. TMS320C2xx and TMS320C5x devices: If the result of
DSP汇编指令索引
指令
指令
隐含并行
105
算 术 运 算 指 令
绝对值 FIR滤波 最小均方 补码 归一化 饱和和舍入 平方距离 位域比较 位域抽取 位域扩展
107 108 109 109 109 110 110 111 111 111
位 操 作 指 令
存储器位操作
112
寄存器位操作
113
状态位设置 扩展辅助 寄存器操 作指令 按位与/或 /异或/取反 位计数 逻辑移位 循环移位
114
115 116 117 118
逻辑运 算指令
TMS320C55x的指令系统 Page 累加器、辅助寄 MOV 存器或临时寄存 SWAP 119 器装载、存储、 SWAPP 移 移动、和交换 SWAP4 动 存储单元间的移 DELAY 122 指 动及初始化 MOV 令 POP 入栈和出栈 122 PSH CPU寄存器装载、 124 MOV 存储和移动 B 跳转 127 BCC CALL CALLCC 调用与返回 128 RET RETCC INTR 程 中断与返回 128 TRAP 序 RETI 控 PRT 制 PRTADD 指 PRTSUB 重复 128 令 PRTCC PRTB PRTBLOCAL XCC 条件执行 XCCPART 129 IDLE 空闲 空操作 NOP 软件复位 RESET
指令
TMS320C55x的指令系统
Page MPYM::MOV MACM::MOV MASM::MOV ADD::MOV SUB::MOV MOV::MOV ABS FIRSADD FIRSSUB LMS NEG MANT ::NEXP EXP SAT ROUND SQDST BAND BFXTR BFXPA BTST BNOT BCLR BSET BTSTSET BTSTCLR BTSTNOT BTST BNOT BCLR BSET BTSTP BCLR BSET MOV AMAR AMOV POPBOTH PSHBOTH NOT AND/OR/XOR BCNT SFTL ROL
DSP指令一览表
SUBXmem,SHFT,srcsrc=src—Xmem<<SHFT操作数移位后与累加器相减11
SUBXmem,Ymem,dstdst=Xmem<<16—Ymem<<16两个操作数分别左移16位后相减11
MPYXmem,Ymem,dst dst=Xmem*Ymem,T=Xmem两个操作数相乘11
MPYSmem,#lk,dstdst=Smem*#lk,T=Smem长立即数与操作数相乘22
MPY#lk,dstdst=T*#lk长立即数与T寄存器值相乘22
MPYAdstdst=T*A(32-16)T寄存值与累加器A高位相乘11
SUB#lk[,SHFT],src[,dst]dst=src—#1k<<SHFT长立即数移位后与累加器相减22
SUB#lk,16,src[,dst]dst=src—#1k<<16长立即数左移16位后与累加器相减22
SUBsrc[,SHIFT][,dst]dst=dst—src<<SHIFT源累加器移位后与目的em<<16,A=rnd(A*T+B)求多项式的值11
RNDsrc[,dst]dst=src+215累加器舍入运算11
SATsrcsaturate(src)累加器饱和运算11
SQDSTXmem,YmemB=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<<16求距离的平方11
1
4. 乘法累加/减指令
句法表达式说明
字
数
周
DSP指令一览表
DSP指令一览表附录6 TMS320C54x 指令系统一览表按指令功能排列
一、算术运算指令
1. 加法指令
2. 减法指令
3. 乘法指令
4. 乘法累加/减指令
5. 双精度32位操作数指令
6. 专用指令
二、逻辑运算指令
1. 与逻辑运算指令
2. 或逻辑运算指令
3. 异或逻辑运算指令
4. 移位指令
5. 测试指令
三、程序控制指令
1. 分支转换指令
2. 调用指令
注:条件“真”,§条件“假”,※延迟指令;
3. 中断指令
4. 返回指令
注:条件“真”,§条件“假”,※延迟指令;
5. 重复指令
注:条件“真”,§条件“假”,※延迟指令;
6. 堆栈管理指令
7. 其他程序控制指令
注:条件“真”,§条件“假”,※延迟指令;
四、加载和存储指令
1. 加载指令
2. 存储指令
3. 条件存储指令
4. 并行加载和存储指令
5. 并行加载和乘法指令
6. 并行存储和加 / 减法指令
7. 并行存储和乘法指令
8. 其他加载和存储指令。
DSP指令一览表
无符号数乘法
11
SQUR Smem,dst
dst=Smem*Smem,T=Smem 操作数的平方
11
SQUR A,dst
dst=A(32—16)*A(32—16) 累加器 A 的高位平方
11
1
4. 乘法累加/减指令
句法
表达式
说明
字周 数期
MAC Smem,src
src=src+T*Smem
操作数与 T 寄存器值相乘后加到累加器
操作数移位后加至累加器 操作数左移 16 位加至累加器
11 11
ADD Smem[,SHIFT],src[,dst] dst=src+Smem<<SHIFT 操作数移位后加到累加器
22
ADD Xmem,SHFT,src
src=src+Xmem<<SHFT 操作数移位后加到累加器
11
ADD Xmem,Ymem,dst
, 操作数与累加器 A 高位相乘后加到累加器 B 1 1
MACA T,src[,dst]
dst=src+T*A(32—16)
T 寄存器值与累加器 A 高位相乘
11
MACAR Smem[,B]
B=rnd(B+Smem*A(32—16)) , T 寄存器值与累加器 A 高位相乘后加到累加
T=Smem
B(带舍入)
11
SUB Xmem,Ymem,dst
dst=Xmem<<16—Ymem<<16 两个操作数分别左移 16 位后相减
11
SUB #lk[,SHFT],src[,dst] dst=src—#1k<<SHFT
第三章DSP汇编指令
if 0≤ index+step < BK: index = index + step
else if index + step ≥ BK: index = index + step - BK
else if index + step< 0 index = index + step + BK
只有8条指令能使用存储器映射寄存器寻址:
LDM MMR, dst MVDM dmad, MMR MVMD MMR, dmad MVMM MMRx, MMRy POPM MMR PSHM MMR STLM src, MMR STM #lk, MMR
7. 堆栈寻址
系统堆栈用来在中断和子程序期间自动存放程序计数器。 它也能用来存放额外的数据项或传递数据值。处理器使用一 个16-bit的存储器映射寄存器—堆栈指针来对堆栈寻址,它 总是指向存放在堆栈中的最后一个元素。
2、调用与中断指令
3、返回指令
4、重复指令和堆栈操作指令
四、装入和存储指令
装入和存储指令包括:
一般的装入和存储指令 条件存储指令 并行装入和存储指令 并行装入和乘法指令 并行存储和加件乘指令 混合装入和存储指令
1、一般的装入指令
2、存贮指令
3 并行装入和存储指令 4、条件存储指令
共有四条使用堆栈寻址方பைடு நூலகம்访问堆栈的指令:
PSHD 把一个数据存储器的值压入堆栈。 PSHM 把 一 个 存 储 器 映 射 寄 存 器 的 值 压 入 堆 栈 。 POPD 把一个数据存储器的值弹出堆栈。 POPM 把一个存储器映射寄存器的值弹出堆栈。
§3-2 特殊寻址方式说明
DSP汇编指令总结
DSP汇编指令引言DSP是指数字信号处理器,是一种专门用于数字信号处理的微处理器。
DSP汇编指令是在DSP芯片上执行操作的命令。
这篇文档将常见的DSP汇编指令及其使用方法。
通用指令MOVMOV是Move的缩写,指将数据从一个寄存器移动到另一个寄存器或内存地址中。
它有很多不同的格式,例如:MOV R1, #0 ; 将0存储在R1寄存器中MOV R2, R1 ; 将R1寄存器中的值复制到R2寄存器中MOV @R3, R2 ; 将R2寄存器中的值存储在R3指向的内存地址中ADD和SUBADD和SUB分别表示加法和减法运算。
它们也有不同的格式,例如:ADD R1, R2 ; 将R2寄存器中的值加到R1寄存器中ADD R1, #2 ; 将2加到R1寄存器中SUB R1, R2 ; 将R2寄存器中的值从R1寄存器中减去AND和ORAND和OR分别表示按位与和按位或运算。
它们也有不同的格式,例如:AND R1, R2 ; 将R1寄存器和R2寄存器中的值按位与后存储在R1寄存器中OR R1, R2 ; 将R1寄存器和R2寄存器中的值按位或后存储在R1寄存器中CMPCMP是Compare的缩写,用于比较两个值。
它会将两个操作数相减,并设置相关的标志位。
它的格式如下:CMP R1, R2 ; 比较R1和R2寄存器中的值跳转指令JMPJMP是Jump的缩写,用于无条件跳转到目标地址。
它的格式如下:JMP label ; 跳转到标签为label的位置JNZ和JZJNZ和JZ分别表示如果结果不为零则跳转和如果结果为零则跳转。
它们的格式如下:JNZ label ; 如果前一条CMP指令比较结果不为零,则跳转到标签为label的位置JZ label ; 如果前一条CMP指令比较结果为零,则跳转到标签为label的位置JGE和JLEJGE和JLE分别表示如果大于或等于则跳转和如果小于或等于则跳转。
它们的格式如下:JGE label ; 如果前一条CMP指令比较结果大于或等于,则跳转到标签为label的位置JLE label ; 如果前一条CMP指令比较结果小于或等于,则跳转到标签为label的位置循环指令DJNZDJNZ是Decrement and Jump if Not Zero的缩写,表示如果操作数不为零则减1并跳转到目标地址。
DSP常用汇编语言指令简介
;指定当前工作寄存器
MAR *+,AR1 ;把当前寄存器AR0的内容加
间接寻址方式 TMS320LF240X中八个辅助寄存器(AR0-AR8) 提供了灵活而强大的间接寻址能力,在使用时,包 括: (1)设置辅助寄存器指针(ARP) 例如: MAR *,AR1 LDP #04H LAR AR1,0 ;指明当前寄存器为AR1 ;指明当前数据页码 ;把地址为200H单元内容 ;装载入AR1寄存器
南航自动化学院DSP技术应用实验 室
直接寻址方式 使用直接寻址方式时,包括: (1)设置数据页 例如:LDP #4 ; 指向第4个数据页 (2)指明偏移量 例如: LDP #4 ;指向第4个数据页 ADD 1 ; 把地址为204h的数据单元内 ; 容加到累加器内
南航自动化学院DSP技术应用实验 室
2. 工作寄存器等指令举例
Example1:MAR *+,AR1;把当前工作寄 存器的内容加1,然后再改变工作寄存器为 AR1。 Example2:LAR AR4,#8123h;把AR4的 值改变为立即数。 LAR AR0,16;(DP=6)把 地址=310H的内存单元内容装入AR0。 Example3:SAR AR0,*+;(如果当前工 作寄存器=AR1)把AR0的内容拷贝到AR1 南航自动化学院DSP技术应用实验 指向的内存单元。 室
4. 转移指令举例
南航自动化学院DSP技术应用实验 室
EQ NEQ LT LEQ GT GEQ NC C NOV BIO NTC TC UNC
ACC = 0 ACC <>0 ACC < 0 ACC <=0 ACC > 0 ACC >=0 C=0 C=1 OV = 0 BIO_ low TC = 0 TC = 1
DSP指令解释
word格式-可编辑-感谢下载支持1.STM #8765,*AR7+ 把立即数8765存放到AR7所指定的数据存储单元中去2.MPY #-2,A 立即数-2与T寄存器中的值相乘,并将乘积装入累加器A中3.MVPD TABLE,*AR1+把中TABLE标注的程序存储器单元地址中的一个字复制到由AR4所指定的数据存储单元中去。
4.BC new,AOV 若累加器A溢出,则跳转至new5.BC new,AGT 若累加器A中的值大于0,则跳转至new6.STL A,*AR1+ 把累加器A低端存放到AR1所指定的数据存储单元中7.PRTZ A,#4 对A清零并设置重复执行下条指令5次8.ADD *AR4,16,B,A将AR4所指定的数据存储单元中的值左移16后的值与累加器B中的值相加,并把结果装入累加器A中9.SUB *AR3+,14,A 累加器A中的值减去AR3所指定的数据存储单元中的数左移14位后的值,并将结果装入累加器A中。
即:从累加器A中减去AR3所指定的数据存储单元中的数左移14位后的值的值。
10.MAC #345H,A,B将T寄存器中的值与立即数345的乘积加上累加器A中的值所得到的和装入累加器B中。
11.STA, *AR4-(ASM=0)将累加器A中的值存储到AR4所指向的数据存储单元中。
12.MAC *AR3+,*AR4+,A,BAR3所指定数据存储单元中的值与AR4所指定数据存储单元中的值相乘,将乘积与累加器A中的值相加所得到的和装入累加器B中13.SUB #12345,8,A,B把累加器A中的值与立即数12345左移8位后的值相减所得到的差装入累加器B14.RPT #99NOP重复执行NOP指令100次15.MVDD *AR3+,*AR5+将AR3所指定的数据存储单元中的值传送到AR5指定的数据存储单元中。
16.CALA A 用累加器A的滴16位加载PC17.ST T,*AR7- T寄存器高端移位后存储到AR7所指定的数据存储单元中。
DSP指令集
说明
INT4 0008H
0035H 0036H 0037H 0038H 0005H 0006H
低优先级SPI中断 低优先级SCI接收中断 低优先级SCI发送中断 低优先级CAN邮箱中断 低优先级CAN错误中断 低优先级ADC中断 低优先级外部中断 分析中断 TRAP命令 假中断 软件中断向量
INT5 000AH
INT3 0006H
002EH 0039H 003AH 003BH 003CH
中断优先级和中断向量表
优先 级
36 37 38 39 40 41 42 43 44 45 46 47 48 49
中断名称
CAP1INT CAP2INT CAP3INT CAP4INT CAP5INT CAP6INT SPIINT RXINT TXINT CANMBINT CANERINT ADCINT XINT1 XINT2 保留 TRAP 假中断向量 INT81INT16 INT20-INT31
CPU中断 向量地址
RS 0000H 0026H NMI 0024H
外设中ቤተ መጻሕፍቲ ባይዱ向 可屏 外设中断源 量偏移地址 蔽否
N N N 0020H 0019H 0004H 0001H Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y CPU 用于仿真
INT1 0002H
0011H 0005H 0006H 0007H 0040H 0041H 0021H 0022H 0023H 0027H 0028H 0029H
INT2 0004H
002AH 0024H 0025H 0026H 002FH 0030H 0031H 0032H 002BH 002CH 002DH
DSP第五章 DSP的汇编指令
展和移位操作都以第31比特为准。
M40=1时,D单元按40位运算模式,因此累加器溢出,进位,符号扩
展和移位操作都以第39比特为准。
BCLR M40
; Clear M40
BSET M40
; Set M40
第五章 TMS320C55x系列DSP的汇编指令
2、累加器溢出状态(ACOVx)
当AC0~AC3寄存器溢出时,目的累加器的溢出状态位ACOV0~3被置1。 以下情况会清零ACOVx位
复位; CPU执行一个跳转,条件调用,条件返回或执行一条测试ACOVx的指令; 通过BCLR指令清除; 溢出位检测受ST1_55中的M40位影响,即:
第五章 TMS320C55x系列DSP的汇编指令
(3)内置并行指令与用户自定义并行指令的混合形式 在不引起资源冲突的情况下,将隐含并行的指令按用户自定义 方式与另一条指令并行执行。例:
MPY *AR0, *CDP, AC0 ;隐含的或内置的并行指令 :: MPY *AR1, *CDP, AC1 ||MOV #5, AR1
பைடு நூலகம்
在实际编程时,只要指令满足这三条基本规则,即可写成并行
方式,然后进行编译。如果编译有错,则可参照书上详细规则进 行检测。
第五章 TMS320C55x系列DSP的汇编指令 5.4 TMS320C55x DSP的汇编指令
TMS320C55x DSP的汇编指令按操作分为以下6类 算术运算指令 比特操作指令 一条指令的属性包括: 语法(Syntax) 执行的操作 操作数 相关的状态位 是否有并行使能位 长度(Size) 执行周期(Cycles) 在流水线(Pipeline)上的执行阶段 在哪个功能单元执行(Executed) 是否可以重复执行等
DSP指令一览表
CMPLsrc[,dst]
dst=—s —r —c
累加器取反
11
DELAYSmem
(Smem+1)=Smem
存储器单元延迟
11
EXPsrc
T=numberofsignbits(src)—8
求累加器的指数
11
FIRSXmem,Ymem,pmad B=B+A*pmad,A=(Xmem+Ymem)<<16
DSP 指令一览表
?附录 6TMS320C54x 指令系统一览表(按指令功能排列)
一、算术运算指令
1.加法指令
句法
表达式
说明
字周 数期
ADDSmem,src
src=src+Smem
操作数加至累加器
11
ADDSmem,TS,src
src=src+Smem<<TS
操作数移位后加至累加器
11
ADDSmem,16,src[,dst] dst=src+Smem<<16
T 寄存值与累加器 A 高位相乘
11
MPYASmem
B=Smem*A(32-16),T=Smem 操作数与累加器 A 高位相乘
11
MPYUSmem,dst
பைடு நூலகம்
dst=uns(T)*uns(Smem) 无符号数乘法
11
SQURSmem,dst
dst=Smem*Smem,T=Smem 操作数的平方
11
SQURA,dst
1
1
MACRXmem,Ymem,src[,dst]
dst=rnd(src+Xmem*Ymem) T=Xmem
DSP指令大全(最全)
DSP指令大全(最全)附录6 TMS320C54x 指令系统一览表(按指令功能排列) 一、算术运算指令二、逻辑运算指令三、程序控制指令6.注:?条件―真‖,§条件―假‖,※延迟指令。
四、加载和存储指令4.6.7.五.伪指令2.初始化常数(数据和存储器)的伪指令3.调整段程序计数器伪指令(SPC).align 把SPC调整到页边界.even 把SPC调整到偶数字边界4.控制输出列表格式化伪指令5.条件汇编伪指令.break [well-defined expression] 如果条件真结束.loop汇编,.break结构是可选项.else 如果.if条件为假,汇编代码块.else结构是可选项.elseif well-defined expression——如果if条件为假且.elseif 条件为真,汇编代码块.else结构是可选项.endif 结束.if代码块.endloop 结束.1oop代码块.if well-defined expression 如果条件为真则汇编代码块.loop [well-defined expression] 开始代码块的重复汇编6. 汇编符号.asg [”] character string [”],substitution symbol——把字符串赋予替代的符号..endstruct 结束结构定义.equ 使值和符号相等.eval well-defined expression,substitution symbol 根据数字替代符号完成运算.newblock 取消局部标号.set 使数值和符号相等.struct 开始结构定义.tag 把结构属性赋予标号7.宏指令宏定义:Macname .macro[参数1],[…],[参数n]宏调用:[标号][:] macname [参数1],[…],[参数n]8.编译软件指令①汇编器:asm500.exeasm500[input file[object file [listing file] [-options]]-c—使汇编语言文件中大小没有区别。
DSP常用语言指令简介
2. 工作寄存器等指令举例
z Example1:MAR
*+,AR1;把当前工作寄 存器的内容加1,然后再改变工作寄存器为 AR1。 z Example2:LAR AR4,#8123h;把AR4的 值改变为立即数。 LAR AR0,16;(DP=6)把 地址=310H的内存单元内容装入AR0。 z Example3:SAR AR0,*+;(如果当前工 作寄存器=AR1)把AR0的内容拷贝到AR1 南航自动化学院DSP技术应用实验 指向的内存单元。 室
南航自动化学院DSP技术应用实验 室
z Example1:BCND
xxx, LEQ, C ;如果累加 器<=0并且进位C=1,那么程序就跳转到标 号xxx处执行;否则,程序顺序执行。根据 累加器ACC的内容产生的转移条件如下表格 所示。类似的指令还有:CC xxx。 z Example2:BANZ。第七页举例。
南航自动化学院DSP技术应用实验 室
1. 累加器等指令举例
z Example
1:ADD 1,1;(假设DP = 6),把 第6个数据页的第一个内存单元内容左移一 位加到累加器 z Example 2:LACC *,4; (与SXM有关) z Example 3:ROL;把累加器内容循环左移 z Example 4:SACL *,0,AR7 ;把当前工作寄 存器指示内容左移0位送入累加器的低8位 z Example 5:RPT #15 SUBC * ;累加器减去当前寄存 器指的内容,连续减16次,结果存累加器
南航自动化学院DSP技术应用实验 室
1. 累加器等指令举例
Example 6: AND 16 ;(假设DP = 4),把地址 =210H的内存单元内容和ACC相逻辑“与”,结果存 入累加器。 z Example 7:SFL ;把整个的ACC内容左移一位,低 位填0,最高位送入进位位,不受SXM影响。 z Example 8:SFR ;把整个的ACC内容右移一位,高 位根据SXM进行符号位扩展。例如: 1.执行前ACC=B0001234h,SXM=0,执行后ACC= 5800091Ah; 2.执行前ACC=B0001234h,SXM=0,执行后ACC =5800091Ah;
DSP指令集.doc
C2 的指令集C2xx DSP中共有汇编语言指令88条,分成6类:①累加器、算术和逻辑指令26条如:ADD、LACC、AND②辅助寄存器和数据页面指针指令7条如:MAR、LAR等③TREG、PREG和乘法指令20条如:LT、MTY、PAC等④分支、调用指令12条如:B、BCND、INTR等⑤控制指令15条如:SPM、POP、BIT等⑥存储器和I/O操作指令8条如:BLDD、SPLK、TBLR等注:有些指令助记符是增强性指令,对应于几条简单指令(机器码),如:ADD可完成ADD,ADDH,ADDK和ADLK等功能,这样做可使程序更简洁并易读。
1.指令格式(即语法)不带进位加法指令格式:ADD dma [,shift] ;直接寻址ADD dma,16 ;16位左移直接寻址ADD ind [,shift [,ARn ] ] ;间接寻址ADD ind ,16[,ARn ] ;16位左移的间接寻址ADD#k ;短立即寻址ADD#lk [,shift ] ;长立即寻址2.操作数dma ;直接寻址时,数据存储器地址低7位shift: ;左移值从 0 到 15 (默认值为 0)n ;指示下一个辅助寄存器 n= 0~ 7k: ;8位短立即数值lk: ;16位短立即数值ind ;选择下列7种间接寻址方式中的一种* *+ *- *0+ *0- *BR0+ *BR0-3.操作码4.执行(1) (Smem)+(src)→src(2) (Smem)<<(TS)+(src)→src(3) (Smem)<<16+(src)→dst(4) (Smem)[ <<SHIFT]+(src)→dst(5) (Xmem) <<SHIFT+(src)→src(6)( (Xmem)+ (Ymem)) <<16→dst(7) lk<<SHFT+(src)→dst(8) lk<<16+(src)→dst(9) (src or[dst])+(src)<<SHIFT→dst(10) (src or[dst])+(src)<<ASM→dst5.状态位指令执行受SXM和OVM的影响,指令执行结果影响C和OV6.说明把一个16位的数加到选定的累加器中,或一个采用双数据存储器操作数寻址的操作数Xmen。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
dst=src<<TS,dst=norm(src,TS)
归一化
11
POLY Smem
B=Smem<<16,A=rnd(A*T+B)
求多项式的值
11
RND src[,dst]
dst=src+215
累加器舍入运算
11
SAT src
saturate(src)
累加器饱和运算
11
SQDST Xmem,Ymem B=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<<16 求距离的平方
11
MASR Smem,src
src=rnd(src—T*Smem)
从累加器中减去 T 寄存器值与操作数的乘积
(带舍入)
11
MASA Smem[,B]
B=B—Smem*A(32—16) T=Smem
, 从累加器 B 中减去操作数与累加器 A 高[,dst]
dst=src—T*A(32—16)
11
SQURS Smem,src
src=src—Smem*Smem,T=Smem 从累加器中减去操作数的平方
11
2
5. 双精度(32 位操作数)指令
句法
表达式
说明
字数 周期
DADD
If C16=0
dst=Lmem+src Lmem,src[,dst] If C16=1
双精度/双 16 位数加到累加器
11
DSADT Lmem,dst
If C16=0 dst=Lmem—(T<<16+T) If C16=1 dst(39—16)=Lmem(31—16)—T dst(15—0)=Lmem(15—0)+T
长操作数与 T 寄存器值相加/减
11
DSUB Lmem,src
If C16=0
src=src—Lmem
无符号数乘法
11
SQUR Smem,dst
dst=Smem*Smem,T=Smem 操作数的平方
11
SQUR A,dst
dst=A(32—16)*A(32—16) 累加器 A 的高位平方
11
1
4. 乘法累加/减指令
句法
表达式
说明
字周 数期
MAC Smem,src
src=src+T*Smem
操作数与 T 寄存器值相乘后加到累加器
双精度/双 16 位数与 T 寄存器值相加/减 1 1
DRSUB Lmem,src
If C16=0
src=Lmem—src
If C16=1
双精度/双 16 位数中减去累加器值
src(39—16)=Lmem(31—16)—src(31—16)
src(15—0)=Lmem(15—0)—src(15—0)
22 22
ADD src,[,SHIFT][,dst]
dst=dst+src<<SHIFT
累加器移位后相加
11
ADD src,ASM[,dst] ADDC Smem,src
dst=dst+src<<ASM src=src+Smem+C
累加器按 ASM 移位后相加 操作数带进位加至累加器
11 11
ADDM #lk,Smem ADDS Smem,src
11
3
二、逻辑运算指令
1. 与逻辑运算指令
句法
表达式
说明
字数 周期
AND Smem,src
src=src&Smem
操作数和累加器相与
11
AND #lk[,SHFT],src[,dst] dst=src&#lk<<SHFT 长立即数移位后和累加器相与
22
AND #lk,16,src[,dst] dst=src&#lk<<16 长立即数左移 16 位后和累加器相与 2 2
DSP 指令一览表
附录 6 TMS320C54x 指令系统一览表(按指令功能排列)
一、算术运算指令
1. 加法指令
句法
表达式
说明
字数 周期
ADD Smem,src
src=src+Smem
操作数加至累加器
11
ADD Smem,TS,src ADD Smem,16,src[,dst]
src=src+Smem<<TS dst=src+Smem<<16
If C16=1
从累加器中减去双精度/双 16 位数
src(39—16)=src(31—16)—Lmem(31—16)
src(15—0)=src(15—0)—Lmem(15—0)
11
DSUBT Lmem,dst
If C16=0 dst=Lmem—(T<<16+T) If C16=1 dst(39—16)=Lmem(31—16)—T dst(15—0)=Lmem(15—0)—T
AND src[,SHIFT][,dst] dst=dst&src<<SHIFT 源累加器移位后和目的累加器相与 1 1
ANDM #lk,Smem
Smem=Smem&#lk 操作数和长立即数相与
从长操作数中减去 T 寄存器值
11
6. 专用指令 句法 ABDST Xmem,Ymem ABS src[,dst]
表达式 B=B+|A(32—16)|,A=(Xmem—Ymem)<<16 dst=|src|
说明 绝对距离 累加器取绝对值
字数 周期 11 11
CMPL src[,dst]
———
dst= s r c
Smem=Smem+#lk src=src+uns(Smem)
长立即数加至存储器 符号位不扩展的加法
22 11
2. 减法指令
句法
表达式
说明
字数 周期
SUB Smem,src
src=src—Smem
从累加器中减去操作数
11
SUB Smem,TS,src
src=src—Smem<<TS
从累加器中减去移位后的操作数
11
SUB Xmem,Ymem,dst
dst=Xmem<<16—Ymem<<16 两个操作数分别左移 16 位后相减
11
SUB #lk[,SHFT],src[,dst] dst=src—#1k<<SHFT
长立即数移位后与累加器相减
22
SUB #lk,16,src[,dst] SUB src[,SHIFT][,dst]
操作数移位后加至累加器 操作数左移 16 位加至累加器
11 11
ADD Smem[,SHIFT],src[,dst] dst=src+Smem<<SHIFT 操作数移位后加到累加器
22
ADD Xmem,SHFT,src
src=src+Xmem<<SHFT 操作数移位后加到累加器
11
ADD Xmem,Ymem,dst
从累加器中减去 T 寄存器值与操作数的乘积 1 1
MASR
Xmem,Ymem,src[,dst] dst=rnd(src—Xmem*Ymem)
, 从累加器中减去两操作数的乘积(带舍入)
T=Xmem
11
MAS Xmem,Ymem,src[,dst] dst=src—Xmem*Ymem T=Xmem
, 从源累加器中减去两操作数的乘积
dst(39—16)=Lmem(31—16)+src(31—16)
dst(15—0)=Lmem(15—0)+src(15—0)
11
DADST Lmem,dst
If C16=0 dst=Lmem+(T<<16+T) If C16=1 dst(39—16)=Lmem(31—16)+T dst(15—0)=Lmem(15—0)—T
从源累加器中减去 T 寄存器值与累加器 A 高
位的乘积
11
MASAR T,src[,dst]
dst=rnd(src—T*A(32—16))
从源累加器中减去 T 寄存器值与累加器 A 高
位的乘积(带舍入)
11
SQURA Smem,src
src=src+Smem*Smem,T=Smem 操作数平方并累加
dst=Xmem<<16+Ymem<<16 两个操作数分别左移 16 位后加到累加器 1 1
ADD #lk[,SHFT],src[,dst] dst=src+#lk<<SHFT
ADD #lk,16,src[,dst]
dst=src+#lk<<16
长立即数移位后加到累加器 长立即数左移 16 位后加到累加器
22
MACR Smem,src
dst=rnd(src+T*Smem)
操作数与 T 寄存器值相乘后加到累加器(带
舍入)
11
MACR Xmem,Ymem,src[,dst] dst=rnd(src+Xmem*Ymem)
, 两个操作数相乘后加到累加器(带舍入)
T=Xmem
11
MACA Smem[,B]
B=B+Smem*A(32—16) T=Smem
23
MACP Smem,pmad,src
src=src+Smem*pmad,T=Smem 操作数与程序存储器值相乘后加到累加器 2 3