3986.net
小网站 大容量 大智慧
当前位置:首页 >> 计算机软件及应用 >>

DSP汇编语言指令系统


第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

第三章 第三节TMS320C54xTM DSP汇编语言与混合编程
3.1 概述
3.2 汇编语言 3.3 C54x DSP的C语言编程及混合编程

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.1 概 述
C54x DSP软件设计的方法通常有三种。 第一种,用C语言开发。TI公司提供了用于C语言开发的 CCS(Code Composer Studio)平台。该平台包括了优化ANSI C编 译器,从而可以在C源程序级进行开发调试。这种方式的优点是

可以增强软件的可读性,提高了软件的开发速度, 方便软件的修
改和移植。然而, C编译器无法实现在任何情况下都能够合理地 利用DSP芯片的各种资源。此外,对DSP芯片的某些硬件控制, 用C语言就不如用汇编程序方便,有些甚至无法用C语言实现。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

第二种,用汇编语言开发。此种方式代码效率高,程序执 行速度快,可以充分合理地利用芯片提供的硬件资源。然而, 用汇编语言编写程序比较烦琐,可读性较差。另外,不同类别 或不同公司的芯片汇编语言往往不同,因此可移植性较差。总

之,用汇编语言开发产品,周期长,软件的修改和升级困难。
第三种,C和汇编语言混合编程开发。采用混合编程的方法 能更好地达到设计要求,完成设计任务。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.2 汇 编 语 言
4.2.1 汇编语言源程序格式

汇编语言是DSP应用软件的基础。编写汇编语言必须要符合
相应的格式,这样汇编器才能将源文件转换为机器语言的目标

文件。C54x DSP汇编语言源程序由源说明语句组成,包含汇编
语言指令、汇编伪指令、宏伪指令和注释等,一般一句程序占 据编辑器的一行。由于汇编器每行最多只能读200个字符,因此

源语句的字符数不能超过200个,一旦长度超过200个字符,汇
编器将自行截去行尾的多余字符并给出警告信息。如果截去的 是注释,那么不影响程序的正确执行;但如果截去了语句的执

行部分,则程序会编译出错或错误执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

汇编语言语句格式可以包含4个部分:标号域、指令域、操 作数域和注释域。以助记符指令为例,汇编语言语句格式如下:

[标号][:] 指令[操作数列表]
选项。

[;注释],其中[ ]内的部分是可

在编写汇编指令时,必须遵循以下格式: (1) 语句必须以标号、空格、星号或分号开始。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) 标号为可选项。若要使用标号,则必须从第1列开始。 标号长度最多为32个字符,由A~Z,a~z,0~9,_和$等组成,

但第1个字符不能为数字。标号后可以跟一个冒号(:),但并不
作为标号的一部分。 (3) 每个域必须由1个或多个空格分开,制表符等效于空格。 (4) 注释是可选项,开始于第1列的注释须用星号或分号(*

或;)标示,但在其他列开始的注释前面只能标分号。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) 指令域一定不能从第1列开始,否则将被视为标号。指 令域包括以下操作码之一:助记符指令、汇编伪指令 (如.data,.set)、宏伪指令(如.var,.macro)和宏调用。 (6) 操作数域为操作数的列表,汇编器允许指定常数、符号 或表达式作为地址、立即数或间接寻址。当操作数为立即数时, 使用#符号作为前缀;操作数为间接寻址时,使用*符号作为前

缀,将操作数的内容作为地址。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.2.2 汇编指令介绍 C54x DSP按指令的功能分类,可分为如下四类: * 数据传送指令; * 算术运算指令; * 逻辑运算指令; * 程序控制指令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.1 指 令 集 符 号
符 A ALU AR ARx ARP ASM B BRAF BRC 号 累加器 A 算术逻辑单元 辅助寄存器 指定的辅助寄存器(0≤x≤7) ST0 中的辅助寄存器指针域,3 位域 指针指向当前的辅助寄存器(AR) ST1 中的 5 位累加器移位模式域 (-16≤ASM≤15) 累加器 B ST1 中的块重复有效标志 块重复计数器 说 明 符 n N OVA OVB OVdst OVdst_ OVsrc OVM PA 号 说 明 XC 指令操作数。n=1 表示 1 条指令 执行;n=2 表示 2 条指令执行 指定 RSBX/SSBX/XC 指令中修改的 状态寄存器。N=0,状态寄存器 ST0; N=1,状态寄存器 ST1 ST0 中的累加器 A 的溢出标志 ST0 中的累加器 B 的溢出标志 目的累加器(A 或 B)的溢出标志 与当前目的累加器相反的累加器的 溢出标志 源累加器(A 或 B)的溢出标志 ST1 中的溢出模式位 16 位立即数表示的端口地址 (0≤PA≤65535)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

续表一
符号 BITC C16 C CC CMPT CPL cond [d],[D] DAB DAR dmad 说 明 4 位值,用于确定位测试指令对指定 数据存储器的哪一位进行测试 ST1 中的双 16 位/双精度算术模式位 ST0 中的进位位 2 位的条件代码 ST1 中的兼容模式位 ST1 中的编译模式位 条件执行指令所用的条件 延迟方式的选项 地址总线 DAB 地址寄存器 16 位立即数表示的数据存储器地址 (0≤dmad≤65 535) 符号 PAR PC pmad Pmem PMST prog [R] rnd RC RTN REA 说 程序地址寄存器 程序计数器 16 位立即数表示的程序存储器地址 (0≤PA≤65 535) 程序存储器操作数 处理器模式状态寄存器 程序存储器操作数 舍入(凑整)选项 舍入 循环计数器 在 RETF[D]指令中使用的快速返回 寄存器 块循环尾地址寄存器 明

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

续表一
Dmem DP dst dst_ EAB EAR extpmad FRCT hi(A) HM IFR INTM K k3 k5 数据存储器操作数 ST0 中的 9 位数据存储器页指针域 目的累加器(累加器 A 或 B) 与当前目的累加器相反的累加器。 若 dst=A,则 dst_=B;若 dst=B,则 dst_=A E 地址总线 EAB 地址寄存器 23 位立即数表示的程序存储器地址 ST1 中的分数模式位 累加器 A 中的高 16 位(31~16 位) ST1 中的保持模式位 中断标志寄存器 ST1 中的中断屏蔽位 小于 9 位的短立即数 3 位立即数(0≤k3≤7) 5 位立即数(0≤k5≤7) RSA SBIT SHFT SHIFT Sind Smem SP src ST0,ST1 SXM T TC TOS TRN TS 块循环起始地址寄存器 4 位域指示在 RSBX/SSBX/XC 指令 中修改的状态寄存器位数 (0≤SBIT≤15) 4 位指示的移位数(0≤SHFT≤15) 5 位指示的移位数(-16≤SHIFT≤15) 使用间接寻址的单访问数据存储器 操作数 16 位单访问的数据存储器操作数 堆栈指针 源累加器(A 或 B) 状态寄存器 0,状态寄存器 1 ST1 中的符号扩展模式位 暂存寄存器 ST0 中的测试/控制标志位 堆栈栈顶 转换寄存器 T 寄存器中位(5~0)确定的位移数

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

续表二
符号 k9 1k Lmem mmr MMR MMRx MMRy ( ) [ ] 说 明 9 位立即数(0≤k9≤7) 16 位长立即数 使用长字寻址的 32 位单访问数据存 储器操作数 存储器映射寄存器 存储器映射寄存器, AR0~AR7 或 SP 寄存器或存储单元包含的内容 表示可选项 符号 uns XF XPC Xmem Ymem # ‖ 说 明

无符号数 ST1 中的外部标志状态位 程序计数器的扩展寄存器 在双操作数和一些单操作数指令中 使用的 16 位双访问数据存储器操作数 在双操作数指令中使用的 16 位双访 问数据存储器操作数 立即数寻址时常数的前缀 并行指令

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

1.数据传送指令 数据传送指令把源操作数从源存储器中传送到目的操作数 指定的存储器中。C54x DSP的数据传送指令包括装载指令、 存储指令、条件存储指令、并行装载和存储指令、并行装载 和乘法指令、并行存储和加/减法指令、并行存储和乘法指令、 混合装载和存储指令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

1) 装载指令
装载指令是取数或赋值指令,将存储器内容或立即数赋给 目的寄存器,共7条指令,如下所示。

(1) DLD 语 法:助记符方式 DLD Lmem,dst
执行方式:if C16 = 0 Then (Lmem)→dst Else (Lmem(31-16))→dst(39-16) (Lmem(15-0))→dst(15-0) 受SXM的影响。

表达式方式 dst = dbl(Lmem) dst = dual(Lmem)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:该指令只把32 bit的长操作数Lmem装入到目的 累加器dst中。C16的值决定了所采用的方式: C16=0 指令以双精度方式执行。Lmem装入到dst中。 C16=1 指令以双16 bit方式执行。Lmem的高16 bit装入到 dst前24 bit中;同时,Lmem的低16 bit装入到dst的 低16 bit中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.1 DLD *AR3+,B
Before Instruction
B 00 0000 0000 0100 B AR3

After Instruction
00 6666 5555 0102

Data Memory
0100H 0101H 6666 5555 0100H 0101H 6666 5555

因为该指令是一个长操作指令,所以AR3在执行后加2。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程
(2) LD 语 法:助记符方式 ① LD Smem,dst ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ LD LD LD LD LD LD LD LD LD Smem,TS,dst Smem,16,dst Smem[,SHIFT],dst Xmem,SHIFT,dst # K,dst # 1k [,SHIFT],dst # 1k ,16,dst src,ASM [,dst] src[,SHIFT] [,dst]

表达式方式 ① dst =dbl(Lmem) dst =dual(Lmem) ② dst = Smem << TS ③ dst = Smem << 16 ④ dst = Smem [<<SHIFT] ⑤ dst = Xmem [<<SHIFT] ⑥ dst = # K ⑦ dst = # 1k [<<SHIFT] ⑧ dst = # 1k << 16 ⑨ dst = src <<ASM ⑩ dst = src [<<SHIFT]

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程:① (Smem)→dst ② (Smem)<< TS→dst ③ (Smem)<< 16→dst ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ (Smem)<< SHIFT→dst (Xmem)<< TS→dst K→dst 1k << SHIFT→dst 1k << 16→dst (src)<<ASM→dst (src)<<SHIFT→dst

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

在所有累加器装入操作中都会受到SXM影响,在带有 SHIFT或ASM移位的装入操作中只受OVM的影响;在带有 SHIFT或ASM移位的装入指令中影响Ovd(或当dst=src时影响 OVsrc)。

功能描述:把一数据存储器值或一立即数装入累加器(dst
或当没有确定dst时为src),并支持各种不同的移位。另外,指 令支持带移位的累加器到累加器的搬移。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.2 LD *AR1,A
Before Instruction A SXM AR1 00 0000 0000 0 0200 A SXM AR1 After Instruction 00 0000 ABCD 0 0200

Data Memory
0200H ABCD 0200H ABCD

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.3 LD *AR1,A
Before Instruction
A SX M AR1 00 0000 0000 1 0200 A SX M AR1 0200

After Instruction
FF FFFF FEDC 1

Data Memory
0200H FEDC 0200H FEDC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.4 LD *AR3+,16,A
BeforeInstructi n o B SX M AR1 T 0200 8 00 0000 0000 1 B SX M AR1 T AfterInstructi n o FF FFFE DC00 1 0200 8

Data Memory
0200H FEDC 0200H FEDC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.5

LD *AR3+,16,A
Before Instruction A SXM AR3 00 0000 0000 1 0300 A SXM AR3 After Instruction FF FFDC 0000 1 0301

Data Memory
0300H FEDC 0300H FEDC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) LD 语 法:助记符方式 表达式方式

① LD Smem,T
② LD Smem,DP ③ LD # k9,DP ④ LD # k5,ASM ⑤ LD # k3,ARP

① T = Smem
② DP = Smem ③ DP = # k9 ④ ASM = # k5 ⑤ ARP = # k3

⑥ LD Smem,ASM

⑥ ASM = Smem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程: ① (Smem)→T ② (Smem(8-0))→DP

③ k9→DP
④ k5→ASM ⑤ k3→ARP ⑥ (Smem(4-0))→ASM 不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把一个数装入T寄存器或状态寄存器ST0或 ST1中的DP、ASM和ARP域中。装入的数可以是一个单数据 存储器操作数Smem也可以是一个常数。该指令代码为一个字, 但当Smem采用了长偏移直接寻址或绝对地址寻址方式时,指

令代码为两个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.6 LD *AR3+,T
Before Instruction T AR3 0000 0300 T AR3 After Instruction ABCD 0301

Data Memory
0300H ABCD 0300H ABCD

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.7 LD *AR4,DP
Before Instruction AR4 DP 0200 1FF AR4 DP After Instruction 0200 0DC

Data Memory
0200H FEDC 0200H FEDC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.8 LD #23,DP

Before Instruction DP 1FF DP

After Instruction 017

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.9 LD 15,ASM
Before Instruction ASM 00 ASM After Instruction 0F

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.10 LD 3,ARP

Before Instruction ARP 0 ARP

After Instruction 3

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.11

LD DAT0 ASM
Before Instruction ASM DP 00 004 ASM DP After Instruction 1C 004

Data Memory
0200H FEDC 0200H FEDC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) ?LDM 语 法:助记符方式 LDM MMR,dst 表达式方式 dst = MMR dst =mmr(MMR) 执 行过程:(MMR)→dst

不影响任何状态位。
功能描述:把存储器映射寄存器MMR中的值装入到目的累

加器dst中。不管DP的当前值或ARx的高9位的值是多少,都把有
效地址的高9位清0,以指定为在数据页0中。该指令不受SXM的 影响。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.12 LDM AR4,A

BeforeInstructi n o A AR4 00 0000 11 11 EEEE A AR4

AfterInstructi n o 00 0000 EEEE EEEE

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) LDR 语 法:助记符方式 LDR Smem,dst 表达式方式 dst = rnd(Smem)

执行过程:(Smem)<< 16 + 1 << 15→dst(31-16) 受SXM的影响。 功能描述:把单数据存储器操作数Smem左移16 bit后装入目 的累加器dst的高端(31~16位)。Smem通过加215 再对累加器的低端(15~0位)清0来凑整。累加器 的第15位置为1。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.13

LDR *AR1,A
BeforeInstructi n o A SX M AR1 00 0000 0000 0 0200 A SX M AR1 0200 AfterInstructi n o 00 EEEE 8000 0

Data Memory
0200H EEEE 0200H EEEE

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) LDU 语 法:助记符方式 LDU Smem,dst 执行过程:(Smem)→dst(15-0) 00 0000H→dst(39-6) 表达式方式 dst = uns(Smem)

不影响任何状态位。
功能描述:把单数据存储器值Smem装入目的累加器dst的

低端(15~0位)。dst的保护位和高端(39~16位)清0。因此,数据
被看成是一个不带符号的16 bit数。不管SXM位的状态如何都无 符号扩展。该指令代码占一个字,但当Smem采用长偏移间接寻

址或绝对地址寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.14 LDU *AR1,A
BeforeInstructi n o A AR1 00 0000 0000 0200 A AR1 AfterInstructi n o 00 0000 EEEE 0200

Data Memory

0200H

EEEE

0200H

EEEE

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(7) LTD 语 法:助记符方式 表达式方式

LTD Smem
执行过程:(Smem)→T (Smem)→Smem + 1 不影响任何状态位。

ltd(Smem)

功能描述:把一个单数据存储器单元的内容Smem复制到T

寄存器和紧接着T的数据单元中去。当数据复制完毕后,Smem
单元的内容保持不变。这个功能在数字信号处理中实现一个Z延 时是相当有用的。该功能在存储器延迟指令中也存在。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.15 LTD *AR3
Before Instruction T AR3 0000 0100 T AR3 After Instruction 6666 0100

Data Memory
0100H 0101H 6666 XXXX 0100H 0101H 6666 6666

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2) 存储指令 存储指令将原操作数或立即数存入存储器或寄存器,共10 条指令, 如下所示。 (1) DST 语 法:助记符方式 表达式方式

DST src,Lmem

dbl(Lmem)= src
dual(Lmem)= src

执行过程:(src(31-0))→Lmem 不影响任何状态位。 功能描述:把源累加器的内容放在一个32 bit的长数据存储 器单元Lmem中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.16 DST B,*AR3+
Before Instruction B AR3 00 6666 5555 0100 B AR3 After Instruction 00 6666 5555 0102

Data Memory
0100H 0101H 0000 0000 0100H 0101H 6666 5555

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) ?ST 语 法:助记符方式 ① ST T,Smem ② ST TRN,Smem ③ ST #1k,Smem 表达式方式 ① Smem = T ② Smem = TRN ③ Smem = #1k

执行过程:① (T)→Smem
② (TRN)→Smem ③ 1k →Smem 该指令不影响任何状态位。 功能描述:把T寄存器的内容,过渡寄存器(TRN)的内容或一个 16 bit常数1 k存放到数据存储器单元Smem中去。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.17 ST TRN,DAT5
Before Instruction DP TRN 004 1234 DP TRN After Instruction 004 1234

Data Memory
0205H 0030 0205H 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.18 ST T,*AR7Before Instruction T AR7 4210 0321 T AR7 After Instruction 4210 0320

Data Memory
0321H 0321H

1200

4210

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) STH
语 法:助记符方式 ① STH src,Smem ② STH src,ASM,Smem ③ STH src,SHFT,Xmem 表达式方式 ① Smem = hi(src) ② Smem = hi(src)<< ASM ③ Xmem = hi(src)<<SHFT

④ STH src[,SHIFT],Smem ④ Smem = hi(src)<< SHIFT
执行过程:① (src(31-16))→Smem ② (src)<<(ASM-16)→Smem ③ (src)<<(SHFT-16)→Xmem ④ (src)<<(SHIFT-16)→Smem

该指令受SXM影响。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把源累加器src的高端(31~16位)存放到数据 存储器单元Smem中去。Src进行左移,移动位数由ASM、 SHFT或SHIFT决定;然后再把移位后的值(31~16位)存放到 数据存储器单元(Smem或Xmem)中。如果SXM=0,则把src的

39位复制到数据存储器单元的最高位。如果SXM=1,就把移
位后进行了符号扩展的第39位存放到数据存储器单元的最高 位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.19 STH A,DAT10
Before Instruction A DP FF 1234 5678 004 A DP After Instruction FF 1234 5678 004

Data Memory
020AH

8765

020AH

1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.20 STH B,–8,*AR7–
Before Instruction B AR7 FF 8421 1234 0321 B AR7 After Instruction FF 8421 1234 0320

Data Memory 0321H ABCD 0321H FF84

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) STL 语 法:助记符方式 表达式方式

① STL src,Smem
② STL src,ASM,Smem ③ STL src,SHFT,Xmem

① Smem = src
② Smem = src<< ASM ③ Xmem = src<<SHFT

④ STL src[,SHIFT],Smem ④ Smem = src<< SHIFT 执行过程: ① (src(15-0))→Smem

② (src)<< ASM→Smem
③ (src)<< SHFT→Xmem ④ (src)<< SHIFT-16→Smem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受SXM影响。 功能描述:把源累加器src的低端(15~0位)存放到数据存 储器单元Smem中去。Src进行左移操作,移动位数由ASM、 SHFT或SHIFT决定。然后把移位后的值(15~0位)存放到数据 存储器单元(Smem或Xmem)中去。当移位值为正时,低位添0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.21 STL A,DAT11
Before Instruction A DP FF 1234 5678 004 A DP After Instruction FF 1234 5678 004

Data Memory 020BH 8765 020BH 5678

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.22 STL B,-8,*AR7Before Instruction B SXM AR7 FF 8421 1234 0 0321 B SXM AR7 After Instruction FF 8421 1234 0 0320

Data Memory
0321H 0099 0321H 2112

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) STLM 语 法:助记符方式 STLM src,MMR 表达式方式 MMR = src mmr(MMR)= src 执行过程:(src(15-0))→MMR

该指令不影响任何状态位。
功能描述:把源累加器src的低端(15~0位)存放到存储器映

射寄存器MMR中。无论DP的当前值或ARx的高9位是多少,都
对有效地址的高9位清0。指令允许src存放在数据第0页中的任何 一个存储器单元中而不必修改状态寄存器ST0中的DP域。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.23

STLM A,BRC

Before Instruction A BRC(1AH) FF 1234 5678 8765 A BRC

After Instruction FF 1234 5678 5678

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.24 STLM B,*AR1After Instruction
1234 3F17 0099 B AR1 AR7 FF 8421 1234 0016 1234

Before Instruction B AR1 AR7(17H) FF 8421

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) STM 语 法:助记符方式 STLM # 1k,MMR 表达式方式 MMR = #1k mmr(MMR)= #1k 执行过程:1k→MMR

该指令不影响任何状态位。
功能描述:该指令的功能是:把一个16 bit常数1k存放到一个存

储器映射寄存器MMR或一个在第0数据页中的存储
器单元,而不必修改状态寄存器ST0中的DP域。无 论DP的当前值或ARx的高9位是多少,都对有效地

址的高9位清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.25 STM 1111H,IMR

Before Instruction IMR FF01 IMR

After Instruction 1111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.26 STM 8765H,*AR7+
Before Instruction AR0 AR7 0000 8010 AR0 AR7 After Instruction 8765 8010

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(7) CMPS 语 法:助记符方式 CMPS src,Smem Then 表达式方式 cmps(src,Smem)

执行过程:if((src(31-16))﹥(src(15-0)))
(src(31-16))→Smem (TRN)<< 1→TRN 0→TRN(0) 0→TC Else (src(15-0))→Smem 1→TRN(0) 1→TC 该指令影响TC位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:比较位于源累加器的高端和低端的两个16 bit二 进制补码值的大小,把较大值存在单数据存储器单元Smem中。

如果是源累加器的高端(31~16位)较大,则过渡寄存器(TRN)左
移一位,最低位填0,TC位清0。如果是源累加器的低端(15~0 位)较大,则TRN左移一位,最低位填1,TC位置1。该指令不遵 从标准的流水操作。比较是在读操作数阶段完成,因而,源累 加器的值是指令执行前一个阶段的值。TRN寄存器和TC位是在

执行阶段被修改的。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.27 CMPS A,*AR4+
Before Instruction A TC AR4 TRN Data Memory 0100H 0000 7899 00 2345 7899 0 0100 4444 A TC AR4 TRN After Instruction 00 2345 7899 1 0101 8889

0100H

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(8) SACCD 语 法:助记符方式
SACCD src, Xmem, cond

表达式方式
if (cond) Xmem=hi (src)<<ASM

执行方式:if (cond) Then (src)<< (ASM-16)→Xmem Else

(Xmem)→(Xmem)
该指令受ASM和SXM的影响。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:如果满足条件(如表3.2所示),则源累加器src左 移(ASM-16)位后存放到Xmem指定的存储器单元中去;如果不 满足条件,则指令从Xmem中读出数据,然后又把它写回到原 来的单元中去,即Xmem单元的值保持不变。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.2 功 能 条 件

条 件 AEQ ANEQ AGT AGEQ ALT ALEQ

说 明 (A)=0 (A)≠0 (A)>0 (A)≥0 (A)<0 (A)≤0

条 件 BEQ BNEQ BGT BGEQ BLT BLEQ

说 明 (B)=0 (B)≠0 (B)>0 (B)≥0 (B)<0 (B)≤0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.28 SACCD A,*AR3+0%,ALT
Before Instruction A ASM AR0 AR3 FF FE00 1234 01 0002 0202 A ASM AR0 AR3 After Instruction FF FE00 1234 01 0002 0204

Data Memory
0202H 0101 0202H FC00

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

间接寻址
在间接寻址中,64 K字数据空间中的任意单元都可以通过一 个辅助寄存器中的16位地址进行访问,同时可以预调整或修改辅 助寄存器值,完成循环寻址和位码倒序寻址等特殊功能。 TMS320C54x有8个16位辅助寄存器(AR0~AR7)、两个辅助寄存 器算术运算单元(ARAU0和ARAU1),它们与8个辅助寄存器一起 完成16位无符号数算术运算。 AR0~AR7------装的是地址,为间接寻址。

AR0~AR7-------由三个辅助寄存器(ARP3bit)来指定某一个。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

单数据存储器操作数的间接寻址类型

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

单操作数间接寻址的硬件框图
ARP(3) AR0(16)index AR1(16) AR2(16) AR3(16) AR4(16) AR5(16) AR6(16) AR7(16) BK(16) Data Bus DB (16) Data Bus EB (16) +/- % 0 ARAU1 EAB(16) (write)or CAB(16) (32 bit read) AR0 BK lk 1 ARAU0 +/- % 0 B AR0 BK 1 DAB(16) (read)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

直接寻址
直接寻址就是在指令中包含有数据存储器地址(dma)的低7位, 用这7位作为偏移地址,并与基地址值(数据页面指针DP的9位或 堆栈指针SP的16位)组成一个16位的数据存储器地址。 直接寻址分为数据页指针直接寻址和堆栈指针直接寻址两种。 这两种寻址方式可以在不改变 DP或SP的情况下,随机地寻找128

个存储单元中的任何一个单元地址。直接寻址的优点是访问方便
快捷,每条指令只需要一个字。直接寻址的代码格式如下:

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

当状态寄存器ST1中的CPL位等于0时(使用DP),

ST0中的DP值(9位地址)与指令中的7位地址一起形成
16位数据存储器地址,如图3-2所示。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

图3-2 以DP为基准的直接寻址

9 位数据页面指针DP

7位dma

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

TMS320C54X 的数据存储器分为512页,每页128字。
因为DP值的范围是0~511,所以以DP为基准的直 接寻址把存储器分成512页; 又因为7位dma值的范围是0~127,所以每页有128 个可访问的单元, 也就是说,DP指向512页中的一页,dma就指向该 页中的特定单元。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

DP值可以由LD指令装入,RESET指 令将DP赋为0。DP不能通过上电进行初 始化,必须在程序中对它进行初始化后, 才能保证程序正常工作。 当 ST1 中 的 CPL 位 等 于 1 时 ( 使 用 SP),将指令中的7位地址与16位堆栈指 针SP相加,形成16位的数据存储器地址, 如图3-3所示。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

以SP为基准的直接寻址方式

16位堆栈指针SP


16位的数据存储器地址

7位dma

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

直接寻址的句法是利用一个符号 “@”(加在变量的前面)或者一个常数来 确定偏移地址值的。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(9) SRCCD 语 法:助记符方式 SRCCD Xmem,cond 执行过程:if (cond) Then (BRC)→Xmem Else (Xmem)→Xmem 该指令不会影响任何状态位。 功能描述:如果满足条件,则指令把块循环计数器(BRC) 表达式方式 if(cond)Xmem=BRC

中的内容放到Xmem中去;如果不满足条件,则指令把Xmem
中的内容读出,再把它写回去,即Xmem保持不变。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.29 SRCCD *AR5-,AGT
Before Instruction A AR5 BRC 00 70FF FFFF 0202 3333 A AR5 BRC After Instruction 00 70FF FFFF 0201 3333

Data Memory
0202H 1111 0202H 3333

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

语 法:助记符方式 STRCD Xmem,cond 执行过程:if (cond) (T)→Xmem Else

表达式方式 if(cond) Xmem = T

(Xmem)→Xmem
该指令不会影响任何状态位。 功能描述:如果满足条件,就把T寄存器的值存放到数据存 储器单元Xmem中去;如果不满足条件,则指令从单元Xmem中 读出数据,然后再把它写回到Xmem中去,即Xmem中的数据保

持不变。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.30 STRCD *AR5-,AGT
Before Instruction A T AR5 00 70FF FFFF 1234 0202 A T AR5 After Instruction 00 70FF FFFF 1234 0201

Data Memory
0202H 4321 0202H 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3) 混合装载和存储指令
混合装载和存储指令共12条,如下所示。 (1) MVDD 语 法:助记符方式 MVDD Xmem,Ymem 执行过程:(Xmem)→Ymem 该指令不影响任何状态位。 功能描述:把通过Xmem寻址的数据存储器单元的值复制 到通过Ymem寻址的数据存储器单元中去。 表达式方式 Ymem = Xmem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.31 MVDD *AR3+,*AR5+
Before Instruction AR3 8000 AR3 After Instruction 8001

Data Memory
0200H 8000H ABCD 1111 1111 1111

0200H 8000H

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) MVDK 语 法:助记符方式 MVDK Smem,dmad 执行过程:(dmad)→EAR if (RC)≠0 Then (Smem)→通过EAR寻址的Dmem (EAR)+1→EAR 表达式方式 data(dmad)= Smem

Else
(Smem)→通过EAR寻址的Dmem 该指令不会影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把一个单数据存储器操作数Smem的内容复制 到一个通过dmad(地址在EAB地址寄存器EAR中)寻址的数据存 储器单元。可以循环执行该指令来转移数据存储器中的连续字 (使用间接寻址)。实际被转移的字数要比指令开始执行时循环

计数器中的值大1。一旦启动流水,指令就成为单周期指令。
该指令代码占两个字,但当Smem采用长偏移间接寻址或绝对 寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.32 MVDK DAT10,8000H
Before Instruction DP 004 DP After Instruction 004

Data Memory
020AH 8000H 1234 ABCD 020AH 8000H 1234 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.33 MVDK *AR3-,1000H
Before Instruction AR3 01FF AR3 After Instruction 01FE

Data Memory
1000H 01FFH ABCD 1234 1000H 01FFH 1234 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) MVDM 语 法:助记符方式 MVDM dmad,MMR 执行过程:dmad→DAR 表达式方式 MMR=data(dmad) mmr(MMR)=data(dmad)

if (RC)≠0
Then (通过DAR寻址的Dmem) → MMR

(DAR)+1→DAR
Else (通过DAR寻址的Dmem) → MMR

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令不影响任何状态位。 功能描述:把数据从一个数据存储器单元dmem(dmad的值 装入DAB地址寄存器DAR中)复制到一个存储器映射寄存器 MMR中。一旦启动了循环流水,指令就变成了一条单周期指 令。该指令代码占两个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.34 MVDM 300H,BK
Before Instruction BK ABCD BK After Instruction 1111

Data Memory
0300H 1111 0300H 1111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) MVDP 语 法:助记符方式 MVDP Smem,pmad 执行过程: pmad→PAR if (RC)≠0 表达式方式 prog(pmad)= Smem

Then
(Smem)→由PAR寻址的Pmem (PAR)+1→PAR

Else
(Smem)→由PAR寻址的Pmem 该指令不会影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把严格的16 bit单数据存储器操作数Smem复制 到一个由16 bit立即数pmad寻址的程序存储器单元中。通过循 环执行该指令可以把数据存储器中的连续字(使用间接寻址)转 移到由16 bit立即数寻址的连续的程序存储器空间中。源和目的

块不必全部在片外或片内。当循环流水开始进行时,该指令就
变成了一个单周期指令。另外,当循环执行该指令时,中断被 禁止。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.35
MVDP DAT0,0FE00H
Before Instruction DP 004 DP After Instruction 004

Data Memory
0200H 0123 0200H 0123

Program Memory
FE00H FFFF FE00H 0123

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) MVKD 语 法:助记符方式 MVKD dmad, Smem 执行过程: dmad→DAR if (RC)≠0 表达式方式 Smem = data(dmad)

Then
(通过DAR寻址的Dmem)→Smem (DAR)+1→DAR Else (通过DAR寻址的Dmem)→Smem

该指令不会影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把数据从一数据存储器单元转移到另一个数据 存储器单元中。源数据存储器单元由一个16 bit立即数dmad寻 址,然后转移到Smem中。循环执行该指令可以转移数据存储 器中的连续字(使用间接寻址)。转移的字数要比指令开始执行

时循环计数器中的值大1。一旦形成循环流水,该指令就变成
了单周期指令。该指令代码占两个字,但当Smem采用长偏移 间接寻址或绝对寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.36 MVKD 1000H,*+AR5
Before Instruction AR5 01FF AR5 After Instruction 0200

Data Memory
1000H 0200H 1234 ABCD 1000H 0200H 1234 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) MVMD 语 法:助记符方式 表达式方式

MVMD MMR,dmad

data(dmad)= MMR
data(dmad)= mmr(MMR)

执行过程:dmad→EAR if(RC)≠0 Then

(MMR)→由EAR寻址的Dmem
(EAR)+ 1→EAR Else (MMR)→由EAR寻址的Dmem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令不影响任何状态位。 功能描述:把数据从一个存储器映射寄存器MMR转移到 一个数据存储器中。目的数据存储器通过一个16 bit立即数 dmad寻址。一旦建立了循环流水,该指令就变成了单周期指

令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.37 MVMD AR7,8000H
Before Instruction AR7 1111 AR7 After Instruction 1111

Data Memory
8000H 8000H

ABCD

1111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(7) MVMM 语 法:助记符方式 MVMM MMRx,MMRy 表达式方式 MMRy = MMRx mmr(MMRy)= mmr(MMRx) 执行过程:(MMRx)→MMRy

该指令不会影响任何状态位。
功能描述:把存储器映射寄存器MMRx中的内容转移到另

一个存储器映射寄存器MMRy中。MMRx和MMRy只可能为9种
操作数(AR0~AR7和SP)。读MMRx的操作在译码阶段执行;写 MMRy的操作在访问阶段执行。注意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.38 MVMM SP,AR1
Before Instruction AR1 SP 3EFF 0111 AR1 SP

After Instruction
0111
0111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(8) MVPD 语 法:助记符方式 MVPD pmad,Smem 执行过程:pmad→PAR if (RC)≠0 表达式方式 Smem = prog(pmad)

Then
(由PAR寻址的Pmem)→Smem (PAR)+1→PAR Else (由PAR寻址的Pmem)→Smem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令不影响任何状态位。 功能描述:把一个字通过16 bit立即数pmad寻址的程序存 储器转移到一个由Smem寻址的数据存储器单元。循环执行该 指令能把程序存储器中的连续字转移到连续的数据存储器单元

中去。源和目的块不必全部都在片内或片外。当建立起了循环
流水,该指令就变成了单周期指令。另外,循环执行该指令时 禁止中断。该指令代码占两个字,但当Smem采用长偏移间接 寻址或绝对寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.39

MVPD 0FE00H,DAT5
Before Instruction DP 006 DP After Instruction 006

Program Memory
FE00H 8A55 FE00H 8A55

Data Memory
0305H FFFF 0305H 8A55

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.40 MVPD 2000H,*AR7-0
Before Instruction AR0 AR7 0002 0FFE AR0 AR7 After Instruction 0002 0FFC

Program Memory
2000H
Data Memory 0FFEH ABCD 0FFEH 1234

1234

2000H

1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(9) PORTR 语 法:助记符方式 PORTR PA,Smem 执行过程:(PA)→Smem 该指令不会影响任何状态位。 功能描述:从一个外部I/O口PA(地址为16 bit立即数)把一 个16 bit数读入到指定的数据存储器单元Smem中。信号变为低 表达式方式 Smem=port(PA)

电平表明在访问I/O口;和READY的时序和读外部数据存储器
的时序相同。该指令代码占两个字,但当Smem使用长偏移间 接寻址或绝对地址寻址时,就会多占一个字。 P67

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.41 PORTR 05,INDAT;INDAT .equ 60H
Before Instruction DP 000 DP After Instruction 000

I/O Memory
0005H 7FFA 0005H 7FFA

Data Memory
0060H 0000 0060H 7FFA

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(10) PORTW
语 法:助记符方式 PORTW Smem,PA 执行过程:(Smem)→PA 该指令不影响任何状态位。 功能描述:把指定的数据存储器单元Smem中的16 bit数写到 外部I/O口PA中去。信号变为低电平表明在访问I/O口;和 READY的时序和读外部数据存储器的时序相同。该指令代码占 两个字,但当Smem使用长偏移间接寻址或绝对地址寻址时就会 表达式方式 port(PA)=Smem

多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.42 PORTW OUTDAT,5H;OUTDAT .equ 07H
Before Instruction DP 001 DP After Instruction 001

I/O Memory
0005H 0000 0005H 7FFA

Data Memory
0087H 7FFA 0087H 7FFA

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(11) READA
语 法:助记符方式 READA Smem 执行过程: A→PAR if ((RC)≠0) 表达式方式 Smem=prog (A)

Then
(由PAR寻址的Pmem)→Smem (PAR)+1→PAR

(RC)-1→RC
Else (由PAR寻址的Pmem)→Smem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令不影响任何状态位。 功能描述:把累加器A确定的程序存储器单元中的一个字

传送到一个数据存储器单元Smem中去。一旦建立了循环流水,
指令就变成了单周期指令。对于不同的芯片,累加器A确定程 序存储器单元的方式如下:
541~546 A(15~0) 548 A(22~0)

可以循环执行该指令,把一块连续字(由累加器A确定起始 地址)转移到一个连续的使用间接寻址方式的数据存储器空间中

去。源和目的块不必全部都在片内或片外。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.43 READA DAT6
Before Instruction A DP 00 0000 0023 004 A DP After Instruction 00 0000 0023 004

Program Memory
0023H 0306 0023H 0306

Data Memory
0206H 0075 0206H 0306

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(12) WRITA 语 法:助记符方式 表达方式

WRITA Smem
执行过程:A →PAR if(RC)≠0 Then (Smem)由→PAR寻址的Pmem (PRA)+1→PRA (RC)-1→RC Else

prog(A)=Smem

(Smem)→由PRA寻址的Pmem
该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把一个字从一个由Smem确定的数据存储器单元 传送到一个程序存储器单元。程序存储器的地址由累加器A确

定,具体情况与芯片有关:
541~546 A(15~0) 548 A(22~0)

我们可以通过循环指令,把数据存储器中的连续字(使用间
接寻址)转移到由PRA寻址的连续的程序存储器空间去。PAR的 初始值是累加器A的低16位值。源和目的块都不必完全在片内 或片外。当循环时,一旦建立了循环流水,该指令就变成了单 周期指令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.44 WRITA DAT5
Before Instruction A DP 00 0000 0257 032 A DP After Instruction 00 0000 0257 032

Program Memory
0257H 0306 0257H 4339

Data Memory
1905H 4339 1905H 4339

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2.算术运算指令 C54x DSP的算术运算指令包括加法指令、乘法指令、乘 法—累加指令、乘法—减法指令、双字运算指令及特殊应用指 令。

1) 加法指令
加法指令共4条,如下所示。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(1) ADD
语 法:助记符方式 ① ADD Smem,src 表达式方式 ① src=src+Smem src+=Smem ② ADD Smem,TS,src ② src=src+Smem<<TS src+=Smem<<TS ③ ADD Smem,16,src[,dst] ③ dst=src+Smem<<16

dst+=Smem<<16
④ ADD Smem[,SHIFT],src[,dst]④ dst=src+Smem[<<SHIFT] dst+=Smem[<<SHIFT]

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

⑤ ADD Xmem,SHIFT,src
⑥ ADD Xmem,Y mem,dst

⑤ src=src+Xmem<<SHIFT
src+=Xmem<<SHIFT ⑥ dst=Xmem<<16+ Ymem<<16 dst+= #1k [<<SHIFT]

⑦ ADD #1k[,SHIFT] ,src[,dst]⑦ dst=src+ #1k [<<SHIFT]

⑧ ADD #1k,16 ,src[,dst]
⑨ ADD src[,SHIFT] [,dst] ⑩ ADD src,ASM [,dst]

⑧ dst=src+ #1k<<16
dst+= #1k <<16 ⑨ dst= dst+src[<<SHIFT] dst+=src+[<<SHIFT] ⑩ dst=dst+src<<ASM dst+= src<<ASM

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程: ① (Smem)+(src)→src ② (Smem)<<(TS)+(src)→src ③ (Smem)<< 16 +(src)→dst

④ (Smem)[<< SHIFT] +(src)→dst
⑤ (Xmem)<< SHIFT +(src)→src ⑥ ((Xmem)+(Ymem))<< 16→dst ⑦ 1k<< 16 +(src)→dst ⑧ 1k<< SHIFT +(src)→dst

⑨ (src or [dst])+(src)<< SHIFT→dst
⑩ (src or [dst])+(src)<< ASM→dst

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受SXM和OVM影响,且影响C和OVdst(如果dst=src, 就是OVsrc)。 功能描述:把一个16 bit的数加到选定的累加器中,或加到 一个采用双数据存储器操作数寻址的16 bit操作数Xmem中。这 个16 bit的数可为以下情况中的一个: * 单数据存储器操作数(Smem); * 双数据存储器操作数(Ymem);

* 一个16 bit立即操作数(#1k);
* src中的移位数。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

如果定义了dst,结果就存在dst中;否则,结果存在src中。 大部分第二操作数要移位。左移位时低位添0;右移时高位情 况为: 如果 SXM = 1,进行符号扩展;

如果 SXM = 0,则添0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.45 1400H左移14位+11FF ADD *AR3+,14,A
Before Instruction A C AR3 SXM 00 0000 11FF 1 0100 1 A C AR3 SXM After Instruction 00 0500 11FF 0 0101 1

Data Memory
0100H 1400 0100H 1400

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.46 1100右移8位+1700 ADD A,-8, B
After Instruction
A B C 00 00 0000 0000 1100 1711 0

Before Instruction A B C 00 00 0000 0000 1100 1700 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.47 ADD #456B, 8, A, B
Before Instruction A B C 00 00 0000 0000 1100 1700 1 A B C After Instruction 00 00 0000 0011 1100 E900 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) ADDC 语 法:助记符方式 ADDC Smem,src 表达式方式 src=src+Smem+CARRY src +=Smem+CARRY 执行过程:

(Smem)+(src)+(C)→src
该指令受OVM和C影响,并能影响C和OVsrc。 功能描述:把16 bit单数据存储器操作数Smem和进位位(C) 的值加到src中,其结果存放在src中。无论SXM位的值是什么, 都不进行符号扩展。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.48 ADDC *+AR2(5), A
Before Instruction A C AR2 00 0000 0011 1 0100 A C AR2 After Instruction 00 0000 0016 0 0105

Data Memory
0105H 0004 0105H 0004

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) ?ADDM 语 法:助记符方式 表达式方式

ADDM #1k ,Smem

Smem=Smem+#1k
Smem+=#1k

执行过程:
#1k+(Smem)→Smem

该指令受OVM和SXM影响,并能影响C和OVA。
功能描述:16 bit单数据存储器操作数Smem与16 bit立即数 1k相加,结果存放在Smem中。该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.49 ADDM 0123BH, *AR4+
Before Instruction AR4 0100 AR4 After Instruction 0101

Data Memory

0100H

0004

0100H

123F

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.50 ADDM ,0FFF8H,*AR4+
Before Instruction OVM SXM AR4 1 1 0100 OVM SXM AR4 After Instruction 1 1 0101

Data Memory
0100H 7008 0100H 7000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) ADDS 语 法:助记符方式 表达式方式

ADDS Smem,src

src=src+uns(Smem)
src +=uns(Smem)

执行过程:uns(Smem)+(src)→src
该指令受OVM影响,并能影响C和OVsrc。

功能描述:把不带符号的16 bit单数据存储器操作数Smem
加到src中,结果存放在src中。无论SXM为何值都不进行符号 扩展。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.51 ADDS *AR2-,B
Before Instruction B C AR2 00 0000 0001 X 0100 B C AR2 After Instruction 00 0000 F007 0 00FF

Data Memory
0100H F006 0100H F006

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2) 减法指令 减法指令共4条,如下所示。 (1) SUB 语 法:助记符方式 ① SUB Smem,src
② SUB Smem,TS,src ③ SUB Smem,16,src[,dst] ④ SUB Smem[,SHIFT],src[,dst] ⑤ SUB Xeme, SHIFT,src

表达式方式 ① src=src-Smem src- =Smem ② src=src-Smem<<TS src- =Smem<<TS ③ dst=src-Smem<<16 dst- =Smem<<16 ④ dst=src-Smem[<<SHIFT] dst- =Smem[<<SHIFT] ⑤ src=src-Xmem<<SHFT src- =Xmem<<SHFT

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

⑥ SUB Xeme,Ymem,dst

⑥ dst=Xmem<<16-Ymem <<16

⑦ SUB #lk, [,SHIFT],src[,dst]
⑧ SUB #lk,16, src[,dst] ⑨ SUB src [,SHIFT], [,dst] ⑩ SUB src ,ASM, [,dst]

⑦ dst=src-#lk[<<SHFT]
dst- =#lk[<<SHFT] ⑧ dst=src-#lk<<16 dst- =#lk<<16 ⑨ dst=dst-src<<SHIFT

dst- =src<<SHIFT
⑩ dst=dst-src<<ASM dst- =src<<ASM

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程: ① (src)-(Smem)→src ② (src)-(Smem)<<TS→src

③ (src)-(Smem)<<16→dst
④ (src)-(Smem)<<SHIFT→dst ⑤ (src)-(Xmem)<<SHIFT→ rc ⑥ (Xmem)<<16-(Ymem)<<16→dst ⑦ (src)-lk<<SHFT→dst

⑧ (src)-lk<<16→dst
⑨ (src)-(src)<<SHFT→dst ⑩ (src)-(src)<<ASM→dst

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受SXM和OVM的影响,并能影响C和OVdst(如果 dst=src,就为OVsrc)。在语法③中,如果减法的结果产生一个 借位,则进位位C为0;否则C不受影响。

功能描述:从选定的累加器或采用双数据存储器寻址方式
的16 bit操作数Xmem中减去一个16 bit值。16 bit减数可能是下列 情况中的一种: * 单数据存储器操作数(Smem); * 双数据存储器操作数(#lk);

* 16 bit立即数(#lk);
* 源累加器src的移位值。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

如果指定了目的累加器dst,结果就存放在dst中;否则, 结果存放在src中。大部分指令的第二操作数都进行了移位。 对于左移,低位添0;高位当SXM=1时进行符号扩展, 当SXM=0时添0。

对于右移,高位当SXM=0(?)时进行符号扩展,当
SXM=0时添0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.52 SUB *AR1+,14,A
BeforeInst A C SXM AR1 ructi n o A X 1 0100

A-1500左移14位---A
AfterInstructi n o FF F AC0 1200 0 1 0101

00 0000 1200

有借位 C 符号方式扩展位 SXM
AR1

Data Memory
0100H 1500 0100H 1500

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.53 SUB A,-8,B
Before Instruction A B C SXM 00 00 0000 0000 1200 1800 X 1 A B C SXM

B-A右移8位---B
After Instruction 00 00 0000 0000 1200 17EE 0 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.54 SUB #12345,8,A,B
Before Instruction A B C SXM 00 00 0000 0000 1200 1800 X 1 A B C SXM After Instruction 00 FF 0000 FFCE 1200 D900 0 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) SUBB 语 法:助记符方式 SUBB Smem,src 表达式方式 src=src-Smem-BORROW src-=Smem-BORROW 执行过程:(src)-(Smem)-(C的逻辑反)→src 该指令受OVM和C的影响,并能影响C和OVsrc。 功能描述:从源累加器中减去单数据存储器操作数的值和 进位位C的逻辑反,且不进行符号扩展。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.55 SUBB DAT5,A
BeforeInstructi n o A C DP 00 0000 00 05 0 008 A C DP AfterInstructi n o FF FFFF FFFF 0 008

Data Memory
0405H 0005 0405H 0005

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.56 SUBB *AR1+,B
Before Instruction B C OVM AR1 FF 8000 0006 1 1 0405 B C OVM AR1 After Instruction FF 8000 0000 1 1 0406

Data Memory
0405H 0006 0405H 0006

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) SUBC
语 法:助记符方式 SUBC Smem,src if ALU≥的输出0 Then ((ALU的输出)<<1)+1→src 表达式方式 subc(Smem,src)

执行过程:(src)-((Smem)<<15)→ALU的输出

Else
(src)<<1→src 该指令受SXM的影响,并能影响C和OVsrc。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:16 bit单数据存储器操作数Smem左移15 bit,然
后再从源累加器src中减去移位后的值。如果结果大于0,结果就 左移一位,加上1,再存放到src中;否则,只把src的值左移一位,

再存放到src中。
除数和被除数在这条指令中都假设为正,SXM将影响该操 作: 如果SXM=1,则除数的最高位必须为0; 如果SXM=0,则任何一个16 bit除数值都可以。 Src中的被除数必须初始化为正(bit31为0),且在移位后也必 须保持为正。该指令影响OVA或OVB,但不受OVM影响。所以,

当发生溢出时,scr不进行饱和运算。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.57

SUBC DAT2,A
BeforeInstructi n o A C DP 00 0000 0004 X 006 A C DP AfterInstructi n o 00 0000 0008 0 006

Data Memory
0302H 0001 0302H 0001

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.58 RPT #25 SUBC *AR1,B
Before Instruction B C AR1 00 0000 0041 X 1000 B C AR1 After Instruction 00 0002 0009 1 1000

Data Memory
1000H 0007 1000H 0007

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) SUBS
语 法:助记符方式 SUBS Smem,src 表达式方式 src=src-uns(Smem) src- =uns(Smem) 执行过程:src-不带符号的Smem→src 该指令受OVM的影响,并能影响C和Ovsrc。 功能描述:从源累加器src中减去16 bit单数据存储器操作数 Smem的值。无论SXM的值为多少,Smem都被看成是一个16 bit 无符号数。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.59 SUBS *AR2-,B
Before Instruction B C AR2 00 0000 0002 X 0100 B C AR2 After Instruction FF FFFF 1114 0 00FF

Data Memory
0100H EEEE 0100H EEEE

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3) 乘法指令
乘法指令共4条,如下所示。

(1) MPY[R]
语 法:助记符方式 ① MPY[R] Smem,dst 表达式方式 ① dst= rnd(T*Smem)

② MPY Xmem,Ymem,dst ② dst=Xmem*Ymem[,T=Xmem] ③ MPY Smem,#1k,dst ④ MPY #1k,dst ③ dst=Smem*#1k[,T=Smem] ④ dst=T *#1k

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行方式: ① (T)×(Smem)→dst ② (Xmem)×(Ymem)→dst (Xmem)→T ③ (Smem)×1k→dst (Smem)→T ④ (T)×1k→dst 该指令受FRCT和OVM的影响,并能影响OVdst。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:T寄存器的值或一个数据存储器值与另一个数 据存储器的值或一个立即数相乘,结果存放在目的累加器dst 中。在读操作数阶段把Smem或Xmem的值装入T寄存器中。 如果你使用了R后缀,指令就会对结果进行凑整运算。其 步骤是:结果加上215再对15~0位清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

十六进制乘法

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.60 MPY DAT13,A
BeforeInstructi n o A T FRCT DP 00 0000 0033 0006 1 008 A T FRCT DP

DAT13*T---A
AfterInstructi n o 00 0000 0048 0006 1 008

Data Memory
040DH 0006 040DH 0006

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.61 MPY *AR2-,*AR4+0%,B
Before Instruction B FRCT AR0 AR2 AR4 FF FFFF FFE0 0 0001 01FF 0300

0010*0002---B
After Instruction B FRCT AR0 AR2 AR4 00 0000 0020 0 0001 01FE 0301

Data Memory
01FFH 0300H 0010 0002 01FFH 0300H 0010 0002

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.62 MPY #0FFFEH,A
BeforeInstructi n o A T FRCT 00 0000 1234 2000 0 A T FRCT AfterInstructi n o FF FFFF C000 2000 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) MPYA 语 法:助记符方式 表达式方式

① MPYA Smem
② MPYA dst

① B= Smem*hi(A)[,T=Smem]
② dst=T* hi(A)

执行过程:① (Smem)×(A(32–16))→B
(Smem)→T ② (T)×(A(32–16))→dst

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受FRCT和OVM的影响,并影响OVsrc(在语法①中 为OVB)。 功能描述:累加器A的高端(32~16位)与一个单数据存储 器操作数Smem或T寄存器的值相乘,结果存放在累加器dst或累

加器B中。在读操作数期间把单数据存储器操作数Smem装入T
寄存器中(语法①)。该指令代码占一个字,但当Smem采用长偏 移间接寻址或绝对寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.63 MPYA *AR2
Before Instruction A B T FRCT FF 00 5678 0000 1111 0320 1234 0 0200 A B T FRCT AR2 After Instruction FF FF 5678 C77D 1111 8DD 5555 0 0200

AR2

Data Memory
0200H 5555 0200H 5555

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.64 MPYA B
Before Instruction A B T FRCT FF 00 8765 0000 1111 0320 4567 0 A B T FRCT FF After Instruction FF 8765 1111 B2A3 4567 0

DF4D

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) MPYU
语 法:助记符方式 MPYU Smem,dst 表达式方式 dst=T*uns(Smem)

执行过程:无符号的(T)×无符号的(Smem)→dst 该指令受FRCT和OVM的影响,同时会影响到OVdst。 功能描述:不带符号的T寄存器值与不带符号的单数据存储器 操作数Smem相乘,结果存放在目的累加器dst中。乘法器对于该 指令来说相当于两个操作数的最高位都为0的一个带符号的 17×17 bit的乘法器。该指令在计算诸如两个32 bit数相乘得到一 个64 bit乘积的多精度乘法时相当有用。该指令代码占一个字,但 当Smem采用长偏移间接寻址或绝对寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.65 MPYU *AR0-,A
BeforeInstructi n o A T FRCT AR0 FF 8000 0000 4000 0 1000 A T FRCT AR0 AfterInstructi n o 00 3F80 0000 4000 0 0FFF

Data Memory
1000H FE00 1000H FE00

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) SQUR 语 法:助记符方式 ① SQUR Smem,dst ② SQUR A, dst 表达式方式 ① dst=Smem * Smem[,T=Smem] dst=square (Smem)[,T=Smem] ② dst = hi (A) * hi (A) dst = square (hi (A)) 执行过程:① (Smem)→T

(Smem)×(Smem)→dst
② (A(32-16))×(A(32-16))→dst 该指令受OVM和FRCT的影响,并能影响OVsrc。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:一个单数据存储器操作数Smem或累加器A的 高端(32~16位)平方后,结果存放在目的累加器dst中。如果用 的是累加器A,T就不受影响;如果操作数为Smem,就要把 Smem存入T寄存器中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.66 SQUR DAT30,B
Before Instruction After Instruction 0111 0003 0 006 B T FRCT DP 00 0000 00C4 000E 0 006

B
T FRCT DP

00

0000

Data Memory
031EH 000E 031EH 000E

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.67 SQUR A,B
Before Instruction A B FRCT 00 00 000F 0101 0000 0101 1 A B FRCT After Instruction 00 00 000F 0000 0000 01C2 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

4) 乘法—累加和乘法—减法指令
乘法—累加和乘法—减法指令,共9条,如下所示。 (1) MAC[R]

语 法:助记符方式
① MAC[R] Smem,src ② MAC[R] Xmem,Ymem,src[,dst]

表达式方式
① src = rnd (src + T*Smem) ② dsr = rnd (src + Xmem*Ymem)

[,T = Xmem]
③ MAC[R] #1k,src[,dst] ③ dst = src + T* #1k dst+= T* #1k

④ MAC[R] Smem, #1k,src[,dst]

④ dst= src + Smem* #1k[,T=Smem]
dst+=Smem* #1k[,T=Smem]

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程:

① (Smem)×(T)+(src)→src ② (Xmem)×(Ymem)+(src)→dst (Xmem)→T ③ (T)× 1k +(src)→dst ④ (Smem)× 1k +(src)→dst (Smem)→T

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受FRCT和OVM的影响,并影响OVdst(当没有确定 dst为OVsrc时)。 功能描述:该指令完成乘和累加运算,并可进行凑整,结 果按规定存放在dst或src中。对于语法②和语法④,紧接着操作 码的数据存储器值在读操作数阶段存放到T寄存器中。如果你 使用R后缀,则指令对乘/累加操作的结果凑整。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.68

MAC *AR5+,A
BeforeInstructi n o A T FRCT AR5 00 0000 1000

1111*0400=44 4400+1000=44 5400
AfterInstructi n o A 0400 0 0100 T FRCT AR5 00 0044 5400 0400 0 0101

Data Memory
0100H 1111 0100H 1111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.69 MAC #345H,A,B

Before Instruction A B T FRCT 00 00 0000 0000 1000 0000 0400 1 A B T FRCT

After Instruction 00 00 0000 001A 1000 3800 0400 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.70 MAC #345H,A,B

Before Instruction A B T FRCT 00 00 0000 0000 1000 0000 0400 1 A B T FRCT

After Instruction 00 00 0000 001A 1000 3800 0400 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.71 MAC *AR5+,*AR6+,A,B
Before Instruction A B T FRCT AR5 AR6 00 00 0000 0000 1000 0004 0008 1 0100 0200 A B T FRCT AR5 AR6 After Instruction 00 00 0000 0C4C 1000 10C0 5678 1 0101 0201

Data Memory
0100H 0200H 5678 1234 0100H 0200H 5678 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) MACA[R] 语 法:助记符方式 表达式方式

① MACA[R] Smem[,B]

① B = rnd(B + Smem*hi(A))
[,T = Xmem]

② MACA[R] T,src[,dst]

② dst = rnd(src + T*hi(A))

执行过程:① (Smem)×(A(32-16))+(B)→B

(Smem)→T
② (T)×(A(32-16)) +(src)→src

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受FRCT和OVM影响,在语法①中影响OVdst(如果 没有定义dst,就为OVsrc)和OVB。

功能描述:累加器A的高端(32~16位)与一个单数据存储器
操作数Smem或T寄存器中的内容相乘,乘积加到累加器B中(语

法①)或源累加器src中。语法①结果存放在累加器B中,语法②
结果存放在dst或src(如果没有定义dst就为src)中。累加器A的 32~16位值用来作为乘法器的一个17 bit操作数。如果你使用了 R后缀,指令要对结果进行凑整。该指令代码占一个字,但当 Smem采用长偏移间接寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.72 LMS *AR3+,*AR4+
Before Instruction A B FRCT AR3 AR4 00 00 7777 0000 8888 0100 0 0100 0200 A B FRCT AR3 AR4 After Instruction 00 00 77BC 0000 0888 29A4 0 0101 0201

Data Memory
0100H 0200H 0044 0099 0100H 0200H 0044 0099

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.73 MACA T,B,B
Before Instruction A B T FRCT 00 00 1234 0002 0000 0000 0444 1 A B T FRCT After Instruction 00 00 1234 009D 0000 4BA0 0444 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.74

MACAR *AR5+,B
Before Instruction A B T FRCT AR5 00 00 1234 0000 0000 0000 0400 0 0100 A B T FRCT AR5 After Instruction 00 00 1234 0626 0000 0000 5678 0 0101

Data Memory
0100H 5678 0100H 5678

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) MACD 语 法:助记符方式 表达式方式 MACD Smem,pmad,src macd(Smem,pmad,src) 执行过程:pmad→PAR if(RC)≠0 Then (Smem)×(用PAR寻址的Pmem)+(src)→src (Smem)→T (Smem)→Smem + 1 (PAR)+1 →PAR Else (Smem)×(用PAR寻址的Pmem)+(src)→src (Smem)→T (Smem)→Smem + 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受FRCT和OVM的影响,并影响到OVsrc。 功能描述:一个单数据存储器值Smem与一个程序存储器 值pmad相乘,乘积和源累加器src的值相加,结果存放在src中。 另外,还把数据存储器值Smem装入到T寄存器和紧接着Smem

地址的数据单元中去。当循环执行该指令时,在程序地址寄存
器PAR中存储器地址执行加1操作。循环流水一旦启动,指令 就变成单周期指令,在存储器延迟指令中也存在该功能。该指 令代码占两个字,但当Smem采用长偏移间接寻址或绝对寻址 方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.75
MACD *AR3–,COEFFS,A
Before Instruction A T FRCT AR3 00 0077 0000 0008 0 0100 A T FRCT AR3 After Instruction 00 007D 0B44 0055 0 00FF

Program Memory
COEFFS
Data Memory 0100H 0101H 0055 0066 0100H 0101H 0055 0055

1234

COEFFS

1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) MACP
语 法:助记符方式 MACP Smem,pmad,src 执行过程:(pmad)→PAR if(RC)≠0 Then (Smem)×(用PAR寻址的Pmem)+(src)→src (Smem)→T (PAR)+1→PAR Else (Smem)×(用PAR寻址的Pmem)+(src)→src 表达式方式 macp(Smem,pmad,src)

(Smem)→T

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受FRCT和OVM的影响,并影响OVsrc。 功能描述:一个单数据存储器值Smem与一个程序存储器 值pmad相乘,乘积和源累加器src相加,结果存放在src中。同 时把数据存储器值Smem复制到T寄存器中。当循环执行该指令

时,在程序地址寄存器PAR中存储器地址执行加1操作。一旦循
环流水启动,指令就变成单周期指令。该指令代码占两个字, 但当Smem采用长偏移间接寻址或绝对寻址方式时就会多占一 个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.76
MACP *AR3-,COEFFS,A
Before Instruction A T FRCT AR3 00 0077 0000 0008 0 0100 A T FRCT AR3 After Instruction 00 007D 0B44 0055 0 00FF

Program Memory
COEFFS
Data Memory 0100H 0101H 0100H 0101H

1234

COEFFS

1234

0055 0066

0055 0066

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) MACSU
语 法:助记符方式 MACSU Xmem,Ymem,src 表达式方式 src = src+uns(Xmem)*Ymem [,T=Xmem]

src += uns(Xmem)*Ymem [,T=Xmem]
执行过程:无符号(Xmem)×带符号(Ymem)+(src)→src (Xmem)→T

该指令受FRCT和OVM的影响,并会影响到OVsrc。

功能描述:一个不带符号的数据存储器值Xmem与一个带符 号的数据存储器值Ymem相乘,乘积与源累加器src的值相加, 结果存放在src中。同时,在读操作数阶段把这个16 bit不带符号 的数Xmem存入T寄存器中。由Xmem寻址的数据从D总线上获 得,由Ymem寻址的数据从C总线上获得。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.77
MACSU *AR4+,*AR5+,A
Before Instruction A T FRCT AR4 AR5 Data Memory 0100H 0200H 7777 11 11 0100H 0200H 7777 1111 0100 0200 00 0000 1000 0008 0 A T FRCT AR4 AR5 After Instruction 00 07F6 E5E7 7777 0 0101 0201

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) MAS[R] 语 法:助记符方式 ① MAS[R] Smem,src 表达式方式 ① src= rnd(src-T*Smem)

② MAS[R]Xmem,Ymem,src[,dst] ② src= rnd(srcXmem*Ymem) [,T=Xmem]

执行过程:① (src)-(Smem)×(T)→src
② (src)-(Xmem)×(Ymem)→src

(Xmem)→T

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受FRCT和OVM影响,并影响OVdst(如果dst=src, 就为OVsrc)。

功能描述:一个存储器操作数与T寄存器的内容相乘,或
者是两个存储器操作数相乘,再从源累加器src或目的累加器

dst中减去该乘积,结果存放在src或dst中。Xmem在读操作数
阶段装入到T寄存器中。如果你用了R后缀,指令就会对结果 进行凑整运算。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.78

MAS *AR5+,A
BeforeInstructi n o A T FRCT AR5 00 0000 1000 0400 0 0100 A T FRCT AR5 AfterInstructi n o FF FFB B CC00 0400 0 0101

Data Memory
0100H 1111 0100H 1111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.79 MAS *AR5+,A
BeforeInstructi n o A T FRCT AR5 00 0000 1000 0400 0 0100 A T FRCT AR5 AfterInstructi n o FF FFB7 4000 0400 0 0101

Data Memory
0100H 1234 0100H 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.80
MASR *AR5+,*AR6+,A,B
Before Instruction A B T FRCT AR5 AR6
Data Memory 0100H 0200H 5678 1234 0100H 0200H 5678 1234

After Instruction 1000 0004 0008 1 0100 0200 A B T FRCT AR5 AR6 00 FF 0000 1000

00 00

0000 0000

F9DA 0000 5678 1 0101 0201

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(7) MASA[R] 语 法:助记符方式 ① MASA[R] Smem,[B] 表达式方式 ① B = B-Smem*hi(A) [,T=Smem] B- =Smem*hi(A)[,T=Smem] ② MASA[R] T,src[,dst] ② dst = rnd(src-T*hi(A))

执行方式:① (B)-(Smem)×(A(32-16))→B
Smem)→T ② (src) - (T)×(A(32–16))→dst 该指令受FRCT和OVM影响,在语法①中影响OVdst(如果 没有定义dst,就为OVsrc)和OVB。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:累加器A的高端(32~16位)与一个单数据存储器 操作数Smem或T寄存器中的内容相乘,再从累加器B(语法①)

或源累加器src中减去该乘积,结果存放在累加器B(语法①)或
dst或src(没有定义dst的时候)中。在读操作数阶段把Smem装入T 寄存器。如果在语法②中使用了R后缀,指令对结果就会进行 凑整运算。该指令代码占一个字,但当Smem采用长偏移间接 寻址或绝对寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.81 MASA *AR5+
Before Instruction A B T FRCT AR5 00 00 1234 0002 0000 0000 0400 0 0100 A B T FRCT AR5 After Instruction 00 FF 1234 F9F0 0000 B0BC 5555 0 0101

Data Memory
0100H 5555 0100H 5555

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.82

MASA T,B
Before Instruction A B T FRCT 00 00 1234 0002 0000 0000 0444 1 A B T FRCT After Instruction 00 FF 1234 FF66 0000 B460 0444 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(8) SQURA 语 法:助记符方式 SQURA Smem, src 表达式方式 ① src = src + square Smem)[,T=Smem] src + =square (Smem)[,T=Smem] ② src = src + Smem * Smem[,T=Smem]

src += Smem * Smem[,T=Smem]
执行过程:(Smem)→T (Smem)×(Smem)+(src)→src 该指令受OVM和FRCT的影响,并能影响OVsrc。 功能描述:把数据存储器的值Smem存放到T寄存器中;对 Smem求平方,再加到源累加器src中,结果存放在src中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.83

SQURA DAT30,B
Before Instruction B T FRCT DP 00 0320 0000 0003 0 006 B T FRCT DP After Instruction 00 0320 00C4 000F 0 006

Data Memory
031EH 000E 031EH 000E

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.84 SQURA *AR3+,A
BeforeInstructi n o A T FRCT AR3 00 0000 01F4 0003 0 031E A T FRCT AR3 AfterInstructi n o 00 0000 02D5 000F 0 031F

Data Memory
031EH 000F 031EH 000F

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(9) SQURS 语 法:助记符方式 表达式方式

SQURS Smem,src

src =src-square (Smem)[, T=Smem]
src-= square (Smem)[, T=Smem] src = src-Smem * Smem[, T=Smem] src-= Smem * Smem[, T=Smem]

执行过程:(Smem)→T

src-(Smem)×(Smem)→src
功能描述:把数据存储器的值Smem存放到T寄存器中;对 Smem求平方,再从源累加器src中减去这个平方值,结果存放在 src中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.85

SQURS DAT9,A
BeforeInstructi n o A T FRCT DP DataMemory 0309 H 1111 0309 H 1111 00 014B 5DB0 8765 0 006 A T FRCT DP AfterInstr ucti n o

00 0028 1A8F 1111 0 006

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

5) 双字算术运算指令 双字算术运算指令共6条,如下所示。 (1) DADD 语 法:助记符方式 表达式方式 DADD Lmem,src[,dsr] dst=src+dbl(Lmem) dst +=dbl(Lmem) dst=src+dual(Lmem) dst+=dual(Lmem) 执行过程: if C16 = 0 Then (Lmem)+(src)→dst Else (Lmem(31-16))+(src(31-16))→dst(39-16) (Lmem(15-0))+(src(15-0))→dst(15-0)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

当C16=0时,该指令受SXM和OVM的影响。并能影响C和 OVdst(如果确定了dst,就为OVsrc)。 功能描述:把源累加器的内容加到32 bit长数据存储器操作 数(Lmem)中。如果定义了目的累加器,就把结果存在其中;否 则存在源累加器中。C16的值决定了指令的方式:

C16=0 指令以双精度方式执行。40 bit源累加器的值加到 Lmem中。饱和度和溢出位都是根据运算结果来设置的。
C16=1 指令以双16 bit方式执行。src的高端(31~16位)与 Lmem的高16 bit相加;src的低端(15~0位)与Lmem的低16 bit相 加。饱和度和溢出位在这种方式下不受影响。在这种方式下, 无论OVM位的状态是什么,结果都不进行饱和运算。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.86

1534 3456+5678 8888=6BAC BCDE
After Instruction 8888 0000 0 0100 A B C16 AR3 00 5678 00 6BAC 8888 BCDE 0 0102

DADD *AR3+,A,B
Before Instruction A B C16 AR3 00 00 5678 0000

Data Memory
0100H 0101H 1534 3456 0100H 0101H 1534 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.87

1534 3456+5678 8888=6BAC BCDE
Before Instruction After Instruction 3933 0000 1 0100 A B C16 AR3 00 00 5678 6BAC 3933 6D89 1 0102

DADD *AR3-,A,B

A B C16 AR3 Data Memory 0100H 0101H

00 00

5678 0000

1534 3456

0100H 0101H

1534 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) DADST 语 法:助记符方式 DADST Lmem,dst 执行过程: if C16=1 Then 表达式方式 dst = dadst(Lmem,T)

(Lmem(31-16))+(T)→dst(39-16)
(Lmem(15-0))+(T)→dst(15-0) Else (Lmem)+((T)+(T)<<16)→dst 当C16=0时,该指令受SXM和OVM的影响,并能影响C和 OVdst。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:该指令是把T寄存器的值加到32 bit长数据存储
器操作器Lmem中。C16的值决定指令的方式: C16=0 指令以双精度方式执行。T寄存器的值和其左移16 bit得到的值相结合所组成的32 bit数加到Lmem中,结果存放在 目的累加器中。 C16=1 指令以双16 bit方式执行。Lmem的高16 bit与T寄存 器的值相加,存放在目的累加器的前24 bit;同时,从Lmem的 低16 bit减去T寄存器的值,结果存放在目的累加器的低16 bit。 在这种方式下,不管OVM位的状态如何,结果都不进行饱和运 算。 注意: 该指令只有当C16置为1时(即双16 bit方式)才有意义。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.88 DADST *AR3-,A
BeforeInstructi n o A T C16 AR3 00 0000 0000 2222 1 0100 A T C16 AR3 00FE AfterInstructi n o 00 3456 1234 2222 1

Data Memory
0100H 0101H 1234 3456 0100H 0101H 1234 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.89
DADST *AR3+,A
BeforeInstructi n o A T C16 AR3 00 0000 0000 2345 0 0100 A T C16 AR3 AfterInstructi n o 00 3879 579B 2345 0 0102

Data Memory
0100H 0101H 1534 3456 0100H 0101H 1534 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) ?DRSUB 语 法:助记符方式 DRSUB Lmem,src 执行过程:if C16 = 0 Then (Lmem)- (src)→src 表达式方式 src=dbl(Lmem)-src src=dual(Lmem) -src

Else
(Lmem(31-16))- (src(31-16))→src(39-16) (Lmem(15-0))- (src(15-0))→src(15-0) 在C16=0时,该指令受SXM和OVM的影响,并能影响C和 OVsrc。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:从32 bit长数据存储器操作数Lmem中减去src的 内容,结果存在src中。C16的值决定了指令执行的方式:

C16=0 指令以双精度方式执行。Lmem的值减去src的内容
(32 bit),结果存放在src中。

C16=1 指令以双16 bit方式执行。Lmem的高16 bit减去 src
的高端(36~16位),结果存放在src的前24 bit(39~16位);同时, Lmem的低16 bit减去src的低端(15~0位)。在这种方式下,不 管OVM的状态如何都不进行饱和运算。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.90
DRSUB *AR3+,A
BeforeInstructi n o A C C16 AR 3 00 5555 6666 X 0 0100 A C C16 AR3 AfterInstructi n o

FFBCDE CDF0
0 0 0102

Data Memory
0100H 0101H 1234 3456 0100H 0101H 1234 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.91

DRSUB *AR3-,A
BeforeInstructi n o

AfterInstruction A
1 1 0100 FF BEBC FB23 0 1 00FE

A C C16 AR3

00 5678 3933

C C16 AR3

Data Memory
0100H 0101H 1534 3456 0100H 0101H 1534 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) DSADT 语 法:助记符方式 表达式方式

DSADT Lmem,dst
执行过程:if C16=1 Then

dst=dsadt(Lmem,T)

(Lmem(31-16))- (T)→dst(39-16)
(Lmem(15-0))+(T)→dst(15-0) Else (Lmem)+(T)+(T)<<16))→dst 当C16=0时该指令受SXM和OVM的影响,并能影响C和

OVdst。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:从32 bit长数据存储器操作器Lmem中减/加T寄存 器的值,结果存放在dst中。C16的值决定指令的方式:

C16=0 指令以双精度方式执行。T寄存器的值与其左移16
bit后的值连在一起组成的32 bit的值与Lmem相减,结果存放在 dst中。 C16=1 指令以双16 bit方式执行。Lmem的高16位数减去T 寄存器的值,结果存放在dst的高端(39~16位);同时,把T寄存 器的值加到Lmem的低16 bit中,结果存放在dst的低端(15~0位)。 在这种方式下,不管OVM位的状态如何,结果都不进行饱和运 算。该指令只有当C16置为1时才有意义。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.92

DSADT
A A T C C16 AR3

*AR3+,A
BeforeInstructi n o 00 0000 0000 0000 00 0000 2345 0 0 0100 A T C C16 AR3 AfterInstructi n o FF F1EF 11 11 2345 0 0 0102

Data Memory
0100H 0101H

1534
00AA

0010H 0101H

1534 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.93
DSADT *AR3-,A
Before Instruction A T C C16 AR3 00 0000 0000 2345 0 1 0100 A T C C16 AR3 After Instruction FF F1EF 579B 2345 1 1 00FE

Data Memory
0100H 0101H 1534 3456 0010H 0101H 1534 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) DSUB 语 法:助记符方式 DSUB Lmem,src 表达式方式 src =src-dbl(Lmem) src-=dbl(Lmem) src=src-dual(Lmem) src-=dual(Lmem) 执行过程:if C16=1 Then (src)-(Lmem)→src Else

(src(31-16))-(Lmem(31-16))→src(39-16)
(src(15-0))-(Lmem(15-0))→src(15-0)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

当C16=0时该指令受SXM和OVM的影响。并能影响C和
OVdst。 功能描述:从源累加器中减去32 bit长数据存储器操作数 Lmem的值,结果存在源累加器src中。C16的值决定了指令的方 式: C16=0 指令以双精度方式执行。从源累加器中减去Lmem的 值。 C16=1 指令以双16 bit方式执行。从源累加器src的高端(31~ 16位)减去Lmem的高16 bit,结果存放在src的高24 bit(39~16位); 同时,从src的低端(15~0位)减去Lmem的低16 bit值,结果存放在 源累加器src的低端(15~0位)。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.94 DSUB *AR3+,A
BeforeInstructi n o A C16 AR3 00 5678 8888 0 0100 A C16 AR3 AfterInstructi n o 00 4144 5432 0 0102

Data Memory
0100H 0101H 1234 3456 0100H 0101H 1234 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.95

DSUB *AR3-,A
BeforeInstructi n o A C C16 AR3 DataMemory 0100H 0101H 1534 3456 1534 3456 00 5678 3933 1 1 0100 A C C16 AR3 00FE AfterInstructi n o 00 4144 04DD 1 1

0100H 0101H

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) DSUBT 语 法:助记符方式 DSUBT Lmem,dst 执行过程:if C16=1 表达式方式 dst=dbl(Lmem)-T dst=dual(Lmem)-T

Then
(Lmem(31-16))-(T)→dst(39-16) (Lmem(15-0))-(T)→dst(15-0) Else (Lmem)-((T)+(T<<16))→dst

当C16=0时该指令受SXM和OVM的影响。并能影响C和OVdst。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:该指令的功能是从32 bit长数据存储器操作器 Lmem中减去T寄存器的值,结果存放在目的累加器dst中。C16的 值决定指令的方式: C16=0 指令以双精度方式执行。T寄存器的值与其左移16 bit

后的值连在一起组成的32 bit的值与Lmem相减,结果存放在dst中。

C16=1 指令以双16 bit的方式执行。从Lmem的高16 bit值中减
去T寄存器的内容,结果存放在目的累加器的高端(39~16位);同 时,从Lmem的低16 bit值中减去T寄存器的值,结果存放在目的累 加器dst的低端(15~0位)。在这种方式下,不管OVM位的值为多 少,结果都不进行饱和运算。

该指令只有当C16置为1时(双16 bit方式)才有意义。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.96
DSUBT *AR3+,A
Before Instruction A T C16 AR3
Data Memory

After Instruction A T C16 AR3 FF F1FF 1 1 11 2345 1 0102

00

0000 0000 2345 1 0100

0100H 0101H

1534 3456

0100H 0101H

1534 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.97 DSUBT *AR3-,A
Before Instruction A T C16 AR3 00 0000 0000 2345 1 0100 A T C16 AR3 After Instruction FF F1FF 1111 2345 1 00FE

Data Memory
0100H 0101H 1534 3456 0100H 0101H 1534 3456

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

6) 特殊应用运算指令
特殊应用运算指令,共15条,如下所示。

(1) ABDST
语 法:助记符方式 表达式方式

ABDST Xmem,Ymem
执行过程:(B)+︱(A(32-16))︱→B

abdst(Xmem,Ymem)

((Xmem) - (Ymem))<<16 →A

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受OVM、PRCT和SXM影响;执行结果影响C、 OVA和OVB。

功能描述:计算两向量Xmem和Ymem之差的绝对值。累
加器A的高段(32~16 bit)的绝对值加到累加器B中。Xmem减去

Ymem的差左移16位,然后存放在累加器A中。如果分数方式
位元为1即FRCT=1,则该绝对值需乘2。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.98
ABDST *AR3+,*AR4+
Before Instruction A B AR3 AR4 FRCT FF ABCC 00 0000 FFFF 0000 0100 0020 0 A B AR3 AR4 FRCT After Instruction FF 00 ABCD 0000 0000 5434 0100 0020 0

Data Memory
0100H 0200H 0055 00AA 0010H 0200H 0055 00AA

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) ABS
语 法:助记符方式 ABS src[,dst] 表达式方式 dst=︱src︱

执行过程:︱(src)︱→dst(or src if dst not specified) OVM影响这条指令的情况如下: 如果OVM=1,80 0000 0000H的绝对值为00 7FFF FFFFH; 如果OVM=0,80 0000 0000H的绝对值为80 0000 0000H。

该指令影响C和OVdst(如果dst=src就是OVsrc)。
功能描述:计算src的绝对值,然后装入dst。如果没有定 义dst,绝对值就装入src中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.99

ABS A, B
Before Instruction A B FF FF FFFF FFFF FFCB FC18 A B After Instruction FF 00 FFFF 0000 FFCB 0035

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.100 ABS
Before Instruction A 03 1234 5678 A After Instruction 00 7FFF FFFF

OVM

1

OVM

1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) CMPL 语 法:助记符方式 CMPL src [,dst] 执行过程:( src )→dst 该指令不影响任何状态位。 功能描述:计算src的反码(逻辑反),结果存放在dst中;若 没有指定,dst就存放在src中。 表达式方式 dst= ~ src

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.101 CMPL A,B
Before Instruction A B FC 00 DFFA 0000 ACBB 7899 A B After Instruction FC 03 DFFA 2005 ACBB 5344

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) DELAY 语 法: 助记符方式 表达式方式

DELAY Smem
执行过程:(Smem)→Smem +1

delaya(Smem)

该指令不影响任何状态。
功能描述:该指令把单数据存储器单元Smem的内容复制

到紧接着的较高地址单元中去。数据复制完后,原单元的内
容保持不变。该功能在数字信号处理中实现一个Z延迟是相当 有用的。这种延迟操作在LTD和MACD指令中可以见到。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.102 DELAY *AR3
Before Instruction AR3 0100 AR3 After Instruction 0100

Data Memory
0100H 0101H 6AAA 0000 0100H 0101H 6AAA 6AAA

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) EXP 语 法:助记符方式 EXP src 执行过程:if(src)= 0 Then 0→T Else src的引导位数-8→T 表达式方式 T = exp(src)

该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:计算指数值并把结果存放在T寄存器中,该值是 一个范围在8~31之间的带符号的二进制补码值。指数值是通

过累加源累加器src的引导位数减8得到的。引导位数等于消除
40 bit源累加器src中除符号位以外的有效位所需左移的位数。 指令结束后,src没有被修改。 如果引导位数减去8的值为负,则是因为累加器的保护位 中有有效位。详情请看归一化指令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.103 EXP A
Before Instruction A T FF FFFF EEEE 0000 A T After Instruction FF FFFF EEEE 0012

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) FIRS 语 法:助记符方式 FIRS Xmem,Ymeme,pmad 执行过程:pmad→PAR 如果(RC)≠0 (B) +(A(32-16))×(由PAR寻址的Pmem)→B ((Xmem) + (Ymem))<<16→A (PAR) + 1→PAR (RC) -1→RC 表达式方式 firs (Xmem, Ymem, pmad )

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受SXM、FRCT和OVM的影响,并能影响C、OVA 和OVB。 功能描述:该指令实现一个对称的有限冲激响应滤波器。 累加器A的高端(32~16位)和由pmad(存放在程序地址寄存器

PAR中)寻址的一个Pmem值相乘, 结果加到累加器B中。同时,
存储器操作数Xmem和Ymem相加, 结果左移16 bit, 然后装入到 累加器A中。在下一个循环中, pmad加1。一旦循环流水开始, 该指令就成为单周期指令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.104 FIRS *AR3+,*AR4+,COEFFS
Before Instruction A B FRCT AR3 AR4 00 00 0077 0000 0000 0000 0 0100 0200 A B FRCT AR3 AR4 After Instruction 00 00 00FF 0008 0000 762C 0 0101 0201

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

Data Memory
0100H 0200H 0055 00AA 0100H 0200H 0055 00AA

Program Memory
COEFFS 1234 COEFFS 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(7) LMS
语 法:助记符方式 LMS Xmem,Ymem 表达式方式 lms(Xmem,Ymem)

执行过程:(A)+(Xmem)<< 16 + 215→A (B)+(Xmem)×(Ymem)→B

该指令受SXM、FRCT和OVM的影响,并影响C、OVA和 OVB。
功能描述:该指令是求最小均方值算法。双数据存储器操 作数Xmem左移16 bit后加到累加器A中,再加上215,结果存放 在累加器A中。同时并行执行Xmem与Ymem相乘,其结果加到 累加器B中。Xmem不会冲掉T寄存器的值,因而T寄存器总包含 着用于修改系数的错误值。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.105 LMS *AR3+,*AR4+
Before Instruction A B FRCT AR3 AR4 Data Memory 0100H 0200H 0044 0099 0100H 0200H 0044 0099 00 00 7777 0000 8888 0100 0 0100 0200 A B FRCT AR3 AR4 After Instruction 00 00 77BC 0000 0888 29A4 0 0101 0201

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(8) MAX 语 法:助记符方式 MAX dst 执行过程:if(A>B) Then(A)→dst 0→C Else (B)→dst 1→C 该指令会影响C。 功能描述:比较两累加器的内容,并把较大的一个值存放在 表达式方式 dst= max(A,B)

目的累加器dst中。如果最大值是在累加器A中,则进位位C被清
0,否则置为1。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.106 MAX A
Before Instruction A B C FFEE FFCC 1 A B C After Instruction FFEE FFCC 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.107 MAX A
Before Instruction A B C 00 00 0000 0000 0055 1234 0 A B C After Instruction 00 00 0000 0000 1234 1234 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(9) MIN 语 法:助记符方式 MIN dst 表达式方式 dst= min(A,B)

执行过程:if(A<B)
Then(A)→dst 0→C Else (B)→dst 1→C 该指令会影响C。 功能描述:比较两累加器值的大小,把较小值存放在目的 累加器dst中。如果最小值是在累加器A中,则进位位C被清0;否 则置为1。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.108 MIN A
Before Instruction A B C FFCB FFF6 1 A B C After Instruction FFCB FFF6 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.109 MIN A
Before Instruction A B C 00 00 0000 0000 1234 1234 0 A B C After Instruction 00 00 0000 0000 1234 1234 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(10) NEG
语 法:助记符方式 NEG src[,dst] 执行过程:(src)×(-1)→dst 表达式方式 dst = -src

该指令受OVM的影响,并会影响C和OVdst(当dst=src时,为OVsrc)。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:计算源累加器(可能是A或B)值的二进制补码, 并把结果存放在dst或src中。只要累加器的值不为0,指令就对 进位位C清0;反之,如果累加器值为0,进位位置为1。 如果累加器的值等于80 0000 0000H,该运算将引起溢出,

因为80 0000 0000H的补码超过了累加器允许的最大值。如果
OVM=1,目的累加器dst赋值为00 7FFF FFFFH;如果OVM=0, dst赋值为80 0000 0000H。dst的OV位在这两种情况下都置位, 以表明溢出。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.110 NEG A,B

Before Instruction A B OVA FF 00 FFFF 00000 F228 1234 0 A B OVA

After Instruction FF 00 FFFF FFFF F228 0DD8 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.111 NEG B,A
BeforeInstructi n o A B OVB 00 0000 1234 00 8000 0000 0 A B OVB AfterInstructi n o FF 8000 0000 00 8000 0000 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.112 NEG A
Before Instruction A OVA OVM 80 0000 0000 0 0 A OVA OVM After Instruction 80 0000 0000 1 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.113 NEG A
Before Instruction A OVA OVM 80 0000 0000 0 1 A OVA OVM After Instruction 00 7FFF FFFF 1 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(11) NORM 语 法:助记符方式 NORM src[,dst] 表达式方式 dst=src<<TS dst=norm(src,TS) 执行过程:(src)<<TS→dst 该指令受SXM和OVM的影响,并会影响OVdst(当dst=src 时,为OVsrc)。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:对源累加器src中的带符号数进行归一化,结果 存放在dst或src(如果没有指明就是dst)中。定点数的归一化是通 过寻找符号扩展数的数量级,把这个数分成数值部分和指数部 分。该指令允许累加器的单周期归一化,指令EXP就是一例。

移位数由T寄存器的5~0位确定,并编码成二进制补码的形式。
有效的移位数是16~31。执行过程中,在读操作数阶段,移位 器获得移位数(在T寄存器中);在执行阶段进行归一化操作。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.114 NORM B,A
BeforeInstructi n o A B T FF FFFF F001 21 0A0A 0A0A 0FF9 A B T AfterInstructi n o 00 4214 1414 21 0A0A 0A0A 0FF8

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(12) POLY 语 法:助记符方式 表达式方式

POLY Smem

poly(Smem)

执行过程:Round(A(32-16)×(T)+(B))→A

(Smem)<<16→B
该指令受FRCT、OVM和SXM的影响,同时也能影响OVA。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:单数据存储器操作数Smem的内容左移16 bit, 结果存放在累加器B中。同时并行执行累加器A的高端(32~16 位)与T寄存器的值相乘,乘积加到累加器B中。再对此运算的 结果凑整,最后把结果存放在累加器A中。该指令在多项式计

算中为实现每一单项只执行一个周期是很有用的。该指令代码
占一个字,但当Smem采用长偏移间接寻址或绝对寻址方式时 就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.115 POLY *AR3+%
Before Instruction A B T AR3 00 00 1111 0001 0000 0000 5555 0200 A B T AR3 After Instruction 00 00 05B1 2000 0000 0000 5555 0201

Data Memory
0200H 0200 0200H 0200

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(13) RND 语 法:助记符方式 RND src[,dst] 表达式方式 dst=rnd (src)

执行过程:(src) +8000H→dst 该指令受OVM的影响。 功能描述:把215加到源累加器src中以对其进行凑整。凑 整后的值存放在dst或src(在没有指定dst的情况下为src)中。注 意:该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.116 RND A
Before Instruction A OVM 00 7FFF FFFF 1 A OVM After Instruction 00 7FFF 7FFF 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(14) SAT 语 法:助记符方式 SAT src 执行过程:Saturate (src)→src 该指令会影响OVsrc。 功能描述:无论OVM的值是什么,都把源累加器src的值 饱和成32 bit。 表达式方式 saturate (src)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.117

SAT B
Before Instruction B OVB 71 1111 1111 X B OVB After Instruction 00 7FFF FFFF 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.118 SAT A
Before Instruction A OVA F8 1234 5678 X A OVA After Instruction FF 8000 0000 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.119

SAT B
Before Instruction B OVB 00 0012 3456 X B OVB After Instruction 00 0012 3456 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(15) SQDST 语 法:助记符方式 SQDST Xmem, Ymem 表达式方式 sqdst (Xmem, Ymem)

执行过程:(A(32-16))×(A(32-16))+(B)→B ((Xmem)-(Ymem))<<16→A 该指令受OVM、FRCT和SXM的影响,并能影响C、INTM、 OVA和OVB。

功能描述:计算两个向量距离的平方。累加器A的高端
(32~16位)平方后加到累加器B中。Xmem与Ymem相减,其差 左移16 bit存放到累加器A中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.120 SQDST *AR3+,AR4+
Before Instruction A B FRCT AR3 AR4 FF 00 ABCD 0000 0000 0000 0 0100 0200 A B FRCT AR3 AR4 After Instruction FF 00 FFAB 1BB1 0000 8229 0 0101 0201

Data Memory
0100H 0200H 0055 00AA 0100H 0200H 0055 00AA

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.逻辑运算指令
C54x DSP的逻辑运算指令包括与、或、异或、移位及测试 指令,分别叙述如下。

1) ―与”(AND)指令
“与”(AND)指令,共2条,如下所示。 (1) AND 语 法:助记符方式 ① AND Smem,src 表达式方式 ① src=src & Smem

src &= Smem
② AND #1k[,SHIFT],src[,dst] ② dst=src & #1k [<<SHIFT] dst &= #1k [<<SHIFT]

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

③ AND #1k,16,src [,dst]

③ dst=src & #1k <<16
dst &= #1k<<16

④ AND src[,SHIFT] [,dst]

④ dst=dst & src [<<SHIFT] dst &= src [<<SHIFT]

执行过程: ① (Smem)AND(src)→src ② 1k <<SHIFT AND(src)→dst ③ 1k <<16 AND(src)→dst ④ (dst)AND(src)<<SHIFT→dst

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:该指令的功能是使以下几种数据和src相与: * 一个16 bit单数据存储器操作数Smem; * 一个16 bit立即数1 k; * 源或目的累加器。 如果确定了移位,操作数在移位后才进行与操作。对于左 移,低位添0,高位不进行符号扩展;对于右移,高位不进行 符号扩展。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.121 AND A, 3, B
Before Instruction A B 00 00 0000 0000 1200 1800 A B After Instruction 00 00 0000 0000 1200 1000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) ANDM 语 法:助记符方式 表达式方式

ANDM #1k,Smem

Smem=Smem & #1k
Smem &= #1k

执行过程:1k AND(Smem)→Smem
该指令不影响任何状态位。

功能描述:16 bit单数据存储器操作数Smem和一个16 bit长
立即数1k相与,结果存放在原Smem所在单元中。该指令不能 循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.122 ANDM #00FFh,*AR4+
Before Instruction AR4 0100 AR4 After Instruction 0101

Data Memory
0100H 0555 0100H 0055

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2) ―或”(OR)指令 “或”(OR)指令,共2条,如下所示。 (1) OR 语 法:助记符方式 ① OR Smem,src 表达式方式 ① src=src∣Smem src∣=Smem

② OR﹟1k[,SHFT],src[,dst]
③ OR﹟1k,16,src[,dst] ④ OR src[,SHIFT],[,dst]

② dst=src∣﹟1k[<<SHFT]
dst∣=﹟1k[<<SHFT] ③ dst=src∣﹟1k<<16

dst∣=﹟1k<<16
④ dst=dst∣src[<<SHIFT] dst∣=src[<<SHIFT]

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程:① (Smem)OR(src(15-0))→src src(39-16)不变。 ② 1k<<SHFT OR(src)→dst ③ 1k<<16OR(src)→dst ④ src或[dst]OR(src)<<SHIFT→dst 该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:源累加器src和一个单数据存储器操作数Smem、 一个左移后的16 bit立即数、dst或它本身相或。结果可按指定 的方式移位,并存放在dst中,如果没有指定dst,就存放在src 中。对于正向移位(左移),低位添0,高位不进行符号扩展;

对于反向移位(右移),高位不进行符号扩展。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.123 OR A,+3,B
Before Instruction A B 00 00 0000 0000 1200 1800 A B After Instruction 00 00 0000 0000 1200 9800

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) ORM 语 法:助记符方式 ORM ﹟1k,Smem Smem∣=﹟1k 执行过程:1k OR(Smem)→Smem 表达式方式 Smem=Smem∣﹟1k

该指令不会影响任何状态位。
功能描述:一个单数据存储器操作数Smem与一个16 bit立

即数相或,结果存放在Smem中。该指令实现的是存储器到存
储器的操作。注意,该指令不能循环执行。该指令代码占两个 字,但当Smem采用长偏移间接寻址或绝对寻址方式时就会多

占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.124

ORM 0404H,*AR4+

Before Instruction AR4 0100 AR4

After Instruction 0101

Data Memory
0100H 4444 0100H 4444

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3) ―异或”(XOR)指令 “异或”(XOR)指令,共2条,如下所示。

(1) XOR
语 法:助记符方式 ① XOR Smem,src ② XOR #lk[,SHFT],src[,dst] ③ XOR #lk,16, src[,dst] 表达式方式 ① src=src^Smem src^=Smem ② dst=src^#lk[,SHFT] dst^=#lk[,SHFT] ③ dst=src^#lk<<16 dst^=#lk<<16

④ XOR src[,SHIFT][,dst]

④ dst=dst^src[<<SHFT]
dst^=src[<<SHFT]

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程: ① (Smem)XOR(src)→src ② lk<<SHFT XOR(src)→dst

③ lk<<16 XOR (src)→dst
④ (src)<<SHIFT XOR(dst)→dst

该指令不影响任何状态位。
功能描述:16 bit单数据存储器操作数Smem(按指令指定移

位)与所选定的累加器相异或,结果存放在dst或src中。对于左
移,低位添0,高位不进行符号扩展;对于右移,不进行符号 扩展。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.125
XOR *AR3,A
Before Instruction A AR3 00 00FF 1200 0100 A AR3 After Instruction 00 00FF 0400 0101

Data Memory 0100H 1600 0100H 1600

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.126 XOR A,+3,B
Before Instruction A B 00 00 0000 0000 1200 1800 A B After Instruction 00 0000 1200

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) XORM 语 法:助记符方式 表达式方式

XORM #lk,Smem

Smem=Smem^#lk
Smem^=#lk

执行过程:lk XOR (Smem) →Smem
该指令不影响任何状态位。

功能描述:一个数据存储器单元Smem的内容和一个16 bit
常数lk相异或,结果写到Smem中。注意,该指令不能循环执 行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.127 XORM #0404H,*AR4Before Instruction AR4 0100 AR4 After Instruction 00FF

Data Memory
0100H 3434 0100H 3030

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

4) 移位指令 移位指令,共6条,如下所示。 (1) ROL

语 法:助记符方式
ROL src 执行过程: (C)→src(0)

表达式方式
src=src\\CARRY

(src(30-0))→src(31-1) (src(31))→C 0→src(39-32) 该指令受C的影响,并能影响C。 功能描述:源累加器src循环左移一位。进位位C的值移入src的

最低位,src的最高位移入C 中;保护位清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.128

ROL A
Before Instruction A C 5F B000 2345 0 A C After Instruction 00 6000 468A 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) ROLTC 语 法: 助记符方式 ROLTC src 执行过程: (TC)→src (0) (src(30-0))→(31-1) (src(31))→C 0→src(39-32) 表达式方式 roltc (src)

该指令受TC影响,并能影响C。
功能描述:源累加器src循环左移一位。TC的值移入src的 最低位,src的最高位移到进位位C中;保护位清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.129 ROLTC A
Before Instruction A C TC 81 C000 6666 X 1 A C TC After Instruction 00 8000 CCCD 1 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) ROR 语 法: 助记符方式 ROR src 执行过程: (C)→src (31) (src(31-1))→src(30-0) 表达式方式 src=src//CARRY

(src(0))→C
0→src(39-32) 该指令受C的影响,并能影响C。 功能描述:源累加器src循环右移一位。进位位C的值移入 src的最高位,src的最低位移到C中;保护位清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.130 ROR A
Before Instruction A C 7F B000 2345 0 A C After Instruction 00 5800 11A2 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) SFTA 语 法:助记符方式 表达式方式

SFTA src, SHIFT[,dst]
执行过程:if SHIFT< 0 Then (src((-SHIFT)-1))→C

dst=src<<C SHIFT

(src (39-0)) <<SHIFT→dst

if SXM =1
Then (src(39))→dst(39- (39+(SHIFT+1))) (或如果没有指定 src (39- (SHIFT+1))),

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

Else 0→dst(39- (39+(SHIFT+1))) (如果没有指定dst,就为src(39-

(39+(SHIFT+1)))
Else (src(39-SHIFT))→C (src)<<SHIFT→dst 0→dst ((SHIFT-1)-0) (如果没有指定dst,就为src((SHIFT-1) -0)) 该指令受SXM和OVM的影响,并能影响C和OVdst(如果 dst=src,就为OVdst)。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:该指令对源累加器src进行算术移位,结果存放 在dst(如果没有指定dst就为src)中。指令的执行由SHIFT的值决 定。 ① 如果SHIFT的值小于0,那么: * src((-SHIFT) -1)复制到进位位C 中; * 如果SXM为1,指令执行算术右移,源累加器src的最高 位移入到 dst(39- (39+(SHIFT+1)))中; * 如果SXM为0,把0写进dst(39- (39+(SHIFT+1)))中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

② 如果SHIFT的值大于0,那么: * src(39-SHIFT)复制到进位位C中; * 令产生一个算术左移;

* 把0写进dst((SHIFT-1)-0)。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.131 SFTA A,-5,B
Before Instruction A B C SXM FF 00 8765 2345 0055 5432 X 1 A B C SXM After Instruction FF FF 8765 FC3B 0055 2802 1 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.132 SFTA B,+5
Before Instruction B C OVM SXM 80 AA00 1234 0 0 0 B C OVM SXM After Instruction 15 4002 4680 1 0 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) SFTC
语 法:助记符方式 SFTC src 表达式方式 shiftc (src)

执行过程:if (src) =0
Then 1→TC

Else
if (src (31) XOP (src (30)) =0 Then (有两个有效符号位) 0→TC (src)<<1→src Else (只有一个符号) 1→TC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令会影响TC。 功能描述:如果源累加器src有两个有效符号位,就把32 bit的src左移1位,保护位保持不变,且使测试控制位TC清0。 如果只有一个符号位,对TC置1。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.133 SFTC A
Before Instruction A TC FF FFFF F001 X A TC After Instruction FF FFFF B002 0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) SFTL
语 法:助记符方式 SFTL src, SHIFT[,dst] 执行过程: if SHIFT < 0 Then 表达式方式 dst = src<<< SHIFT

src ((-SHIFT)-1)→C
src (31-0)<< SHIFT→dst 0 →dst (39-(31 + (SHIFT +1))) if SHIFT = 0 Then 0→C

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

Else src (31- (SHIFT-1))→C src ((31-SHIFT)-0)<<SHIFT→dst 0 → dst((SHIFT-1)-0)(如果没有指定dst,就为src((SHIFT-1)-0)) 0 → dst(39-32)(如果没有指定dst,就为src(39-32)) 该指令会影响进位位C。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:对源累加器src进行逻辑移位,结果存放在 dst(如果没有指定dst就存放在src)中。指令的执行由SHIFT的值 决定。 ① 如果SHIFT的值小于0,那么:

* src((-SHIFT) -1)复制到进位位C中去;
* 令执行一个逻辑右移; * 把0写进dst((SHIFT-1)-0)中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

② 如果SHIFT的值大于0,那么: * 31- (SHIFT-1)复制到进位位C中;

* 令执行一个逻辑左移;
* 把0写入dst((SHIFT-1)-0)中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.134 SFTL A,-5,B
Before Instruction A B C FF FF 8755 8000 5555 0000 0 A B C 00 After Instruction FF 8755 5555

043A

AAAA 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.135 SFTL B,+5
Before Instruction B C 80 AA00 1234 0 B C After Instruction 00 4002 4680 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

5) 测试指令 测试指令共5条,如下所示。

(1) BIT
语 法:助记符方式 表达式方式

BIT Xmem,BITC
执行过程:(Xmem(15-BITC))→TC

TC = bit(Xmem,bit-code)

功能描述:把双数据存储器操作数Xmem的指定位复制到 状态 寄存器ST0的TC位。表3.3列出了对应于数据存储器中每一 位的位代码,即位代码对应了BITC,位地址对应了15–BITC。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.3 数据存储器中的位代码
位地址 0 1 2 3 4 5 6 7 位代码 1111 1110 1101 1100 1011 1010 1001 1000 位地址 8 9 10 11 12 13 14 15 位代码 0111 0110 0101 0100 0011 0010 0001 0000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.136 BIT *AR5+,(15-12),test bit 12
Before Instruction AR5 TC 0100 0 AR5 TC After Instruction 0101 1

Data Memory
0100H 7688 0100H 7688

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) BITF 语 法:助记符方式 BITF Smem,#1k 执行过程: If((Smem)AND 1k)= 0 Then 0→TC Else 1→TC 该指令影响TC。 表达式方式 TC = bitf(Smem,#1k)

功能描述:测试单数据存储器值Smem中指定的某些位。如
果指定的位为0,状态寄存器ST0的TC位清0;否则TC置1。1k 常数在测试位时起屏蔽作用。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.137 BITF DAT5,#00FFH
Before Instruction TC DP X 004 TC DP After Instruction 0 004

Data Memory
0205H 5400 0205H 5400

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) BITT 语 法:助记符方式 表达式方式

BITT Smem

TC = bitt(Smem)

执行过程:(Smem(15-T(3-0)))→TC 该指令影响TC。 功能描述:把单数据存储器值Smem的指定位复制到状态 寄存器ST0的TC位。T寄存器的低4位(3~0位)的值确定了被复 制的位代码,15-T(3-0)对应着位地址。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.138 BITT *AR7+C
Before Instruction T TC AR0 AR7 C 0 0008 0100 T TC AR0 AR7 After Instruction C 1 0008 0108

Data Memory
0100H 0008 0100H 0008

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) CMPM 语 法:助记符方式 CMPM Smem,#lk 执行过程: If(Smem)=lk 表达式方式 TC=(Smem=#lk)

Then 1→TC
Else 0→TC 该指令影响TC。 功能描述:比较16 bit单数据存储器操作数Smem和16 bit的 常数lk是否相等。如果相等,TC置1,否则清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.139

CMPM *AR4+,#0404H
Before Instruction TC AR4 After Instruction

1
0100

TC AR4

0 0101

Data Memory

0100H

4444

0100H

4444

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) CMPR 语 法:助记符方式 CMPR CC,Arx 表达式方式 TC=(AR0= =ARx)

TC=(AR0﹥ARx)
TC=(AR0﹤ARx) TC=(AR0!=ARx) 执行过程: If(cond) Then 1→TC Else 0→TC 功能描述:比较指定的辅助寄存器(ARx)和AR0的值,然后根据 结果决定TC的值。比较由条件代码CC的值决定,见表3.4。如果

条件满足,TC置1;否则清0。所有的条件都以无符号运算计算。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.4 条件代码CC值的说明
条 件 EQ LT GT NEQ 条件代码(CC) 00 01 10 11 说 明 测试 Arx 是否等于 AR0 测试 Arx 是否小于 AR0 测试 Arx 是否大于 AR0 测试 Arx 是否不等于 AR0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.140

CMPR 2,AR4
Before Instruction TC AR0 AR4 1 8FFF 6FFF TC AR0 AR4 After Instruction 0 8FFF 6FFF

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

4.程序控制
C54x DSP的程序控制指令包括分支转移指令、子程序调用 指令、中断指令、返回指令、重复指令、堆栈处理指令及混合 程序控制指令。 1) 分支转移指令

分支转移指令共6条,如下所示。
(1) B[D] 语 法:助记符方式 B[D] pmad 表达式方式 goto pmad dgoto pmad

执行过程:pmad→PC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令不影响任何状态位。 功能描述:指令指针指向指定的程序存储器地址(pmad), 该地址可以是一个符号或数字。如果是延迟转移(指令后缀D确 定),紧接着转移指令的两条单字指令或双字指令从程序存储 器中取出先执行。该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.141 D—先执行ANDM,再执行B BD 1000H ANDM 4444H, *AR1+
Before Instruction PC 1F45 PC After Instruction 1000

操作码与4444H相与后,程序继续从1000H单元开始执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) BACC[D] 语 法:助记符方式 BACC[D] src 表达式方式 goto src dgoto src 执行过程:(src(15-0))→PC 功能描述:程序指针PC指向src的低位(15~0位)所确定的16

bit地址。如果是延迟转移(由指令后缀D确定),紧跟着转移指令
的两条单字或一条双字指令从程序存储器中取出先执行。该指 令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.142 A的低16位---PC BACC A
Before Instruction A PC 00 0000 3000 1F45 A PC After Instruction 00 0000 3000 3000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) BANZ[D] 语 法:助记符方式 表达式方式

BANZ[D] pmad,Sind

if(Sind!=0) goto pmad
if(Sind!=0) dgoto pmad

执行过程: If((ARx)≠ 0)
Then pmad→PC

Else (PC)+ 2→PC
该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:如果当前辅助寄存器ARx不为0,则程序指针 转移到指定的程序存储器地址(pmad);否则PC指针加2。如果 是延迟转移(由指令后缀D决定),紧接着这条转移指令的两条 单字指令或一条双字指令从程序存储器中取出执行。该指令 不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.143

BANZ 1FFFH,*AR3Before Instruction PC AR3 1000 0004 PC AR3 After Instruction 1FFF 0003

0004!=0 1FFFH--PC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) ?BC[D]
语 法:助记符方式
BC[D]pmad,cond[,cond[,cond]]

表达式方式
if(cond[,cond[,cond]])
[d]goto pmad

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.5 BC[D]指令的条件代码所对应的条件表
条 件 说 明 条 件 说
BIO



BIO C TC AEQ ANEQ AGT AGEQ ALT ALEQ AOV ANOV UNC

BIO 为低

NBIO NC NTC BEQ BNEQ BGT BGEQ BLE BLEQ BOV BNOV

C=1 TC = 1 (A)= 0 (A)≠ 0 (A)>0 (A)≥0 (A)< 0 (A)≤ 0 A 溢出 A 没有溢出 无条件的

为高 C=0

TC = 0 (B)= 0 (B)≠ 0 (B)> 0 (B)≥ 0 (B)< 0 (B)≤ 0 B 溢出 B 没有溢出

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程: If(cond(s))
Then pmad→PC Else (PC)+2→PC 如果选择OV或NOV,该指令就会影响OVA或OVB。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:如果满足特定的条件,指令就转移到程序存储 器地址(pmad)上。采用延迟方式,紧接着该指令的两条单字指 令或一条双字指令从程序存储器取出先执行;但如果条件满足, 那么这两个字将从流水中冲掉,程序从pmad开始执行;

如果条件不满足,PC 加2且紧接着该指令的两个字继续执
行。 指令在把控制权交给程序的另一部分之前可对多个条件进 行测试。指令可测试相互独立的条件或者是相关联的条件;但 多个条件只能出自同一组的不同类,如表3.6所示。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.6 同一组不同类的指令
组 A 类 EQ NEQ LT LEQ GT GEQ 1 B 类 OV NOV A 类 TC NTC 组 2 B 类 C NC

C

类 BIO NBIO

例如,能同时测试TC、C和BIO,但不能同时测试NTC、C

和NC。因为C和NC位于同一类。另外该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.144 BC 1FFFH,AGT
Before Instruction A PC 00 0000 0053 1000 A PC After Instruction 00 0000 0053 1FFF

AGT--(A>0) 1FFFH--PC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.145 BC 2000H,AGT
Before Instruction A PC FF FFFF FFFF 1000 A PC After Instruction FF FFFF FFFF 1002

(A)<0 (PC)+2--PC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.146 BCD 1000H,BOV ANDM 4444H,*AR1+
Before Instruction PC BOV 3000 1 PC BOV

BOV—B溢出 BCD—先执行与运算 (AR1)=?
After Instruction 1000 0

注意:存储器单元的数据和4444H相与后,如果满足OVB就 发生转移;否则继续按顺序执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.147 BC 1000H,TC,NC,BIO
Before Instruction PC C PC C

TC测试位--TC=1, NC—C=0, BIO—BIO为低
After Instruction 3002 1

3000 1

C=1 不满足(PC)+2--PC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) FB[D] 语 法:助记符方式 表达方式

FB[D]extpmad

far goto extpmad
far dgoto extpmad

执行过程: ( pmad (15-0 ) )→PC
( pmad (22-16 ) )→XPC

该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:程序指针PC指向由pmad的22~16位决定的页

中pmad的15~0位所确定的程序存储器地址。pmad可以是一
个符号或一个具体的数字。如果是延迟转移,紧接着该指令 的两条单字指令或一条双字指令从程序存储器中取出先执行。 注意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.148 FB 012000H
Before Instruction PC XPC 1000 00 PC XPC After Instruction 2000 01

2000H装入PC,01装入XPC,程序继续从单元开始执行。

0 1 2 0 0 0 0000 0001 0010 0000 0000 0000 15—0---PC 16-22--XPC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) FBACC[D] 语 法:助记符方式 FBACC[D] src 表达式方式 far goto src far dgoto src 执行过程:(src(15-0))→PC (src(22-16))→XPC 该指令不影响任何状态位。 同上页

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:该指令是把源累加器src的22~16位值装入 XPC,并让PC指向src的低端(15~0位)所确定的16 bit地址。 如果是延迟转移,紧接着该指令的两条单字指令或一条双字 指令从程序存储器中取出先执行。该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.149 FBACCD B ANDM 4444H *AR1+
Before Instruction B XPC 00 007F 2000 01 B XPC After Instruction 00 007F 2000 7F

注意:操作数和4444H相与后,7FH装入XPC;程序继续从

第7H页的2000H单元开始执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2) 子程序调用指令
子程序调用指令共5条,如下所示。 (1) CALA[D] 语 法:助记符方式 CALA[D] src 表达式方式 call src dcall src

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程:非延迟调用 (SP) -1→SP (PC)+1→TOS (src(15-0))→PC SP—堆栈指针 PC---程序计数器

延迟调用
(SP) -1→SP (PC)+3→TOS (src(15-0))→PC 该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:程序指针转移到src的低位所确定的16 bit地址 单元,返回地址压入栈顶。如果是延迟调用,紧接着该指令 的两条单字指令或一条双字指令从程序存储器中取出先执行。 该指令不能循环。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.150 CALA A

(SP) -1→SP (PC)+1→TOS (src(15-0))→PC
After Instruction A PC SP 00 0000 3000 3000 1110

Before Instruction A PC SP 00 0000 3000 0025 1111

Data Memory
1110H 4567 1110H 0026

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) CALL[D] 语 法:助记符方式 CALL[D] pmad 表达式方式 call pmad dcall pmad

执行过程: 非延迟调用
(SP) -1→SP (PC)+2→TOS

pmad→PC
延迟调用 (SP) -1→SP (PC)+4→TOS pmad→PC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令不影响任何状态位。 功能描述:程序指针指向确定的程序存储器地址(pmad), 返回地址在pmad装入PC之前压入栈顶保存。如果是延迟调用, 紧接着该指令的两条单字指令或一条双字指令从程序存储器中 取出先执行。该指令不能循环。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.151 CALL 1111H
Before Instruction PC SP 0025 1111 PC SP

(SP) -1→SP (PC)+2→TOS pmad→PC
After Instruction 1111 1110

Data Memory
1110H 4567 1110H 0027

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) CC[D] 语 法:助记符方式
CC[D] pmad,cond[,cond[,cond]]

表达式方式
if(cond[,cond[,cond]]) call pmad

if(cond[,cond[,cond]]) dcall pmad
执行过程:非延迟调用

If(cond(s))

Then (SP) -1→SP
(PC)+2→TOS pmad→PC Else (PC)+2→PC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

?延迟调用
If(cond(s)) Then (SP) -1→SP (PC)+4→TOS pmad→PC

Else (PC)+2→PC
该指令影响OVA或OVB(如果选定了OV或NOV)。

功能描述:当满足确定的条件时,程序指针PC指向程序存储
器地址(pmad);如果不满足条件,PC指针加2。如果是延迟调用, 则该指令后的两个字先取出执行,且不会影响被测试的条件。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.152 CCD 1111H,BOV ANDM 4444H,*AR1+
Before Instruction PC OVB SP 0025 1 1111 PC OVB SP After Instruction 1111 0 1110

Data Memory
1110H 4567 1110H 0029

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) FCALA[D]

语 法:助记符方式
FCALA[D] src

表达式方式
far call src far dcall src

执行过程:非延迟调用
(SP) -1→SP (PC)+ 1→TOS (SP) -1→SP (XPC)→TOS

(src (15-0 ) )→PC
(src (22-16 ) )→XPC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

延迟调用 (SP) -1→SP (PC)+3→TOS

(SP) -1→SP
(XPC)→TOS

(src (15-0 ) )→PC
(src (22-16 ) )→XPC 该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把源累加器src的22~16位的值装入XPC,程 序指针PC指向src的低端15~0位所确定的16 bit地址。如果是 延迟调用,紧接着该调用指令的两条单字指令或一条双字指 令从程序存储器中取出先执行。注意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.153
FCALAD B ANDM #4444H, *AR1+

Before Instruction B PC XPC SP
Data Memory

After Instruction 2000 0025 7F 1111 B PC XPC SP 00 0020 2000 2000 20 110F

00

0020

1110H 110FH

4567 4567

1110H 110FH

0028 007F

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) FCALL[D]
语 法:助记符方式 FCALL[D] extpmad 执行过程:非延迟调用 表达式方式 far call extpmad far dcall extpmad

(SP)-1→SP
(PC)+2→TOS (SP)-1→SP

(XPC)→TOS
(pmad ( 15-0 ) )→PC (pmad ( 22-16 ) )→XPC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

延迟调用 (SP)-1→SP

(PC)+4→TOS
(SP)-1→SP

(XPC)→TOS
(pmad (15-0 ))→PC

(pmad (22-16 ))→XPC
该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:程序指针PC指向pmad的22~16位确定的页中 pmad的15~0位所确定的程序存储器地址。返回地址在pmad 的低端装入PC前被压入堆栈。如果是延迟调用,紧接着调用 指令的两条单字指令或一条双字指令从程序存储器中取出先

执行。注意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.154
FCALL 013333H
Before Instruction PC XPC SP Data Memory 0025 00 1111 PC XPC SP After Instruction 3333 01 110F

1110H 110FH

4567 4567

1110H 110FH

0027 0000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3) 中断指令
中断指令共2条,如下所示。 (1) INTR 语 法:助记符方式 INTR k 表达式方式 int(k)

执行过程:(SP)-1→SP
(PC)+1→TOS K确定的中断向量→PC 1→INTM 该指令影响INTM(P20)和IFR(P70)。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:让程序指针指向由K所确定的中断向量。该指 令允许使用用户自己的应用软件执行任何中断服务子程序。 在指令开始执行时,PC加1并把它压入栈顶,然后把K指定的 中断向量装入PC,执行该中断服务子程序。对中断标志寄存

器(IFR)中某位清0,对应中断就被禁止(当INTM=1时)。中断
屏蔽寄存器(IMR)不会影响INTR指令,且不管INTM的值是什 么都能执行INTR指令。注意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.155
INTR 3

(SP)-1→SP; (PC)+1→TOS K确定的中断向量→PC 1→INTM
After Instruction 0025 0 01FF 1000 PC INTM IPTR SP

Before Instruction PC INTM IPTR SP

P75 FFBC FF8C
1 01FF 0FFF

Data Memory

0FFFH

9653

0FFFH

0026

0

1

F F + 03(0000 0011)左移2位=0001100 1 1111 1111+0001100 == 1 1111 1111 0000 110 1111 1111 1000 1100 F F 8 C

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

IPTR

1 1111 1111

K

0000 0011

K<<2 地址 1111 1111 1 000 1100

中断向量地址的形成

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) TRAP 语 法:助记符方式 TRAP k 执行过程:(SP)-1→SP 表达方式 trap(k)

(PC)+1→TOS
由k指定的中断向量→PC 该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:让程序指针PC指向由K指定的中断向量。该指 令允许使用用户的软件来执行任何中断服务子程序。指令执行 时,先把PC+1压入由SP寻址的数据存储器单元。这使得返回 指令在执行完中断服务子程序后,能从SP所指的单元中找到要 执行的下一条指令的地址。该指令是非屏蔽的,不会受INTM 的影响,它也不会影响INTM。注意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.156

(SP)-1→SP (PC)+1→TOS 由k指定的中断向量→PC

TRAP 10H
Before Instruction PC SP 1233 03FF PC DP After Instruction

FFA0?
FFC0 03FE

Data Memory
03FEH 9653 03FEH 1234

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

4) 返回指令

返回指令共6条,如下所示。
(1) FRET[D] 语 法:助记符方式 表达式方式

FRET[D]
执行过程:(TOS)→XPC (SP) + 1→SP (TOS)→PC (SP) + 1→SP 该指令不影响任何状态位。

far return
far dreturn

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把栈顶单元的低7 bit值装入XPC;把下一个单 元的16 bit值装入PC中。堆栈指针在每一操作完成后自动加1。 如果是延迟返回,紧接着该指令的两条单字指令或一条双字 指令取出先执行。注意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.157 FRET

把栈顶单元的低7 bit值装入XPC; 把下一个单元的16 bit值装入PC中
After Instruction 2112 01 0300 PC XPC SP 1000 05 0302

Before Instruction PC XPC SP

Data Memory
0300H 0301H 0005 1000 0300H 0301H 0005 1000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) FRETE[D] 语 法:助记符方式 表达式方式

FRETE[D]

far renturn_enable
far drenturn_enable

执行过程:(TOS)→XPC (SP) + 1→SP (TOS)→PC

(SP) + 1→SP
0 →INTM

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令影响INTM。 功能描述:把栈顶单元的低7 bit值装入XPC;把紧接着的单 元的16 bit值装入PC,并从新的PC值指向的单元继续执行。该指 令自动清除状态寄存器ST1中的中断屏蔽位(INTM)(清除该位就 允许中断)。如果是延迟返回,紧接着该指令的两条单字指令或 一条双字指令取出先执行。注意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.158
FRETE
Before Instruction PC XPC ST1 SP Data Memory 0300H 0301H 006E 0110 0300H 0301H 006E 0110 2112 05 XCXX 0300 PC XPC ST1 SP After Instruction 0110 6E X4XX 0302

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) RC[D] 语 法:助记符方式 RC[D] cond[,cond[,cond]] 表达式方式 if(cond[,cond[,cond]])return If(cond[,cond[,cond]])dretum

执行过程: if (cond (s))
Then (TOS)→PC (SP)+1→SP Else (PC)+1→PC 该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:当满足cond所给出的条件时,存放在栈顶的数 据存储器值弹入到PC中,堆栈指针SP加1。如果不满足条件, 则仅仅执行PC加1操作。如果是延迟返回,紧接着该指令的两 条单字指令或一条双字指令取出先执行。先执行这两个指令字

不会影响正在被测试的条件。在把程序指针转移指向另一个单
元前也可对多个条件进行测试。所测试的多个条件必须分别处 在同一组的不同类中。如在选择两个条件时,可以同时测试EQ 和OV,但不能同时测试GT和NEQ。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.159
RC AGEQ,ANOV;如果累加器A的值为正,且OVA等于0就返回

Before Instruction PC OVA SP 0807 0 0308 PC OVA SP

After Instruction 2002 0 0309

Data Memory
0308H 2002 0308H 2002

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) RET[D] 语 法:助记符方式 RET[D] 执行过程:(TOS)→PC (SP)+1→SP 该指令不影响任何状态位。 功能描述:把栈顶TOS单元中的16 bit数据弹入到程序指针 表达式方式 return

dreturn

PC中,堆栈指针SP加1。如果是延迟返回,紧接着该指令的两
条单字指令或一条双字指令取出先执行。注意,该指令不能循 环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.160
RET
Before Instruction PC SP 2112 0300 PC SP After Instruction 1111 0301

Data Memory
0300H 1111 0300H 1111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) RETE[D]
语 法:助记符方式 RETE[D] 表达式方式 return_enable dreturn_enable 执行过程: (TOS)→PC

(SP)+1→SP
0→INTM

该指令会影响INTM。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述: 把栈顶单元TOS中的16 bit数据弹入到程序指 针PC中,且从这个地址继续执行,堆栈指针SP加1。该指令自 动对ST1中的中断屏蔽位清0,即允许中断。如果是延迟返回, 紧接着该指令的两条单字指令或一条双字指令取出先执行。注

意,该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.161 RETE
Before Instruction PC SP ST1 01C3 2001 XCXX PC SP ST1 After Instruction 1111 2002 X4XX

Data Memory
2001H 1111 2001H 1111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) RETF[D] 语 法:助记符方式 表达式方式

RETF[D]
执行过程: (RTN)→PC (SP)+1→SP 0→INTM

return_fast
dreturn_fast

该指令会影响INTM。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:把快速返回寄存器RTN中的16 bit值装入到程序 指针PC中。RTN中保存了中断服务子程序返回的地址,RTN是 在返回时而不是从堆栈中读PC时装入到PC中去的。然后,SP 执行加1操作。该指令自动对ST1中的中断屏蔽位INTM清0(清0

意味着允许中断)。如果是延迟返回,紧接着该指令的两条单字
指令或一条双字指令取出先执行。注意,只有在该中断服务子 程序执行期间没有调用其他中断子程序时才能使用该指令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.162 RETF
Before Instruction PC SP ST1 01C3 2001 XCXX PC SP ST1 After Instruction 0110 2002 X4XX

Data Memory
2001H 0110 2001H 0110

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

5) 重复指令
重复指令共3条,如下所示。 (1) RPT 语 法: 助记符方式 ① RPT Smem 表达式方式 ① repeat (Smem)

② RPT ﹟k
③ RPT ﹟Lk 执行过程:① (Smem)→RC ② k→RC ③ 1k→RC

② repeat (﹟k)
③ RPT ﹟1k

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令不影响任何状态位。 功能描述:当指令执行时,首先把循环的次数装入循环 计数器(RC)。循环的次数(n)由一个16 bit单数据存储器操作数 Smem或一个8 bit或16 bit常数k或1k给定。这样,紧接着的下 一条指令会循环执行n+1次。RC在执行减1操作时不能被访问。 注意,该指令不能循环执行,即不能套用循环。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.163
RPT DAT127; DAT127等于0FFFH
After Instruction 0 031 RC DP 000C 031

Before Instruction RC DP

Data Memory
0FFFH 000C 0FFFH 000C

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.164
RPT #1111h
Before Instruction RC 0 RC After Instruction 1111

1111H=163+162+16+1=4396 下一条指令循环执行4370次。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) RPTB[D]
语 法:助记符方式 RPTB[D] pmad 执行过程: 1→BRAF 表达式方式 blockrepeat (pmad) dblockrepeat (pmad)

if (delayed)
Then (PC) + 4→RSA

Else
(PC) + 2→RSA pmad→REA

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令会影响BRAF。 功能描述:循环执行一指令块,循环的次数由存储器映射 的块循环计数器(BRC)确定。BRC必须在指令执行之前被装入值。 程序执行时,块循环起始地址寄存器(RSA)中装入PC+2(如果是 采用了延迟就是PC+4);块循环尾地址寄存器(REA)中装入程序 存储器地址(pmad)。该指令执行时是可以被中断的。单指令循环 也属于这块循环。为了套用该指令,你必须保证以下几点: BRC、RSA和REB寄存器必须作适当的保存; 块循环有效标志,BRAF要适当的设置。

在带延迟的块循环中,紧接着该指令的两条单字指令和一 条双字指令被取出先执行。
注意:块循环可以通过对BRAF位清0来禁止。该指令不能 循环执行,即不能套用循环。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.165

ST #99,BRC RPTB end_block-1 ;end_block=Bottom of Block

Before Instruction PC BRC RSA REA 1000 1234 5678 9ABC PC BRC RSA REA

After Instruction 1001 0063 1002 9ABC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.166
ST #99,BRC RPTBD end_block-1 MCDM POINTER,AR1

;初始化指针,end_block为块底部

Before Instruction BRC RSA REA 1234 5678 9ABC BRC RSA REA

After Instruction 0063 1004 9ABC

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) RPTZ 语 法:助记符方式 表达式方式

RPTZ dst,﹟1k
执行过程:0→dst 1k→RC

repeat (﹟1k),dst=0

该指令不会影响任何状态位。 功能描述: 对目的累加器dst清0,循环执行下一条指令n+1

次。其中的n是循环计数器(RC)中的值。RC的值是一个16 dit常
数1k。该指令代码占两个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.167 RPTZ A,1023 STL A,*AR2+
Before Instruction A RC 0F FE00 8000 0000 A RC

;下一条指令重复执行1024次。

After Instruction 00 0000 0000 03FF

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

6) 堆栈指令
堆栈处理指令共5条,如下所示。 (1) FRAME 语 法:助记符方式 FRAME k 表达式方式 SP = SP + k

SP += k
执行过程:( SP ) + k→SP 该指令不影响任何状态位。 功能描述:把一短立即数偏移k加到SP中。在编译方式 (CPL=1) (P187)下的地址产生或紧接着该指令的下一条指令做堆

栈处理都不会产生等待。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.168

FRAME 10H
Before Instruction SP 1000 SP After Instruction 1010

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) POPD 语 法:助记符方式 表达式方式

POPD Smem
执行过程:(TOS)→Smem

Smem=pop( )

(SP)+1→SP
该指令不影响任何状态位。

功能描述:把由SP寻址的数据存储器单元的内容转移到由
Smem确定的数据存储器单元中。然后SP执行加1操作。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.169

POPD DAT10
Before Instruction DP SP 008 0300 DP SP After Instruction 008 0301

Data Memory
0300H 040AH 0088 0055 0300H 0088 0088

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) POPM 语 法:助记符方式 表达式方式

POPM MMR

MMR=pop( )
mmr(MMR)=pop( )

执行过程: (TOS)→MMR (SP)+1→SP 该指令不会影响任何状态位。 功能描述:把由SP寻址的数据存储器单元的内容转移到指 定的存储器映射寄存器MMR中。然后SP执行加1操作。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.170 POPM AR5
Before Instruction AR5 SP 0055 03F0 AR5 SP After Instruction 0066 03F1

Data Memory
03F0H 0066 03F0H 0066

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) PSHD 语 法:助记符方式 PSHD Smem 执行过程:(SP)-1→SP (Smem)→TOS 表达式方式 push(Smem)

该指令不影响任何状态位。
功能描述:SP执行减1操作后,把存储器单元Smem的内容

压入堆栈指针SP指向的数据存储器单元中去。在译码阶段输出
SP,并在访问阶段对它进行存储。该指令代码占一个字,但当 Smem采用长偏移间接寻址或绝对寻址方式时就会多占一个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.171

PSHD *AR3+
Before Instruction AR3 SP 0200 8000 AR3 SP After Instruction 0201 7FFF

Data Memory
0200H 7FFFH 07FF 0092 0200H 7FFFH 07FF 07FF

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) PSHM 语 法:助记符方式 PSHM MMR 表达式方式 push (MMR) push (mmr (MMR))

执行过程: (SP)-1→SP
(MMR)→TOS 该指令不影响任何状态位。 功能描述:堆栈指针SP执行减1操作后,把存储器映射寄存 器MMR中的内容压入到SP所指的数据存储器单元中去。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.172 PSHM BRC
Before Instruction BRC SP 1111 2000 BRC SP After Instruction 1111 1FFF

Data Memory
1FFFH 07FF 1FFFH 1111

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

7) 混合程序控制指令(看) 混合程序控制指令的双减号共7条,如下所示。 (1) IDLE 语 法:助记符方式 IDLE k 执行过程:(PC)+ 1→PC 该指令受INTM的影响。 表达式方式 idle(k)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:强迫程序执行等待操作直到产生非屏蔽中断或 复位操作。PC执行加1操作,芯片保持空闲状态(下拉方式)直到 被中断。即使是INTM=1,只要有一个非屏蔽中断出现,系统 就退出空闲状态。如果INTM=1,程序继续执行紧接着idle的指 令。如果INTM=0,则程序转移到相应的中断服务子程序。中

断是通过中断屏蔽寄存器(IMR)使能,而不管INTM的值。k的
值决定了能让系统从空闲状态中解放出来的中断类型: k=1 诸如定时器和串口等外围设备在idle状态时仍有效。 外围中断同复位操作以及外部中断一样能使处理器从空闲方式 中解放出来。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

k=2 诸如定时器和串口等外围设备在空闲状态时无效。复 位和外部中断能使处理器从空闲方式中解放出来。因为在正常 的设备操作条件下,中断在空闲方式中没被锁定,所以它必须 持续保持低脉冲多个周期才被响应。

k=3 诸如定时器和串口等外围设备处于无效状态,锁相环
PLL被停止。复位和外部中断能把处理器从idle方式中解放出来。 因为在正常的设备操作条件下,中断在空闲方式中没被锁定, 所以它必须持续保持低脉冲多个周期才被响应。 注意:该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.173 IDLE 1 处理器保持空闲状态直到产生一个复位或非屏蔽中断。 例3.174

IDLE 2
处理器保持空闲状态直到产生一个复位或外部非屏蔽中断。 例3.175 IDLE 3 处理器保持空闲状态直到产生一个复位或外部非屏蔽中断。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) MAR 语 法:助记符方式 表达式方式

MAR Smem

mar(Smem)

执行过程:在间接寻址方式中,辅助寄存器的值按如下规 则修改。如果是兼容方式(CMPT=1),那么,ARx=AR0,如果 修改AR(ARP),则ARP保持不变。否则,修改ARx;x →ARP。 则在非兼容方式下(CMPT=0),修改ARx,ARP不变。

该指令受CMPT影响。当CMPT=1时,该指令影响ARP。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:修改由Smem所确定的辅助寄存器的内容。在 兼容方式下(CMPT=1),指令会修改ARx的内容以及辅助寄存 器指针(ARP)的值。在非兼容方式下(CMPT=0),指令只修改 辅助寄存器的值,而不改变ARP。该指令代码占一个字,但

当Smem采用长偏移间接寻址或绝对寻址方式时就会多占一个
字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.176 MAR *AR3+
Before Instruction CMPT ARP AR3 0 0 0100 CMPT ARP ARP AR3 After Instruction 0 0 0101

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) NOP 语 法:助记符方式 NOP 表达式方式 nop

执行过程:不执行任何操作。 该指令不影响任何状态位。 功能描述:该指令除了PC执行加1操作以外不执行任何操 作。这在建立流水和执行延迟方面比较有用。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.177 NOP 不执行任何操作。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) RESET 语 法:助记符方式 表达式方式

RESET
(IPTR)<<7→PC 1→C 0→DP 0→BRAF 0→C16 0→CPL

reset
0→OVA 1→TC 1→SXM 0→HM 0→FRCT 1→INTM 0→OV 0→ARP 0→ASM 1→XF 0→CMPT 0→IFR

执行过程:PMST、ST0和ST1的各域将被赋值,具体情况如下。

0→OVM

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令会影响的状态位就是上面列出的这些。 功能描述:该指令实现了一个非屏蔽的软件复位,其在 任何时候都能使用,以使C54x DSP处于可知状态。当执行这 个复位指令时,就会给上面所列的状态位赋值。MP/MC引脚

在软件复位期间不被取样。IPTR和外围寄存器的初始化与使
用RS的初始化有所不同。该指令不受INTM的影响,但它对 INTM置位以禁止中断。注意:该指令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.178

RESET
Before Instruction PC INTM IPTR 0025 0 1 PC INTM IPTR After Instruction 0080 1 1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) RSBX 语 法:助记符方式 RSBX N, SBIT ST (N, SBIT)=0 执行过程:0→STN(SBIT) 该指令不影响任何状态位。 功能描述:对状态寄存器ST0和ST1的特定位清0。N指明了 表达式方式 SBIT=0

被修改的状态寄存器,SBIT确定了被修改的位。可直接用状态
寄存器中的一个域名作为操作数,而不用N和SBIT。注意,该指 令不能循环执行。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.179 RSBX SXM ;SXM的意思是:n=1(ST1),SBIT=8 P84
After Instruction ST1
10 9 8 7 6 5 4

Before Instruction ST1
15 14 13 12

35CC
11

34CC
0

BRAF CPL XF

HM INTM 0

OVM SXM C16 FRCT CMPT ASM

0

0

1

1

0

1

0

1 0

1

1

0

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.180

RSBX 1,8
Before Instruction ST1 35CD ST1 After Instruction 34CD

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(6) SSBX 语 法:助记符方式 SSBX N,SBIT 表达式方式 SBIT = 1 ST(N,SBIT)= 1

执行过程:1→STN(SBIT)
该指令不影响任何状态位。 功能描述:状态寄存器ST0或ST1的指定位置为1。N指定了 所修改的状态寄存器,SBIT指定了被修改的位,状态寄存器中 的域名能够用来代替N和SBIT作为操作数。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.181 SSBX SXM ;SXM意味着N=1,SBIT=8
Before Instruction ST1 3456 ST1 After Instruction 3556

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(7) XC
语 法:助记符方式 XC n,cond[,cond[,cond]] 表达式方式: if (cond[,cond[,cond]]) execute(n) 执行过程:if (cond) Then 执行接着的n条指令。

Else
接下来的指令执行nop操作。 该指令不影响任何状态位。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:该指令的执行是由n的值和所选择的条件决定的。

如果n=1且满足条件,就执行紧接着该指令的一条单字指令;
如果n=2且满足条件,就执行紧接着该指令的一条双字或两

条单字指令;
如果不满足条件,就执行nop操作,执行的次数由n值决定。 该指令和紧接着的两个指令字执行时是不能中断的。注意, 被测试的条件在指令执行之前的两个周期被采样,因此,如果 该指令前的两条单字指令或一条双字指令修改了条件是不会影

响该指令的执行的。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.182 XC 1,ALEQ MAR *AR1+ ADD A ,DAT100
Before Instruction A AR1 FF FFFF FFFF 1000 A AR1 After Instruction FF FFFF FFFF 1001

如果累加器的值小于或等于0,加法指令执行之前修改AR1。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

5.并行操作 C54x DSP有一些指令充分发挥了流水线及硬件乘法器等并 行硬件操作优势,可以进行单指令实现的存储或装载数据、算 术运算或数据传输、逻辑运算或数据传输的并行操作。这种指

令的数据传输与各种运算同时进行,充分利用了C54x DSP的流
水线特性,代码和时间效率高。但这类指令的前后指令应注意 流水线冲突问题。这些指令分别叙述如下。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

1) 并行装载和存储指令
并行装载和存储指令共1条,如下所示。 (1) ST‖LD 语 法:助记符方式 ① ST src,Ymem ‖LD Xmem,dst ② ST src,Ymem 表达式方式 ① Ymem = hi(src)[<< ASM] ‖dst = Xmem<<16 ② Ymem = hi(src)[<< ASM]

‖LD Xmem,T

‖T = Xmem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程:① (src)<<(ASM-16)→Ymem (Xmem)<< 16 →dst ② (src)<<(ASM-16)→Ymem (Xmem)→T

功能描述:源累加器src移动由(ASM-16)所决定的位数,然
后把移位后的值存放到数据存储器单元Ymem中;同时并行执 行,把16 bit双数据存储器操作数Xmem装入目的累加器dst或T 寄存器中。如果src等于dst,存入到Ymem中的值是该操作执行 之前的src的值。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.183
ST B,*AR2||LD *AR4+,A
A B

Before Instruction 00 FF 0 00 001C 8765 4321 1 A B SXM ASM AR2 AR4

After Instruction FF FF 8000 8765 1000 4321 1 1C 01FE 0201

ASM

1C 01FF

AR4

0200

Data Memory
01FFH 0200H XXXX 8000 01FFH 0200H F876 8000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

进一步解释:

当(ASM-16)≥0时,源累加器的保护位与 左移出的位数组成的16位加载数据存储器单元。 1CH=28 1CH-16=12 FF 8765 4321 左移二进制12位为: F F876 5432 1000 将F876—AR2

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2) 并行存储和加/减法指令 并行存储和加/减法指令有2条,如下所示。

(1) ST‖ADD 语 法:助记符方式 ST src,Ymem ‖ADD Xmem,dst (dst_)+(Xmem)<< 16→dst 该指令受OVM、SXM和ASM的影响,并能影响C和OVdst。 表达式方式 Ymem = hi(src)[<< ASM] ‖dst = dst_+Xmem<<16

执行过程:(src)<<(ASM-16)→Ymem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:源累加器src移动由(ASM-16)所决定的位数,然 后存放到数据存储器单元Ymem中;同时并行执行,dst_的内容 与左移16 bit后的数据存储器操作数Xmem相加,结果存放在dst 中。如果src等于dst,那么存放到Ymem中的值是该操作执行之

前的src的值。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.184
ST A, *AR3+ ||ADD *AR5+0%,B
Before Instruction A B OVM SXM ASM AR0 AR3 AR5 FF 00 8421 0000 1000 1111 0 1 1 0002 0200 0300 A B OVM SXM ASM AR0 AR3 AR5 After Instruction FF FF 8421 8422 1000 1000 0 1 1 0002 0201 0302

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

Data

Memory 0200H 0300H 0101 8001 0200H 0300H 0842 8001

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) ST‖SUB 语 法:助记符方式 ST src,Ymem ‖SUB Xmem,dst 表达式方式 Ymem = hi(src)[<< ASM] ‖dst = Xmem << 16-dst_

执行过程:(src(31-16))<<(ASM-16)→Ymem (Xmem)<< 16- (dst_)→dst

该指令受OVM、SXM和ASM的影响,并能影响C和OVdst。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:源累加器src移动由(ASM-16)所决定的位数,然 后移位寄存器的值存放到数据存储器单元Ymem中;同时并行 执行,从左移了16 bit的双数据存储器操作数Xmem中减去dst_ 的值,并把结果存放在dst中,如果src等于dst,存入Ymem中的

值为该操作执行之前的src的值。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.185
ST A,*AR3||SUB *AR5+0%,B
A B ASM SXM AR0 AR3 AR5 Data Memory 01FFH 0300H 1111 8000 01FFH 0300H 0ECA 8000 Before Instruction FF 00 8765 1000 0000 0001 01 1 0002 01FF 0300 A B ASM SXM AR0 AR3 AR5 After Instruction FF FF 8765 F89B 0000 0000 01 1 0002 01FE 0302

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3) 并行存储和乘法指令
并行存储和乘法指令共5条,如下所示。 (1) LD‖MAC[R]

语 法:助记符方式
LD Xmem,dst 执行过程:(Xmem)<< 16→dst(31-16) if(Rounding)

表达式方式
dst = Xmem

‖MAC[R] Ymem [,dst_] ‖dst_= [rnd](dst_ +T*Ymem)

Round(((Ymem)×(T))+(dst_))→dst_ Else

((Ymem)×(T))+(dst_)→dst_

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受SXM、FRCT和OVM的影响,并能影响OVdst。 功能描述:16 bit双数据存储器操作数Xmem左移16 bit后 装入目的累加器dst的高端(32~16位)。同时并行执行双数据存 储器操作数Ymem与T寄存器的值相乘,再把乘积加到dst_中的

操作。如果你使用了R后缀,可以对乘积和累加操作的结果凑
整,再存在dst_中。凑整的方法是给该值加上215,然后把结 果的低端(15~0位)清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.186
LD *AR4+,A ||MACR *AR5+,B
Before Instruction A B T FRCT AR4 AR5 00 00 0000 0000 1000 1111 0400 0 0100 0200 A B T FRCT AR4 AR5 After Instruction 00 00 1234 010D 0000 0000 0400 0 0101 0201

Data Memory
0100H 0200H 1234 4321 0100H 0200H 1234 4321

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) LD‖MAS[R]

语 法:助记符方式
LD Xmem,dst

表达式方式
dst = Xmem [<<16]

‖MAS[R] Ymem [,dst_] ‖dst_= [rnd](dst_-T*Ymem) 执行过程:(Xmem)<< 16 →dst(31-16) if(Rounding)

Round((dst_)-((T)×(Ymem)))→dst_
Else (dst_)- ((T)×(Ymem))→dst_

该指令受SXM、FRCT和OVM的影响,并能影响OVdst_。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:16 bit双数据存储器操作数Xmem左移16 bit后 装入目的累加器dst的高端(31~16位)。同时并行执行双数据存 储器操作数Ymem与T寄存器的值相乘,再与dst_相减,最后把 结果存放在dst_的操作。如果你使用了R后缀,指令会对乘和减

法运算的结果进行凑整,即结果加上215,然后对低端(15~0位)
清0,再把新的结果存放在dst_中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.187
LD *AR4+,A ||MAS *AR5+,B
A B T FRCT AR4 AR5 Data Memory 0100H 0200H Before Instruction 00 00 0000 0000 1000 1111 0400 0 0100 0200 A B T FRCT AR4 AR5 After Instruction 00 FF 1111 FF33 0000 4511 0400 0 0101 0201

1111 3333

0100H 0200H

1111 3333

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.188
LD *AR4+,A ||MASR *AR5+,B
Before Instruction A B T FRCT AR4 AR5 00 00 0000 0000 1000 1111 0400 0 0100 0200 A B T FRCT AR4 AR5 After Instruction 00 FF 1234 FEF4 0000 0000 0400 0 0101 0201

Data Memory
Data Memory 0100H 0200H 1234 4321 0100H 0200H 1234 4321

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) ST‖MAC[R] 语 法:助记符方式 ST src,Ymem ‖MAC[R] Xmem,dst 表达式方式 Ymem = hi(src)[<<ASM] ‖dst = dst + T * Xmem Ymem = hi(src)[<<ASM]

‖dst + = T * Xmem
Ymem = hi(src)[<<ASM] ‖dst = rnd(dst + T * Xmem)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程:(src<<(ASM-16))→Ymem if (Rounding)

Then
Round((Xmem)×(T)+(dst))→dst

Else
(Xmem)×(T)+(dst)→dst 该指令受OVM、SXM、ASM和FRCT的影响,并能影响C 和OVdst。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

功能描述:源累加器src移动由(ASM-16)所决定的位数,然 后把移位后的值存放到数据存储器单元Ymem中;同时并行执 行,T寄存器的值与数据存储器操作数Xmem相乘,乘积与目的 累加器dst相加(可以带凑整运算),结果存放在dst中。如果src等

于dst,存入Ymem中的值是该操作执行之前的src的值。如果你
使用了R后缀,就会对结果进行凑整:加上215再对低端(15~0 位)清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.189
ST A,*AR4||MAC *AR5,B
A B T ASM FRCT AR4 AR5 Data Memory 100H 200H 1234 4321 100H 200H 0222 4321 Before Instruction 00 00 0011 0000 1111 1111 0400 5 0 0100 0200 A B T ASM FRCT AR4 AR5 After Instruction 00 00 0011 010C 1111 9511 0400 5 0 00FF 0200

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) ST‖MAS[A] 语 法:助记符方式 ST src,Ymem ‖MAS[R] Xmem,dst 表达式方式 Ymem = hi(src)[<<ASM] ‖dst = dst-T * Xmem Ymem = hi(src)[<<ASM] ‖dst- = T * Xmem

Ymem = hi(src)[<<ASM]
‖dst = rnd(ds-T * Xmem)

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

执行过程:(src<<(ASM-16))→Ymem

if (Rounding)
Then

Round((dst)- (Xmem)×(T))→dst
Else (dsr)-(Xmem)×(T)→dst

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

该指令受OVM、SXM、ASM和FRCT的影响,并能影响C 和OVdst。

功能描述:源累加器src移动由(ASM-16)所决定的位数,然
后把移位后的值存放到数据存储器单元Ymem中;同时并行执 行,T寄存器的值与数据存储器操作数Xmem相乘,乘积与目的 累加器dst相减(可以带凑整运算),结果存放在dst中。如果src等 于dst,存入Ymem中的值是该操作执行之前的src的值。如果你

使用了R后缀,就会对结果进行凑整:加上215再对低端(15~0
位)清0。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.190
ST A,*AR4+ ||MAC *AR5+,B
A B T ASM FRCT AR4 AR5 Data Memory 0100H 0200H 1234 4321 0100H 0200H 0022 4321 Before Instruction 00 00 0011 0000 1111 1111 0400 0011 0 0100 0200 A B T ASM FRCT AR4 AR5 After Instruction 00 FF 0011 FEF4 1111 0000 0400 0001 0 0101 0201

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) ST‖MPY
语 法:助记符方式 ST src,Ymem 表达式方式 Ymem = hi(src)[<< ASM]

‖MPY Xmem,dst

‖dst = T*Xmem

执行过程:((src)<<(ASM-16))→Ymem (T)×(Xmem)→dst 该指令受OVM、SXM、ASM和FRCT的影响,并能影响C 和Ovdst。

功能描述:源累加器src移动由(ASM-16)所决定的位数,然 后移位寄存器的值存放到数据存储器单元Ymem中;同时并行执 行,T寄存器的值与16 bit双数据存储器操作数Xmem相乘,乘积 存放在dst中,如果src等于dst,存入Ymem中的值为该操作执行 之前的src的值。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.191
ST A,*AR3+ ||MAY *AR5+,B
Before Instruction FF AB T ASM FRCT AR3 AR5 Data memory XX 8765 XXX 321 XXX 4000 00 1 0200 0300 A B T ASM FRCT AR3 AR5 After Instruction FF 00 8765 2000 4321 0000 4000 00 1 0201 0301

Memory
0200H 0300H 1111 4000 0200H 0300H 8765 4000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

4.2.3 寻址方式 C54x DSP的寻址方式分为数据寻址和程序寻址两种。

1.数据寻址
C54x DSP提供了7种基本的数据寻址方式:

* 立即数寻址:操作数是一个立即数,包含在指令中;
* 绝对寻址 :指令中有一个固定的地址,即使用16位的地

址寻址单元;
* 累加器寻址: 把累加器内的内容作为地址去访问程序存 储器的一个单元;

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

* 直接寻址: 指令中的7 bit是一个数据页内的偏移地址, 而所在的数据页则由数据页指针DP或SP决定,该偏移值加上 DP和SP的值决定了在数据存储器中的实际地址; * 间接寻址:按照辅助寄存器中的地址访问存储器;

* 存储器映射寄存器寻址:通过寻址存储器映射寄存器实
现寻址;

* 堆栈寻址:把数据压入和弹出系统堆栈。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

1) 立即数寻址 在立即数寻址中,指令里包括了立即操作数。在一条指令 中可对两种立即数编码。一种是短立即数(3、5、8或9 bit),另 一种是16 bit的长立即数。立即数可包含在单字或双字指令中。

在一条指令中,立即数的长度是由所使用的指令的类型决定的。
表3.7列出了可包含立即数的各条指令,并指出了指令中立即数 的比特数。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.7 支持立即数寻址的指令
3 bit 和 5 bit 立即数 LD 8 bit 立即数 FRAME LD RPT 9 bit 立即数 LD 16 bit 立即数 ADD ORM ADDM RPT AND RPTZ ANDM ST BITF STM CMPM SUB LD XOR MAC XORM OR

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

在立即数寻址方式的指令中,应在数值或符号前面加一个 “#”号来表示一个立即数,否则就会被认为是一个地址。例 如:把立即数80H装入累加器A,其正确的指令为: LD #80H,A

如果漏掉了“#”号,指令LD 80H,A就变成了把地址80H单元
中的数装到累加器A中去。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2) 绝对寻址
C54x DSP提供了四种类型的绝对寻址。

(1) 数据存储器地址(dmad)寻址:
MVDK Smem,dmad

MVDM dmad,MMR MVKD dmad,Smem MVMD MMR,dmad

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) 程序存储器地址(pmad)寻址: FIRS Xmem,Ymem,pmad MACD Smem,pmad,src

MACP Smem,pmad,src
MVDP Smem,pmad

MVPD pmad,Smem

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(3) 端口地址(PA)寻址: PORTR PA,Smem

PORTW Smem,PA

(4) *(Ik)寻址:适用于所有支持单数据存储器操作数的指令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3) 累加器寻址 累加器寻址是用累加器中的数作为一个地址来访问程序存

储器。共有两条专门指令可以采用累加器寻址:
READA WRITA Smem Smem

READA是把累加器A所确定的程序存储器单元中的一个字, 传送到单数据存储器(Smem)操作数所确定的数据存储器单元中。 WRITA是把Smem操作数所确定的数据单元中的一个字,传 送到累加器A所确定的程序存储器单元中去。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

4) 直接寻址 在直接寻址中,指令代码包含了数据存储器地址的低七位。 这7 bit dmad作为偏移地址与数据页指针(DP)或堆栈指针(SP)相

结合共同形成的16 bit数据存储器的实际地址。虽然直接寻址不
是偏移寻址的惟一方式,但这种方式的优点是每条指令代码只 有一个字。直接寻址的语法是用一个符号或一个常数来确定偏 移值。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

DP或SP都可以与dmad偏移相结合来产生实际地址。位于状 态寄存器ST1中的编译方式位(CPL)决定选择采用哪种方式来产

生实际地址。
CPL=0时,dmad域与9 bit的DP域相结合形成16 bit的数据存

储器地址;
CPL=1时,dmad域加上(正偏移)SP的值形成16 bit的数据存 储器地址。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(1) 基于DP的直接寻址 在以DP为基地址的直接寻址中, 指令寄存器中7 bit的dmad与9 bit的DP连接一起形成实际地址。

图3.1给出了这两个值是怎样组成数据地址的。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

来自 DP 的值

来自 IR 的值

图3.1 以DP为基地址的直接寻址

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

因为DP值的范围是0~511(29-1),所以以DP为基准的直接 寻址把存储器分成512页。7 bit的dmad范围为0~127,所以每页

有128个可访问的单元,即DP指向512页中的一页,而dmad指向
该页中的特定单元。访问第1页的单元0和访问第2页的单元0的 惟一区别是DP的值变了。 DP的值可由LD指令装入。RESET指令将DP赋为0。 注意,数据页指针不能用上电进行初始化,因为在上电后它 处于不定状态。所以,没有初始化数据页指针的程序就可能工 作不正常。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

直接寻址的指令书写格式为在变量前加一个@,或者用一 个dmad来设定偏移地址。下面举例说明:

LD #3,DP
LD @x,A LD #4,DP ADD @y,A

;设置当前页面为3
;将x值加载到累加器A ;设置当前页面为4,y所在的页面 ;将y值加到累加器A

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) 基于SP的直接寻址 在以SP为基地址的直接寻址中。指 令寄存器中的7 bit dmad作为一个偏移与SP相加得到有效的16

bit数据存储器地址。图3.2给出了这两个值是怎样形成实际地址
的。 SP可指向存储器中的任意一个地址。dmad可指向当前页中 一个明确的单元,从而允许访问存储器的任意基地址中的连续 128个字。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

来自 SP 的值

15 + 0 15

14 0 14

13 0 13

12 0 12

11 0 11

10 0 10

9 0 9

8 0 8

7 0 7

6

5

4

3

2

1

0

来自 IR 的值(dmad) 6 5 4 3 2 1 0

有效的存储器地址

图3.2 以SP为基地址的直接寻址

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

5) 间接寻址 在间接寻址方式中,64K字的数据空间任意单元都可以通 过一个辅助寄存器中的内容所代表的16位地址进行访问。C54x DSP有8个16位辅助寄存器(AR0~AR7)。当指令以间接方式寻

址时,辅助寄存器和地址可以分别进行增量、减量、偏移或变
址的修改,还可以提供循环和位反转寻址(或称位反向寻址)。 AR0还能够用于指数寻址和位反转寻址中。两个辅助寄存器算 术单元ARAU0和ARAU1对辅助寄存器的内容进行操作,完成 无符号16位的算术运算。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

间接寻址是一种很灵活的寻址方式,不但可以在单条指 令中从数据存储器读或写一个16位的数据操作数(单操作数寻

址),还能在单条指令中访问两个数据存储器单元(双操作数寻
址),包括从两个不同的数据存储器单元读数据,读并写两个 连续的存储器单元,或者读一个存储器单元同时写另一个存 储器单元。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(1) 单操作数间接寻址 :这种方式可以通过在指令中修改 辅助寄存器来改变寻址单元,具体的修改方式有:地址加1或 减1,加16位偏移量,用AR0值作为偏移量等。这些地址修改 可以在地址访问之前或者之后进行。加上不修改地址的情况,

一共可以形成16种寻址方式。表3.8列出了单操作数间接寻址
的句法以及每一种句法的功能。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.8 单操作数间接寻址类型
句 法 功 能 说 明

*ARx *ARx*ARx+ *+ARx *ARx-0B *ARx-0

addr=ARx addr=ARx ARx=ARx-1 addr=ARx ARx=ARx+1 addr=ARx+1 ARx=ARx+1 addr=ARx ARx=B(Arx-AR0) addr=Arx ARx=Arx-AR0

以 ARx 内容为地址,ARx 内容不变① 以 ARx 内容为地址,访问后 ARx 减 1① 以 ARx 内容为地址,访问后 ARx 增 1①②③ ARx 内容先增 1,再寻址 寻址后,ARx 内容按位反序减去 AR0 的内容 寻址后,ARx 内容减去 AR0 的内容

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

续表
句法 *ARx+0 *ARx+0B *ARx-% *ARx-0% *ARx+% *ARx+0% *ARx(1k) *+ARx(1k) *+ARx(1k)% *(1k) 功 能 说 明 addr=ARx ARx=ARx+AR0 addr=ARx ARx= B(ARx+AR0) addr=ARx ARx=circ(ARx-1) addr=ARx ARx= circ(ARx-AR0) addr=ARx ARx=circ(ARx+1) addr=ARx ARx=circ(ARx+AR0) addr=ARx+1k ARx=ARx addr=ARx+1k ARx=ARx+1k addr= circ(ARx+1k) ARx= circ(ARx+1k) addr=1k 寻址后,ARx 内容加上 AR0 的内容 寻址后,ARx 内容按位反序加上 AR0 的内容 寻址后,ARx 内容按循环寻址方式减 1


寻址后,ARx 内容按循环寻址方式减 AR0 的内容 寻址后,ARx 内容按循环寻址方式加 1 寻址后,ARx 内容按循环寻址方式加上 AR0 的内容 以 16 位符号数 1k 和 ARx 之和作地址去寻址,但 ARx 仍维持 原值 将 16 位符号数 1k 加 ARx,再以 ARx 内容寻址


将 16 位符号数按循环寻址方式加到 ARx 中,再以 ARx 内容 ② 寻址 16 位无符号偏移量 1k 作为数据存储器的绝对地址


第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

注:①--访问16位字时,递增/递减值为1;访问32位字时, 递增/递减值为2。 ②--不允许用在存储器映射寄存器寻址方式中。

③--只用于写操作。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

在卷积、自相关和FIR滤波器等许多算法中,都需要在存储 器中设置循环缓冲区。循环缓冲区是一个滑动窗,保存着最新的

数据。如果有新的数据到来,它将覆盖最早的数据。循环寻址是
实现循环缓冲区的关键。循环寻址用%表示,其辅助寄存器使用 规则与其他寻址方式相同。 循环缓冲区的参数主要包括:长度寄存器(BK)、有效基地址 (EFB)、尾地址(EOB)。其中,BK定义可循环缓冲区的大小R。 要求缓冲区地址始于最低N位为零的地址,且R值满足2N>R,R 值必须要放入BK。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例如,一个长度为R=31的循环缓冲区必须开始于最低5位 为零的地址(即XXXX XXXX XXX0 0000B),且必须将R值加载 到BK寄存器中。(25=32>31) 循环缓冲区的有效基地址(EFB)定义了缓冲区的起始地址,

也就是辅助寄存器(ARx)低N位设为0后的值。
循环缓冲区的尾地址(EOB)定义了缓冲区的底部地址,它

通过用BK的低N位代替ARx的低N位得到。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

循环缓冲区的指示index就是当前ARx的低N位,步长step 就是一次加到辅助寄存器或从辅助寄存器中减去的值。循环寻 址的算法为: 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

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

使用循环寻址时,必须遵循以下三个原则:
* 循环缓冲区的长度R小于2N,且地址从一个低N位为0的地 址开始;

* 步长小于或等于循环缓冲区的长度;
* 所使用的辅助寄存器必须指向缓冲区单元。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

位反转寻址
位反转寻址主要用于FFT算法中,这种寻址 方式可以大大提高程序的执行速度和存储器的 利用效率。使用时,AR0存放的整数值为FFT 点数的一半,另一个辅助ARx指向存放数据的 单元。位反转寻址将AR0加到辅助寄存器中, 地址以位反转方式产生。也就是说,两者相加 时,进位是从左向右反向传播的,而不是通过 加法中的从右向左传播的。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

顺序和倒序二进制数对照表

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

做法:

1.AR0=100 2.AR1=000(当前辅助寄存器,赋初值000) 按AR1寻址后,将AR0加AR1,反向进位 1---- 000(AR1)+100(AR0)=100---4 2---- 100(AR1)+100(AR0)=010---2 3---- 010(AR1)+100(AR0)=110---6 4---- 110(AR1)+100(AR0)=001---1

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) 双操作数间接寻址 双数据存储器操作数寻址用于完成2 次读操作或者1次读和1次存储并行的操作。采用这种方式的指

令代码都为1个字长,并且只能以间接寻址方式工作。因为只
有2位可以用来选择辅助寄存器,所以只有4个辅助寄存器可以 使用(AR2~AR5)。 表3.9列出了双数据存储器操作数间接寻址的句法和功能。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3.9 双数据存储器操作数间接寻址的句法和功能
句 *ARx *ARx*ARx+ *ARx+0% 法 功 能 addr=ARx addr=ARx ARx=ARx-1 addr=ARx ARx=ARx+1 addr=ARx ARx=circ(ARx+AR0) 说 明 ARx 为数据存储器地址 访问完成后,ARx 中的地址减 1 访问完成后,ARx 中的地址加 1 访问完成后,ARx 加上 AR0 的值并进行循环寻址

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

6) 存储器映射寄存器寻址 这种寻址方式用来修改存储器映射寄存器的内容,但是不会 影响当前的DP或SP值。由于不需要对DP和SP进行操作,因此这

种寻址方式往寄存器写数据所占用的开销是最小的。存储器映射
具体的地址产生方法为: * 当采用直接寻址方式时,数据存储器地址的低7位来自指 令字。不管当前DP或SP值为多少,数据地址的高9位都被置零。

寄存器寻址既可以在直接寻址中使用,也可以在间接寻址中使用。

* 当采用间接寻址方式时,数据存储器地址的低7位来自当
前辅助寄存器的低7位,数据地址的高9位置零。当操作完后,辅 助寄存器的高9位都被强制清零。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

如果AR1指向一个存储器映射寄存器,AR1的值为FF25H, 那么AR1最低7位为25H,所指示的数据存储器地址为0025H。 由于定时器周期寄存器PRD的地址为0025H,因此,AR1就指 向了定时器周期寄存器。执行完毕后,存放在AR1中的值改变

为0025H。
这种寻址方式除了能够修改寄存器以外,数据第0页中的 便笺式RAM的任意单元也可以采用存储器映射寄存器寻址来进 行修改。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

C54x DSP只有8条指令能使用存储器映射寄存器的寻址方式: * LDM MMR,dst

* MVDM dmad,MMR
* MVMD MMR,dmad * MVMM MMRx,MMRy * POPM MMR * PSHM MMR

* STLM src,MMR
* STM #1k,MMR

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

7) 堆栈寻址 在调用子程序或者中断时,系统堆栈能够自动保存程序计 数器PC中的值,它也可以用来保存程序当前的环境或要传递的

数据。C54x DSP的堆栈存放数据是从高端地址向低端地址进行
的,它用1个16位的堆栈指针SP来管理堆栈。对堆栈寻址,SP 总是指向堆栈中最后存入的数据单元。下面4条语句采用了堆栈

寻址的方式来访问堆栈:
PSHD:将数据存储器的一个值压入堆栈; PSHM:将存储器映射寄存器的一个值压入堆栈; POPD:将数据存储器的一个值弹出堆栈; POPM:将存储器映射寄存器的一个值弹出堆栈。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

对C54x DSP来说,数据压入堆栈前要对SP进行减量运算, 而在数据弹出堆栈操作之后,要对堆栈进行增量运算。 在中断和调用子程序的过程中,堆栈用来存放和恢复PC值。 当一个中断产生或者调用一个子程序时,返回地址会自动压入 堆栈顶部。调用中断和子程序的指令有:CALA[D]、CALL[D]、 CC[D]、INTR和TRAP。中断返回或者调用子程序返回时,返回 地址从堆栈中弹出,存放到PC中。返回指令有:RET[D]、 RETE[D]、RETEF[D]和RC[D]。 FRAME指令也能影响堆栈,它将一个短立即数偏移量与 SP指针相加,从而修改SP的值。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2.程序寻址 在程序存储器中存放着程序代码、系数表和立即操作数 等信息。访问这些信息时需要使用程序寻址方式。程序寻址 主要包括程序存储器地址如何产生及程序地址如何装入程序

计数器PC。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

1) 程序存储器地址的产生 程序地址产生逻辑(PAGEN)产生程序地址并将其放入程序 地址总线PAB。PAGEN包括5个寄存器:程序计数器PC、重复 计数器RC、块重复计数器BRC、块重复起始寄存器RSA和块重

复结束地址寄存器REA。此外,有些C54x DSP还有一个程序计
数器扩展寄存器XPC,用来扩展程序存储器进行寻址。C54x DSP取指令时将PC值放入PAB,然后读取相应的程序存储单元 中的指令。在读取这个程序存储器单元时,PC值递增,为下一 次取指令做准备。当程序执行转移、调用、返回、中断或循环 指令时,程序地址会出现不连续的情况,此时相应的目标地址 装入PC。通过PAB寻址得到的指令代码接着被装入指令寄存器 IR中。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

为了提高某些指令的性能,程序地址产生逻辑PAGEN也被 用来获取来自程序存储器中的操作数,例如读取系数表中某个 数据或者将数据写入数据表中某个单元,或者将数据在程序空 间之间传送。有些指令如FIRS、MACD和MACP等可以利用程

序总线来取出另一个乘数。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2) 程序计数器 程序计数器PC是一个包含内部或外部程序存储器地址的16 位寄存器,它控制着程序的运行过程。在通常情况下,程序指 令按前后顺序逐条执行时,PC值依次递增。但是,当程序指令

出现转移、子程序调用、子程序返回、条件操作、单指令重复、
指令块重复、硬件复位或者中断操作时,PC值出现不连续的情 况。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3) 扩展程序计数器 扩展程序计数器XPC是一个7位寄存器。在有些C54x DSP芯片中,用XPC对程序存储器扩展空间进行寻址。在程 序计数器PC被装入时,XPC的值也随情况发生变化。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.3 C54x DSP的C语言编程及混合编程
3.3.1 存储器模式 C54x DSP定点处理器有两种类型的存储器模式:程序存储 器和数据存储器。前者主要用于装载可执行代码,后者主要用 于装载外部变量、静态变量、系统堆栈以及一些中间运算结果。 C54x DSP的程序代码或数据以段的形式装载于存储器中。 C语言程序经C编译器编译后,生成七个可重定位的段,其中四 个被称为已初始化段,三个被称为未初始化段。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

补充: TMS320C54x伪指令(494-514)
TMS320C54x伪指令给程序提供数据、控制汇编过 程。具体实现以下任务: (1) 将数据和代码汇编到特定的段。 (2) 为未初始化的变量保留存储空间。 (3) 控制展开列表的形式。 (4) 存储器初始化。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(5) 汇编条件块。 (6) 定义全局变量。 (7) 指定汇编器可以获得宏的特定库。 (8) 检查符号调试信息。 常用的伪指令如表3-3所示。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3-3 常 用 伪 指 令
伪指令 title end text data int word bss sect usect .title ―string‖ .end .text[段起点] .data[段起点] .int value1[,…,valuen] .word value1[,…,valuen] .bss 符号,字数 .sect ―段名”[,段起点] 符号 .usect ―段名” ,字数 句 法 作 用 标题名。例如:.title ―example.asm‖ 结束伪指令,放在汇编语言源程序的最后 包含可执行程序代码 包含初始化数据 设置16位无符号整型量 设置16位带符号整型量 为未初始化的变量保留存储空间 建立包含代码和数据的自定义段 为未初始化的变量保留存储空间的自定义段

def
ref global mmregs

.def 变量1[,…,变量n]
.ref 变量1[,…,变量n] .global变量1[,…,变量n] .mmregs

在当前模块中定义,并可在别的模块中使用
在当前模块中使用,但在别的模块中定义 可替代?.def和?.ref伪指令 定义存储器映像寄存器的替代符号

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

1.段定义伪指令
段定义伪指令有以下五个:

.bss(未初始化段):在该段中保留若干字 .data(已初始化段):汇编入已经初始化得数据段 .sect(已初始化段):汇编入已命名的段 .text(已初始化段):汇编入可执行的代码段 .usect(未初始化段):在该段中保留若干字

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

1) 未初始化段
.bss和 .usect命令建立未初始化段。未初始化段就是 TMS320C54x存储器中的保留空间,它通常被定位在 RAM区。在目标文件中,这些段中没有确切内容,在 程序运行时,可以利用这些存储空间存放变量,变量一 般存放于数据存储器区域中。这两条命令的句法如下: .bss 符号,字数 符号 .usect “段名”,字数

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2) 已初始化段 .text、.data和 .sect命令建立已初始化段。已 初始化段包括可执行代码或已初始化的数据。在目标 文件中,这些段中都有确切内容,当加载程序时再将 这些内容放到TMS320C54x的存储器中。每个初始化段 都可以重新定位,也可以引用在其他段中定义的符号, 链接器会自动处理段间的相互引用。这三条命令的句 法如下: .text [段起点] .data [段起点] .sect "段名”[,段起点]

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

.text后是汇编语言程序的正文。经汇编后,.text后 的是可执行程序代码,一般存放于程序存储器区域中。 .data后是已初始化数据,有int和word两种数据形 式。由命令文件可以将定义的数据存放于程序或数据 存储器中。 .sect建立包含代码和数据的自定义段,常用于定义

中断向量表。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2.常数初始化伪指令 常数初始化伪指令如表3-4所示。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3-4 常数初始化伪指令
伪指令 句 法 作 用

bes

. bes size in bits

保留确定数目的位

space

. space size in bits

保留确定数目的位

byte

. byte value1[,…,valuen]

初始化一个或多个字节

field

. field value[,size in bits]

将单个值放入当前字的指定位域

int

.int value1[,…,valuen]

设置16位无符号整型量

word

.word value1[,…,valuen]

设置16位带符号整型量

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

float

. float value1[,…,valuen]

初始化一个或多个32位的数据,为IEEE浮点数

xfloat

. xfloat value1[,…,valuen]

初始化一个或多个32位的数据,为IEEE单精度的 浮点格式
初始化一个或多个字符

string

.string ―string1‖ [,…,“string n‖ ] . pstring ―string1‖ [,…,“string n‖ ] . long value1[,…,valuen]

pstring

初始化一个或多个字符

long

设置32位无符号整型量

xlong

. xlong value1[,…,valuen]

设置32位无符号整型量

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(1) .bes和 .space。汇编器对这些保留的位填0,将 位数乘以16来实现保留字。 (2) .field。此指令可以把多个域打包成一个字,汇 编器不会增加SPC的值,直至填满一个字。 (3) .float和 .xfloat。这两个指令将32位浮点数存放 在当前段的连续字中,高位字先存。.float伪指令能自 动按长字(偶地址)边界排列,但 .xfloat不能。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

澄清概念
在对32位数寻址时,先处理高有效字,然后处理 低有效字。 如果寻址的第1个字处在偶地址,那么第2个字就 处在下一个(较高的)地址; 如果第1个字处在奇地址,那么第2个字就处在前 一个(较低的)地址。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程
累加器 A 高有效字 低有效字

寻址1000H时的 32位字存储顺序

寻址1001H时的 32位字存储顺序

1000H 1001H

高有效字 低有效字

1000H 1001H

低有效字 高有效字

第1个字处在偶 地址,第2个字 就处在下一个 (较高的)地址

第1个字处在奇地址, 第2个字就处在前一 个(较低的)地址

32位字的存储顺序

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(4) .long和 .xlong。这两个指令将32位数存放在当前 段的连续字中,高位字先存。.long伪指令能自动按长 字(偶地址)边界排列,但 .xlong不能。 (5) .string和 .pstring。.string类似于 .byte,把8位字 符放到当前段的连续字中,每8位字符占一个字。 (6) .int和 .word。
例如“table:.int 1,2,3,4”, 或例“table:.word 8,6,4,2”。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.段程序计数器定位伪指令 段程序计数器定位伪指令的句法如下: .align [size in bits] 该指令使段程序计数器SPC对准1~128字的边界, 保证该指令后面的代码从一个字或页的边界开始。不 同的操作数代表了不同的含义: “1”表示让SPC对准字边界; “2”表示让SPC对准长字/偶地址边界; “128”表示让SPC对准页边界。

当 .align不带操作数时,其缺省值为128,即对准页边界。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

4.输出列表格式伪指令 表3-5列出了输出列表格式伪指令。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表3-5 输出列表格式伪指令
伪指令 length list/ nolist drlist/ drnolist page title width fclist/ fcnolist mlist/ mnolist sslist/ ssnolist tab 句 法 . length page length . list/ .nolist . drlist/ .drnolist . page . title ―string‖ . width page width . fclist/?.fcnolist . mlist/?.mnolist . sslist/?.ssnolist . tab size 作 控制列表文件的页长度 打开/关闭输出列表 伪指令加入/不加入列表文件 在输出列表中产生一个页指针 打印每一页的标题 设置列表文件的页宽度 允许/禁止假条件块出现在列表中 打开/关闭宏扩展和循环块的列表 允许/禁止替换符号扩展列表 定义制表键tab的大小 用

option

. option{B|L|M|R|T|W|X}

控制列表文件中的某些属性

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

表中:.option操作数所代表的含义如下: B:把 .byte伪指令的列表限制在一行里。 L:把 .long伪指令的列表限制在一行里。 M:关掉列表中的宏扩展。 R:复位B、M、T和W选项。 T:把 .string伪指令的列表限制在一行里。 W:把 .word伪指令的列表限制在一行里。 X:产生一个符号交叉参照列表。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

5.文件引用伪指令
表3-6 文件引用伪指令
伪指令 copy include def 句 法 . copy [―]filename[―] . include [―]filename[―] . def symbol1[,…,symboln] 作 用 从其他文件读源文件,所读语句出现在列表中 从其他文件读源文件,所读语句不出现在列表中 确认在当前段中定义且能被其他段使用的符号

global
mlib ref

. global symbol1[,…,symboln]
. mlib [―]filename[―] . ref symbol1[,…,symboln]

声明一个或多个外部符号
定义宏库名 确认在当前段中使用且在其他段中定义的符号

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

6.条件汇编伪指令
以下分两种情况介绍条件汇编伪指令。 (1) 第一种情况: .if well-defined expressio % ( if=1,就汇编紧接着的代码) .elseif well-defined expression % ( .if=0 .elseif=1) .else .endif 这条指令告诉汇编器根据表达式的值条件汇编一块代码。 .if :条件表示一个条件块的开始,如果条件为真,就汇编紧接的的 代码。 .elseif :表示如果.if的条件为假, .elseif 的条件为真,就汇编紧接的 的代码。 .endif :结束该条件块。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

(2) 第二种情况: .loop [well-defined expression] .break [well-defined expression] %表达式=0 循环 .endloop 这条指令告诉汇编器按照表达式的值循环汇编一块 代码 .break expression: 告诉汇编器当表达式的值为假时,继 续循环汇编,当表达式的值为真 时,立刻转到.loop的代码去。 .endloop:标注一个可循环块的末尾。 .loop:后面的操作数是循环执行的次数,其默认值是 1024次。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

7.符号定义伪指令 符号定义伪指令如表3-7所示。
表3-7 符号定义伪指令
伪指令 asg endstruct equ/ set eval label struct tag 句 法 .asg [―]字符串[―],替换符号 .endstruct 符号 .equ/.set 常数 .eval 表达式,替换符号 .label 符号 .struct 标号?.tag 结构名 作 用 将一个字符串赋给一个替换符号 设置类似于C的结构定义 将值赋给符号 将表达式的值传送到与替代符号等同的字符 串中 定义一个特殊符号指向当前段中的装入地址 设置类似于C的结构定义 将结构特性与一个标号联系起来

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

8.其它伪指令
伪指令 algebraic end mmregs . algebraic . end . mmregs

表3-8 其 它 伪 指 令
句 法 作 用 告诉编译器,文件中包含了算术伪指 令 结束程序 定义存储器映像寄存器的符号名称

version
emsg mmsg wmsg sblock newblock

. version
. emsg 字符串 . mmsg 字符串 . wmsg 字符串 . sblock [―]段名[―][,…,“段 名”] . newblock

决定指令所运行的处理器
把错误信息发送到标准输出设备中 把编译时的信息发送到标准输出设备 中 把警告信息发送到标准输出设备中 指定几段为一个模块 使局部标号复位

补充结束

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

进一步说明: 四个已初始化段分别是: * .text段 包括可执行代码、字符串和编译器产生的常量。 * .cinit段 包括初始化变量和常量表。 * .const段 包括字符串常量和以const关键字定义的常量。 * .switch段 为.const语句建立的表格。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

三个未初始化段分别是: * .bss段: 保留全局和静态变量空间。在程序开始运行时, C的引导(boot)程序将数据从.cinit段拷贝到.bss段。 * .stack段 : 为C的系统堆栈分配存储空间,用于变量的传 递。 * .sysmem段: 为动态存储器函数malloc、calloc、realloc

分配存储器空间。若C程序未用到此类函数,则C编译器不产生
该段。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

在编写链接命令文件(.cmd文件)时,: .text、.cinit、.switch段:通常可以链接到系统的ROM或者RAM 中 去,但是必须放在程序段(page0); .const段通常可以链接到系统的ROM或者RAM中去,但是必须 放在数据段(pagel); .bss、.stack和.sysmem段必须链接到系统的RAM中去,并且必 须放在数据段(pagel)。 由实验程序所建的某工程的链接命令文件(.cmd文件),如例

3.192所示。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例3.192
MEMORY { PAGE 0 : P53 P84 HPIRAM: origin = 0x100, length = 0x200 /* TMS320C54x DSP存储器分配 */

PROG:
PAGE 1 : DARAM1:

origin = 0x2000,

length = 0x1000

origin = 0x03000, length = 0x1000

PAGE 2 :
FLASHRAM: origin = 0x8000, length = 0x7fff }

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程 SECTIONS { /* 由C 定义 */ .vectors : load = PROG page 0 /*中断向量表*/ .text : load = PROG page 0 /*可执行代码*/ .cinit : load = PROG page 0 /*初始化变量和常数表*/ .switch : load = PROG page 0 /*为.constant语句建立的表格*/ .stack : load = DARAM1 page 1 /*C 系统堆栈*/ .const : load = DARAM1 page 1 /*字符串常量和以const关键字定义的常量*/ .bss : load = DARAM1 page 1 /*全局和静态变量空间*/ .dbuffer1024 : {} > DARAM1 page 1, align (1024) .coeffs1024 : {} > DARAM1 page 1, align (1024) .hpibuffer : load = HPIRAM page 0 /*由汇编定义*/ .data : >DARAM1 page 1 /*汇编定义的数据段*/ }

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.3.2 系统堆栈 C系统的堆栈可以完成的主要功能如下:

* 分配局部变量;
* 传递函数参数;

* 保存所调用函数的返回地址;
* 保存临时结果。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

运行堆栈的增长方向是从高地址到低地址, 即入栈则地址 减少,出栈则地址增加。堆栈的管理者是堆栈指针SP。堆栈的

容量由链接器(Linker)设定。链接器创建一个全局符号
_STACK_ SIZE,并给它分配一个与堆栈容量一样的数值(默认 值为l K字)。改变连接器选项中的stack项后的数值,堆栈的容 量也随之更改。 如:在链接命令文件(.cmd文件)中加入选项 -stack 0x1000

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

则堆栈的容量被设为1000H个字。 另外有一点必须格外注意,C编译器对堆栈溢出不发出任 何告警提示,而堆栈溢出将导致程序崩溃。因此,我们设定堆 栈容量时,必须保证堆栈具有足够的空间,最好留些余地。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

补充:TMS320C54x宏命令
TMS320C54x汇编器支持宏语言。宏命令 是源程序中具有独立功能的一段程序代码,它 可以根据用户的需要,由用户创建自己的指令。 宏命令一经定义,便可在以后的程序中多次调 用,从而可以简化和缩短源程序。其功能如下:

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

● 定义自己的宏,重新定义已存在的宏; ● 简化长的或复杂的汇编代码; ● 访问由归档器创建的宏库; ● 处理一个宏中的字符串; ● 控制展开列表。

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程
C源程序

宏源程序 C编译器

归档器

汇编代码

翻译帮助

宏库

编译器

汇编代码

归档器

COFF文件

库建立程序

目标文件库

链接器

实时支持库

可执行 COFF文件 十六进制 转换程序

PC机

测试工具

EPROM 编程器

绝对 列表器

交叉引用 列表器 C54x DSP

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

1.宏定义
宏命令可以在源程序的任何位置定义,但 必须在宏调用之前先定义好。宏定义也可以嵌 套。定义如下:

宏命令名

.macro <形式参数> ; 宏体 ; .endm

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

2.调用 宏命令定义好之后,就可以在源程 序中将宏命令名作为指令来调用这个宏 了。格式如下: 宏命令名 <实际参数>

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

例:求三个数之和的宏定义如 下:
add3 .macro LD ADD ADD STL .endm x1, x2, x3, sum3 x1, A x2, A x3, A A, sum3

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.宏展开
当源程序中调用宏命令时,汇编时就将宏 命令展开。在宏展开时,汇编器将实际参数传 递给形式参数,再用宏定义替代宏调用语句, 并对其进行汇编。上例的宏展开如下: 1 1 000001000! LD abc,A 1 000010000! ADD def,A 1 000020000! ADD ghi,A 1 000038000! STL A,adr

第三章第三节 TMS320C54xTM DSP汇编语言与混合编程

3.3.3 存储器分配 l.存储器分配 C编译器提供的运行支持函数中包含有几个允许在运行时为 变量分配存储器的函数,如malloc、calloc和recalloc。动态分配 不是C语言本身的标准,而是由运行支持函数所提供的。

为全局pool和heap分配的存储器空间定义在.sysmem块 中

推荐相关:

ARM 指令集和汇编语言程序 姓名:何瑞平 学号:201120928 专业:电路与系统 本章...有两种指令密度 无整数除法指令 大多数 ARM 指令都可以条件执行 有适合 DSP ...


Knowledge 问题谁在 DSP汇编语言中加入了 NOP 指令? NOP 指令加入的条件是...因为系统 并没有真正的直接从内存中获取, 而是半路拦截了正在保存的数据 (因为...


CCS 的使用与汇编语言程序设计入门 一、实验目的 1、了解 DSP 开发系统的组成...控制类的指令; 8、熟悉 DSP 开发软件的使用; 二、实验内容设计一汇编程序,...


(1) 已知:x1=30,x2=20,求:y=x1+x2 加法指令:ADD Smem,src 运行结果:...DSP系统实验07-C语言和汇... 21页 免费 第二部分 汇编语言编程实... 5页...


DSP汇编语言实验指导_IT/计算机_专业资料。DSP汇编语言实验指导实例TM...二.实验目的 1. 通过在 TMS320LF2407 DSP 实验开发系统中实际使用指令,初步...


暂无评价 9页 2财富值 DSP汇编语言指令系统 670页 2财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...


DSP控制器汇编语言程序设计_理学_高等教育_教育专区。DSP控制器汇编语言程序设计14 1 DSP 控制器汇编语言程序设计 摘要:在当今的数字化时代背景下,DSP 控制器在数字...


实验三 DSP 汇编语言基本程序设计(二) 一、实验目的 1. 掌握小数运算和数据块传送指令及程序设计方法。 2. 熟悉长字运算和并行运算指令及程序设计方法。 二、...


C55x汇编指令系统 21页 1下载券 第4章 DSP汇编语言与混合... 92页 1下载券...实验1:C55x 汇编语言编程一. 实验目的 1.掌握在 CCS 环境中汇编程序的编写、...


100MIPS (10)一个 DSP 系统的采样频率是 10KHZ,采用的 DSP 芯片的指令周期...答:C 语言实现 C 编译器 汇编编译器 目标文件 链接器 可执行文件 (3)CCS ...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com