31 TMS320C54x的数据寻址方式及指令系统
31 TMS320C54x的数据寻址方式及指令系统
3 端口地址(PA)寻址 端口地址( )
使用端口地址的指令有: 使用端口地址的指令有:
PORTR PORTW PA, Smem Smem , PA
端口地址( )寻址使用一个符号(符号地址) 端口地址(PA)寻址使用一个符号(符号地址) 或一个表示16位地址的立即数来给出外部 位地址的立即数来给出外部I/O口地 或一个表示 位地址的立即数来给出外部 口地 例如: 址。例如:
MVKD SMAPLE,*AR5; ,
2 程序存储器(pmad)寻址 程序存储器( )
使用程序存储器寻址的指令有: 使用程序存储器寻址的指令有:
FIRS Xmem, Ymem, pmad MACP Smem, pmad, src MVPD pmad, Smem MACD Smem, pmad, src MVDP Smem, pmad
Page 37 表3-9中 中
3.1.1 立即寻址
在立即寻址方式中,指令中包括了立即操作数。 在立即寻址方式中,指令中包括了立即操作数。
用途:主要用寄存器或存储器的初始化; 用途:主要用寄存器或存储器的初始化;
一条指令中可对两种立即数编码,一种是短立即 一条指令中可对两种立即数编码 , 另一种是16位的长立即数 位的长立即数。 数(3、5、8或9位),另一种是 位的长立即数。 、 、 或 位 短立即数指令编码为一个字长, 位立即数的指 短立即数指令编码为一个字长,16位立即数的指 令编码为两个字长。 令编码为两个字长。 立即数寻址指令中在数字或符号常数前面加一个 来表示立即数。 “#”号,来表示立即数。
1 数据存储器(dmad)寻址 数据存储器( )
使用数据存储器寻址的指令有: 使用数据存储器寻址的指令有: 数据存储器寻址的指令有
3tms320c54指令系统概要
累加器寻址和直接寻址举例
• DM的地址:0206h
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 1000000110
5. 间接寻址
在间接寻址中,64K数据空间任意单元都可通过一 个辅助寄存器中的16-bit地址进行访问。
‘C54x有8个16-bit辅助寄存器(AR0-AR7)。两个 辅助寄存器算术单元(ARAU0和ARAU1),根据辅助寄 存器的内容进行操作,完成无符号的16-bit算术运算。
SP 0024 0100
LD @1, A ADD @2, A ;A的结果:150
0050 3404
4. 累加器寻址
累加器寻址是用累加器中的数作为一个地址。这种寻 址方式可用来对存放数据的程序存储器寻址。地址由累加 器的低16位决定,共有两条指令可以采用累加器寻址:
READA Smem WRITA Smem READA是把累加器A所确定的程序存储器单元中的一个字, 传送到单数据存储器(Smem)操作数所确定的数据存储器单 元中。WRITA是把Smem操作数所确定的数据单元中的一个字 ,传送到累加器A确定的程序存储器单元中去。 上述两条指令,在重复的方式下执行,搬移连续的数据(以 A的值为起始地址)到连续的DM中,能够对累加器A自动增量
访问后, ARx中的地址减1/加1
• *+ARx:
在寻址之前,ARx中的地址加1
• *ARx-0B/ *ARx+0B :访问后,从ARx中以位倒序进位的
方式减去/加上AR0
• *ARx-0/ *ARx+0 : 访问后,从ARx中减去/加上AR0
第三章 TMS320C54X指令系统
本章内容包括:(1)存储器寻址方式 (2)汇编语言指令系统 (3)伪指令系统。
TMS320C54x的指令系统
页第13个地址单元里的数据。
第2部分 TMS320C54x的指令系统
算术运算指令—双精度(双字)
双字加(DADD)
例:DADD *AR3+, A, B ;将辅助寄存器AR3所指定的
地址里的数据与累加器A中的数据相加,计算结果存入累加 器B中。
33
34 35
K
k3 k5
少于9位的短立即数
3位立即数(0≤k3≤7) 5位立即数(-16≤k5≤15)
36
37 38 39 40
k9
lk Lmem mmr,MMR
9位立即数(0≤k9≤511)
16位长立即数 利用长字寻址的32位单数据存储器操作数 存储器映像寄存器
MMRx,MMRy 存储器映像寄存器,AR0~AR7或SP
9 10
∧ |
按位异或运算 按位或运算
第2部分 TMS320C54x的指令系统
从左至右 从左至右
C54x指令系统
指令系统的主要特点如下:
(1)可同时读入2或3个操作数。 (2)支持双精度运算的32位长操作数指令。 (3)单条指令重复和块指令重复操作。 (4)块存储器传送指令。 (5)并行操作(并行存储和加载、并行存储和加/减法、并 行存储和乘法、并行加载和乘法)指令。 (6)条件存储指令。 (7)延迟操作指令。 (8)从中断快速返回指令。 (9)特殊用途指令(支持FIR滤波、最小均方算法、多项式计 算以及浮点运算)。 (10)空转(省电方式)指令。
第2部分 TMS320C54x的指令系统
加载和存储类指令的区别
加载指令LD的源操作数可以是内存或立即数, 目的操作数则是累加器或特殊寄存器。 存储指令ST的源操作数可以是累加器、特殊寄 存器或者立即数,目的操作数则是内存(包括 MMR) 可以认为二者功能相反,LD是从内存读取,ST 是往内存存储。
TMS320C54x的指令系统寻址方式
注意:*这(1k种)寻寻址的址指可令不用能于与循支环指持令单(RP数T,据RPT存Z)一储起器使用操。作数的指令。
2023年10月16日7时22分
DSP原理及应用
13
注意:在立即寻址的指令中,应在数值或符号前面加
一个“#”,表示是一个立即数,以区别于地址
。 2023年10月16日7时22分
DSP原理及应用
7
2 绝对寻址
指令中含有所要寻找的操作数的16位存储单元 地址。
16位地址表示形式: ① 地址标号,如:TABLE; ② 16位符号常量,如:89AB、1234。
④ *(1k)寻址。
2023年10月16日7时22分
DSP原理及应用
9
1.数据存储器地址寻址 用于确定操作数存于数据存储单元的地址。
语法:使用一个程序标号或一个数字来指定数 据空间的一个地址。
例如,将数据存储器EXAM1地址单元中的数据复 制到AR5寄存器所指向的数据存储单元中。
MVKD EXAM1, * AR5
快速寻址存储器映象寄存 器
压入/弹出数据存储器和 存储器映像寄存器MMR
LD #10,A STL A,*(y) READA x LD @x,A LD *AR1,A LDM ST1,B PSHM AG
立即数10 A 将AL内容存入y所在的存储单 元 将A的内容作为地址读程序存 储器,并存入x存储单元 (DP+x的低7位地址) A
TMS320C54x的指令系统 寻址方式
寻址方式
当硬件执行指令时,寻找指令所指定的参与
运算的操作数的方法——寻址方式。
根据程序的要求采用不同的寻址方式,可以有
效地缩短程序的运行时间和提高代码执行效率。
’C54x芯片的寻址方式可以分为两类:
第3章TMS320C54x的指令系统详解
9位数据页指针DP值 图3.1.2
6~0
7位IR值
CPL=0时, 16位数据存储单元的地址
② 当CPL=1时,将堆栈指针SP的16位地址 与指令中的7位地址相加,形成16位的数据 存储器地址,如图:
15~0
16位堆栈指针SP
15~7 0 0 0 0 0 0 0 0 0 6~0 7位IR值
有效存储地址 图3.1.3 CPL=1时, 16位数据存储单元的地址
下图列出了双操作数寻址的指令代码格式:
15~8 操作码 7 Xmod 6 5 Xar 4 3 Ymod 2 1 Yar 0
图3.1.5双操作数寻址的指令代码格式
表3.1.7 双操作数的各位说明:
位 15~8 7~6 5~4 3~2 1~0
名称 操作码 Xmod Xar Ymod Yar
功能 8位代码包含了指令的操作码 定义了用于寻址Xmem操作数的间接寻址方式的类型 2位代码确定了存储Xmem地址的辅助寄存器 定义了用于寻址Ymem操作数的间接寻址方式类型 2位代码确定存储Ymem地址的辅助寄存器
3.1.3 累加器寻址
累加器寻址是将累加器的内容作为地址 去访问程序存储器单元,即将累加器中的 数作为地址,用来对存放数据的程序存储 器寻址。有两条指令可以采用累加器寻址。 ① READ A Smem ② WRIT A Smem
3.1.4 直接寻址
直接寻址是利用数据指针和堆栈指针寻 址,其特点是数据存储器地址由基地址和 偏移地址共同构成,共16位。 基地址位于数据存储器地址的高9位, 偏移地址位于数据存储器地址(dmad)的 低7位。 下面分别给出了直接寻址的指令代码格 式以及各位说明。
由于只有2位可以用于选择辅助寄存器,所以 根据Xar或Yar的值可以选择4个寄存器。 下表列出了Xar或Yar同辅助寄存器的对应关系:
第3章节TMS320C54x数据寻址方式
返回本节
3.3 累加器寻址
累加器寻址是用累加器中的数值作为一个地址读 写程序存储器。共有两条指令可以采用累加器寻 址: READA
返回首页
3.2.1 数据存储器(dmad)寻址
使用数据存储器寻址的指令有:
MVDK Smem, dmad MVKD dmad, Smem MVDM dmad, MMR MVMD MMR, dmad
数据存储器寻址使用符号(符号地址)或一个表 示16位地址的立即数来指明寻址的数据存储单元 的16位绝对地址。例如:
程序存储器(pmad)寻址使用符号(符号地址)或一个 表示 16 位地址的立即数来给出程序空间的地址。例如, 把程序存储器中标号为 TABLE 单元中的值复制到 AR7 所 指定的数据存储器中去,指令可写为: MVPD TABLE,*AR7; 返回本节
3.2.3 端口地址(PA)寻址
使用端口地址的指令有:
LD
#0,ARP
;ARP=0(#k3)
LD
LD LD
#3,ASM
#50,DP #1234,A
;ASM=3(#k5)
;DP=50(#k9) ;A=1234(#lk)
返回首页
3.2 绝对寻址
3.2.1 数据存储器(dmad)寻址
3.2.2 程序存储器(pmad)寻址 3.2.3 端口地址(PA)寻址 3.2.4 长立即数*(lk)寻址
TMS320C54X DSP 芯片的指令系统
分成512页,每页128个单元 DP取值范围:0~511 7位偏移地址范围:0~127 不改变基地址,可寻址连续的128个单元 DP复位值为0
直接寻址
DP值 00000 0000 偏移量 000 0000 „ 111 1111 000 0000 „ 111 1111 000 0000 „ 111 1111 „ 000 0000 „ 111 1111 数据存储器 第0页:0000H--007FH
例:MVDM 2000H,T RPT #19 ;数据块的复制 ;SAMPLE为常数表示 ;的地址 MVKD 0200H,*AR2+ MVMD AR2,SAMPLE
程序存储器地址(pmad)寻址
确定程序存储器中的一个地址 主要指令:
FIRS MACD MACP MVDP MVPD
Xmem, Smem, Smem, Smem, pmad,
位倒序寻址
主要用于FFT算法。 8点FFT的位码倒序:
若输入顺序:X(0)、X(1)、X(2) 、X(3)、 X(4) 、X(5) 、X(6)、X(7); 则输出顺序:Y(0)、 Y(4)、Y(2) 、Y(6)、 Y(1) 、Y(5) 、Y(3)、 Y(7).
16点FFT的位码倒序:表3.1.6
累加器:
Src,dst,dst_,A,B
移位值:
ASM,TS,SHFT,SHIFT K,k3,k5,k9,lk
立即数:
运算符及其优先级,表3.2.2
3.1 寻址方式
两种:数据寻址和程序寻址 数据寻址(7种基本方式)
立即数寻址 绝对地址寻址 累加器寻址 直接寻址 间接寻址 存储器映射寄存器寻址 堆栈寻址
TMS320C54x汇编指令系统
表4-2 加法指令
表4-3 减法指令
表4-4 乘法指令
表4-5 乘加和乘减指令
表4-6 双精度(32位操作数)指令
表4-7 专用指令 返回本节
2.2 逻辑运算指令
● 逻辑指令包括与、或、异或(按位)、移位和测试指令,分别如表4-8、表4-9、表4-10、表4-11、 表4-12所示。
表4-13 分支转移指令
表4-14 子程序调用指令表4-15 中断指令表4-16 返回指令
表4-17 重复指令
表4-18 堆栈操作指令
表4-19 混合程序控制指令 返回本节
表4-8 与逻辑运算指令
表4-9 或逻辑运算指令
表4-10 异或逻辑运算指令
表4-11 移位逻辑运算指令
表4-12 测试指令 返回本节
2.3 程序控制指令
● 程序控制指令包括分支转移指令、子程序调用指令、中断指令、返回指令、重复指令、堆栈操作 指令及混合程序控制指令,分别如表4-13、表4-14、表4-15、表4-16、表4-17、表4-18及表419所示。
TMS320C54x汇编指令系统
1 指令系统中的符号和缩写
表4-1 指令系统中的符号和缩写
返回首页
返回本节
2 指令系统
● 2.1 算术运算指令 ● 2.2 逻辑运算指令 ● 2.3 程序控制指令
返回首页
2.1 算术运算指令
● C54x的算术运算指令包括加法指令、减法指令、乘法指令、乘累加指令与乘法减法指令、双字/ 双精度运算指令及专用指令。分别如表4-2、表4-3、表4-4、表4-5、表4-6、表4-7所示。
附录 TMS320C54X汇编语言指令系统
指令系统TMS320C54x指令系统共有指令130条,由于操作数的寻址方式不同,派生至205条。
按指令的功能,可以将C54x指令系统分成4类:算术运算指令、逻辑运算指令、程序控制指令、加载和存储指令。
下面分别对各类指令进行介绍。
Ⅰ、算术运算指令算术运算指令分为加法指令(ADD),减法指令(SUB),乘法指令(MPY),乘加指令(MAC),乘减指令(MAS),双数/双精度指令(DADD,DSUB)和特殊操作指令(ABDST,SQDST)。
1.加法指令加法指令共有13条,如表1.1.1所示。
表1.1.1 加法指令整数分有符号数和无符号数两种格式,表示有符号数时,其最高位表示符号,最高位为0表示其为正数,1表示为负数;无符号数其最高位仍做为数值位计算。
例如,有符号数能够表示的最大的正数为07FFFh,等于32767,而0FFFFH表示最大的负数–1;无符号数不能表示负数,它能够表示的最大的数为0FFFFh,等于十进制数的65535。
小数符号和上面整数的表示一样,但必须注意如何安排小数点的位置。
2.减法指令减法指令共有13条,见表1.1.2所示。
表1.1.2 减法指令3.乘法指令乘法指令共有10条,见表1.1.3。
表1.1.3乘法指令续表4.乘加和乘减指令乘加和乘减指令共有22条,见表1.1.4所示。
表1.1.4 乘加和乘减指令续表5.双操作数指令双操作数指令共有6条,见表1.1.5所示。
表1.1.5双操作数指令续表6.特殊应用指令特殊应用指令共有15条,见表1.1.6所示。
表1.1.6 特殊应用指令续表Ⅱ、逻辑运算指令逻辑运算指令包括与指令(AND),或指令(OR),异或指令(XOR),移位指令(ROL)和测试指令(BITF)。
1.与指令与指令共5条,见表2.2.1。
表2.2.1与指令2.或指令或指令共5条,见表2.2.2。
表2.2.2 或指令3.异或指令异或指令共5条,见表2.2.3。
表2.2.3 异或指令4.移位指令移位指令共6条,见表2.2.4。
TMS320C54x的寻址方式
方法
特点
(AR0~AR7)→ ARAU0/ARAU1 → 16位无符号算术 运算→ 寻址范围为64K
能在一个指令中访问 两个数据存储器单元
两个独立的存储器单元读数据 读一个、写另一个存储器单元 读写两个连续的存储器单元 11
(1)单操作数寻址
LD *AR1,B
ST0
ARP
定义间接寻
定义寻址所使用
ST1:
址
20
7.堆栈寻址
功能
特点
PSHD *AR2 POPD *AR3
用来在中断和 子程序调用时 自动保存程序 计数器(PC) 中的数值,也 能用来保护现 场或传送参数
从高地址向低地址方向生长,
SP用来管理堆栈,SP始终指向
堆栈中所存放的最后一个数据,
即SP指针始终指向栈顶。在压
入操作时,先减小SP的值,再
TMS320C54x的寻址方式
Smem:16位单寻址操作数。 Xmem:16位双寻址操作数,从DB数据总线上读出。 缩 Ymem:16位双寻址操作数,从CB数据总线上读出。 写 dmad:16位立即数,数据存储器地址。 pmad:16位立即数,程序存储器地址。 PA: 16位立即数,I/O口地址。 src: 源累加器(A或B)。 dst: 目的累加器(A或B)。 lk: 16位长立即数。
访问后,ARx中的地址加1 访问后,AR0以循环寻址的
方式加到ARx中 19
6.存储器映象寄存器寻址
功能
方法
举例 特点
用来修 改存储 器映象 寄存器
高9位数据 存储器地址 被置0,利 用指令中的 低7位地址 访问MMR。
LDM PRD,A
0页寻址。 不影响当前 DP或SP值 。 用于直接寻 址和间接寻
TMS320C54X 汇编语言
TMS320C54X 汇编语言目录第一章 寻址方式第二章 汇编语言指令系统第三章 汇编指令(伪指令)第四章 宏第五章 汇编源程序的语句格式第一章寻址方式C54X提供了七种基本寻址方式:1,立即寻址,一个固定立即值编入指令;2,绝对寻址,一个固定地址编入指令中;3,累加器寻址,用一累加器中的内容去寻址程序存储器。
4,直接寻址,相对DP或SP的偏移地址编入指令中的低七位。
偏移地址加DP或SP 决定数据存储器中的实际地址;5,间接寻址,用辅助寄存器访问存储器;6,存储器-映射寄存器寻址,修改存储器-映射寄存器不会影响到当前DP或SP的值;7,堆栈寻址,把数据压入或弹出系统堆栈。
一、立即寻址在立即寻址中,指令结构中包含操作数的特定值(立即数)。
两种类型的值可以编入指令:1,短立即数可以是3、5、8或9位长;2,16位的长立即数立即数可被编入1-字或2-字的指令中。
3、5、8或9位短立即数编入1-字指令;16位长立即数编入2-字指令中。
编入指令中的立即数的长度取决于所用指令的类型。
下表列出可编入立即数的C54指令。
表中也给出了可编入指令中的立即数位数。
3-和5-位立即数8-位立即数9-位立即数16-位立即数LD FRAMELDRPT LD ADD ORMADDM RPTAND RPTZANDM STBITF STMLD XORMAC XORMOR在立即数寻址中,要在立即数或符号前加“#”号来表示立即数。
如,把80H装入累加器A 中:LD #80h, A下图使用了RPT指令以表明短立即数如何在立即寻址方式时编入指令中。
指令中的操作码编入指令的高8位。
立即数编入指令的低8位。
例:RPT #99H15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 0 0 18位操作码8位立即数下图使用了RPT指令以表明长立即数如何在立即寻址方式时编入指令中。
第四章 TMS320C54x的数据寻址方式
第 8页
一、 数据存储器(dmad)寻址 指令中出现用程序标号或地址值表示的操作数所在的数据 存储空间的地址。 这种寻址方式有如下格式(指令的具体说明见5.2节): MVDK Smem,dmad MVDM dmad,MMR MVKD dmad,Smem MVMD MMR,dmad 【例4-2】向数据存储器传送数据。已知指令执行前,AR3 内容为0100H,数据存储器0100H中的内容为1234H。 MVDK *AR3+,1200H 执行后,数据存储器1200H中的内容为1234H,AR3中的 内容为0101H。
第四章 TMS320C54x的数 据寻址方式
2014-4-15
1
4.1立即寻址 4.2绝对寻址 4.3累加器寻址 4.4直接寻址 4.5间接寻址 4.6存储器映射寄存器寻址 4.7堆栈寻址
第 2页
在指令系统中通常有两个部分:操作码部分和操作数部分。 操作码是指具体要执行的操作,它通常以规定的助记符 (即操作符)形式出现,例如,赋值操作用LD表示,加法 操作用DADD表示,不同型号的DSP规定不同。 操作数指操作的对象,通常分源操作数(第一个操作数, 指初始操作数据)和目的操作数(第二个操作数,指操作 结果数据)。 在执行指令时,CPU首先要找到源操作数,然后再根据操作 码对操作数进行操作,最后把结果放到指令中指定的目的 操作数位置。
第 20页
一、单操作数寻址
在单操作数寻址中,还有位码倒序寻址。 例如:AR0=0000 1010B,AR2=0110 0110B,如执行 *AR2+0B 寻址功能,也就是(0110 0110)+(0000 1010), 结果AR2=0110 1101B。应注意,计算是采用从左到右运算 的。
C54x DSP的寻址方式及代数汇编指令
C54x DSP的寻址方式及代数汇编指令c54xdsp的寻址方式及代数汇编指令附录三:c54xdsp的寻址方式及代数汇编语言指令c54xdsp的串行方式tms320c54x系列dsp的存储空间包括程序存储空间、数据存储空间和i/o空间。
每个空间都有64k字的大小。
因此,如果采用直接的寻址方式则需16位的地址。
为了节省程序存储空间和提高程序的运行速度,经常采用间接寻址等方法以便使指令字节数减少。
在本章内将对c54x的寻址方式做较为详细的介绍。
1.程序空间串行16位直接寻址方式主要应用于程序的调用(callpmad)、跳转指令(gotopmad)和块重复指令((d)blockrepeat)中。
具体说明如下:1、pmad所指的就是16十一位程序计数器pc的内容,它代表的就是程序存储空间的地址(programmemoryaddress);2、call指令和goto指令包含无条件的call和goto和有条件的call和goto。
3、块重复指令(d)blockrepeat的初始地址藏于寄存器rsa(repeatstartingaddress)中,结束地址存于寄存器rea(repeatendingaddress)中,重复次数存于寄存器brc(blockrepeatcounter)中。
4、pc、brc、rsa、rea坐落于pagen(programaddressgenerator)当中,见到图(3a-1)。
rcbrcrsarea图(3a-1)pagen程序计数器pc2.数据空间串行数据空间的寻址正如同8086微机的寻址问题一样重要,只有正确掌握c54x数据空间的c54x提供了7种基本寻址方式:?立即寻址.1寻址方式才能正确编制c54x的汇编程序。
绝对串行.?累加器串行.?轻易串行.辅助寄存器间接寻址.?内存映射寄存器寻址.?堆栈寻址.在本节中将详尽表明这7种串行方式。
坚信详尽写作本节可以有利于对c54x处理器的重新认识和认知,并在程序的基本建设中熟练地运用这些串行方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编程举例:
CPL=1:dma加上 基地址形成数据存储器地址。(st1中) : 加上SP基地址形成数据存储器地址 加上 基地址形成数据存储器地址。 中 以SP为基准的直接寻址
使用以SP为基址的直接寻址: 使用以 为基址的直接寻址: 为基址的直接寻址 AND LD sample, A sample, A ;……..
3 端口地址(PA)寻址 端口地址( )
使用端口地址的指令有: 使用端口地址的指令有:
PORTR PORTW PA, Smem Smem , PA
端口地址( )寻址使用一个符号(符号地址) 端口地址(PA)寻址使用一个符号(符号地址) 或一个表示16位地址的立即数来给出外部 位地址的立即数来给出外部I/O口地 或一个表示 位地址的立即数来给出外部 口地 例如: 址。例如:
MVKD SMAPLE,*AR5; ,
2 程序存储器(pmad)寻址 程序存储器( )
使用程序存储器寻址的指令有: 使用程序存储器寻址的指令有:
FIRS Xmem, Ymem, pmad MACP Smem, pmad, src MVPD pmad, Smem MACD Smem, pmad, src MVDP Smem, pmad
条使用堆栈寻址的指令: 有4条使用堆栈寻址的指令: 条使用堆栈寻址的指令 PSHD 把一个数据存储器数据压入堆栈; 把一个数据存储器数据压入堆栈; PSHM 把一个存储器映象寄存器中的值压入堆栈; 把一个存储器映象寄存器中的值压入堆栈; POPD 从堆栈中弹出一个数据至数据存储器单元; 从堆栈中弹出一个数据至数据存储器单元; POPM 从堆栈中弹出一个数据至存储器映象寄存 器。
单操作数寻址
单数据存储器操作数间接寻址类型
编程举例:
特殊的间接寻址方式有: 特殊的间接寻址方式有:
1.循环寻址 . 2.倒序寻址(如表所示) .倒序寻址(如表所示)
表3-3 位倒序寻址
5.2 双操作数寻址
双 数 据 存 储 器 操 作 数 间 接 寻 址 类 型 为 * ARx、 、 *ARx-、*ARx+、*ARx+0%。 、 、 。 所用辅助寄存器只能是AR2、AR3、AR4、AR5。 、 所用辅助寄存器只能是 、 、 。 其特点是:占用程序空间小,运行速度快,在一 其特点是:占用程序空间小,运行速度快, 个机器周期内通过两个16位数据总线 位数据总线( 和 ) 个机器周期内通过两个 位数据总线(C和D)读 两个操作数。指令中Xmem表示从 总线上读出 表示从DB总线上读出 两个操作数。指令中 表示从 位操作数, 表示从CB总线上读出的 的16位操作数,Ymem表示从 总线上读出的 位操作数 表示从 总线上读出的16 位操作数。 位操作数。 例如: 例如:MPY *AR2,*AR3,A , ,
只有8条指令能使用存储器映射寄存器寻址: 只有 条指令能使用存储器映射寄存器寻址: 条指令能使用存储器映射寄存器寻址 LDM MMR, dst , MVMD MMR, dmad POPM MMR STLM src, MMR MVDM dmad, MMR MVMM MMRx, MMRy PSHM MMR STM #lk, MMR
3.1.2 绝对寻址
1 数据存储器(dmad)寻址 数据存储器( ) 2 程序存储器(pmad)寻址 程序存储器( ) 3 端口地址(PA)寻址 端口地址( ) 4 长立即数 (lk)寻址 长立即数*( ) 含义:指令中包含所需寻址的存储器单元地址或 端口 含义:指令中包含所需寻址的存储器单元地址或I/O端口 地址; 地址; 用途:利用 位地址寻址存储器或 用途:利用16位地址寻址存储器或 位地址寻址存储器或I/O
PORTR FIFO ,*AR5;
4 长立即数 (lk)寻址 长立即数*( )
长立即数*( ) 长立即数 (lk)寻址用于所有支持单数据存储器 操作数( 操作数(Smem)的指令。 )的指令。 长立即数*(lk)寻址使用一个符号(符号地址) 长立即数 ( )寻址使用一个符号(符号地址) 或一个表示16位地址的立即数来指定数据存储空 或一个表示 位地址的立即数来指定数据存储空 间的一个地址。例如,把数据空间中地址为 BUFFER单元中的数据传送到累加器 , 指令可 单元中的数据传送到累加器A, 单元中的数据传送到累加器 写为: 写为: LD *(BUFFER),A ( )
6 存储器映象寄存器寻址
存储器映象寄存器寻址用于修改存储器映象寄存器( 存储器映象寄存器寻址用于修改存储器映象寄存器(MMR)中的内 ) 而不影响当前数据页指针DP和当前堆栈指针 和当前堆栈指针SP。 容,而不影响当前数据页指针 和当前堆栈指针 。 由于这种方式不需要修改DP和 ,对寄存器的写操作开销最小。 由于这种方式不需要修改 和SP,对寄存器的写操作开销最小。存 储器映象寄存器寻址可用于直接寻址和间接寻址。 储器映象寄存器寻址可用于直接寻址和间接寻址。
Page 37 表3-9中 中
3.1.1 立即寻址
在立即寻址方式中,指令中包括了立即操作数。 在立即寻址方式中,指令中包括了立即操作数。
用途:主要用寄存器或存储器的初始化; 用途:主要用寄存器或存储器的初始化;
一条指令中可对两种立即数编码,一种是短立即 一条指令中可对两种立即数编码 , 另一种是16位的长立即数 位的长立即数。 数(3、5、8或9位),另一种是 位的长立即数。 、 、 或 位 短立即数指令编码为一个字长, 位立即数的指 短立即数指令编码为一个字长,16位立即数的指 令编码为两个字长。 令编码为两个字长。 立即数寻址指令中在数字或符号常数前面加一个 来表示立即数。 “#”号,来表示立即数。
ADD sample, B ,
5 间接寻址
5.1 单操作数寻址 5.2 双操作数寻址
5.1 单操作数寻址
在间接寻址中, 在间接寻址中,64K数据空间任意单元都可通过一个辅助 数据空间任意单元都可通过一个辅助 寄存器中的16-bit地址进行访问 。 ‘ C54x有 8个 16-bit辅 地址进行访问。 寄存器中的 地址进行访问 有 个 辅 助 寄 存 器 ( AR0-AR7 ) 。 两 个 辅 助 寄 存 器 算 术 单 元 (ARAU0和ARAU1),根据辅助寄存器的内容进行操作, 和 ) 根据辅助寄存器的内容进行操作, 完成无符号的16-bit算术运算。间接寻址很灵活,不仅能 算术运算。 完成无符号的 算术运算 间接寻址很灵活, 从存储器中读或写一个单16-bit数据操作数,而且能在一 数据操作数, 从存储器中读或写一个单 数据操作数 条指令中访问两个数据存储器单元( 条指令中访问两个数据存储器单元(即从两个独立的存储 器单元读数据, 器单元读数据,或读一个存储器单元同时写另一个存储器 单元,或读写两个连续的存储器单元) 单元,或读写两个连续的存储器单元)。
7 堆栈寻址
当发生中断或子程序调用时, 当发生中断或子程序调用时 , 系统堆栈自动保存 PC值。堆栈也可以用于保存和传递其他数据。堆 值 堆栈也可以用于保存和传递其他数据。 栈由高地址向低地址增长,处理器使用16位的存 栈由高地址向低地址增长,处理器使用 位的存 储器映象寄存器——堆栈指针(SP)对堆栈进行 堆栈指针( ) 储器映象寄存器 堆栈指针 寻址, 总是指向压入堆栈的最后一个数据 总是指向压入堆栈的最后一个数据。 寻址,SP总是指向压入堆栈的最后一个数据。
3
数据寻址方式及指令系统
3.1 寻址方式
TMS320C54x DSP提供以下 种基本数据寻址方式。 提供以下7种基本数据寻址方式 提供以下 种基本数据寻址方式。 (1)立即数寻址 ) (2)绝对地址寻址 ) (3)累加器寻址 ) (4)直接寻址 ) (5)间接寻址 ) (6)存储器映射寄存器寻址 ) (7)堆栈寻址 )
DP作为基地址的直接寻址方式
SP作为基地址的直接寻址方式
CPL=0:dma与9-bit的DP相结合形成数据存储器地址。 : 相结合形成数据存储器地址。 与 的 相结合形成数据存储器地址 以DP为基准的直接寻址
0 1
DP 9-bit
2
510 511
9-bit的DP指向数据存储空间 的 指向数据存储空间 的512个数据页中的一页 个数据页中的一页
寻址指令中用到的缩写符号及其含义
缩写符号 Smem Xmem Ymem dmad pmad PA src dst lk 含义 16位单数据存储器操作数 在双操作数指令及某些单操作数指令中所用的16位双数据存储 器操作数,从DB总线上读出 在双操作数指令中所用的16位双数据存储器操作数,从CB总线 上读出;在读同时并行写的指令中表示写操作数 16位立即数——数据存储器地址(0~65535) 16位立即数——程序存储器地址(0~65535) 16位立即数——I/O口地址(0~65535) 源累加器(A或B) 目的累加器(A或B) 16位长立即数
返回本节
1 数据存储器(dmad)寻址 数据存储器( )
使用数据存储器寻址的指令有: 使用数据存储器寻址的指令有: 数据存储器寻址的指令有
MVDK Smem, dmad MVKD dmad, Smem MVDM dmad, MMR MVMD MMR, dmad
数据存储器寻址使用符号(符号地址) 数据存储器寻址使用符号 ( 符号地址 ) 或一个表 示16位地址的立即数来指明寻址的数据存储单元 位地址的立即数来指明寻址的数据存储单元 位绝对地址。 的16位绝对地址。例如: 位绝对地址 例如:
3.3 累加器寻址
累加器寻址是用累加器中的数值作为一个地址读 写程序存储器。 写程序存储器 。 共有两条指令可以采用累加器寻 址: READA WRITA Smem Smem
4 直接寻址
在直接寻址方式中, 在直接寻址方式中 , 指令中包含数据存储器地址 作为地址偏移量, (dma)的低 位,这7位dma作为地址偏移量, )的低7位 位 作为地址偏移量 结合基地址( 由数据页指针DP或堆栈指针 或堆栈指针SP给 结合基地址 ( 由数据页指针 或堆栈指针 给 共同形成16位的数据存储器地址 位的数据存储器地址。 出)共同形成 位的数据存储器地址。使用这种 寻址方式, 用户可在不改变DP或 的情况下 的情况下, 寻址方式 , 用户可在不改变 或 SP的情况下 , 对一页内的128个存储单元随机寻址 。 采用这种 个存储单元随机寻址。 对一页内的 个存储单元随机寻址 寻址方式的好处是指令为单字指令, 寻址方式的好处是指令为单字指令 , 数据存储器 地址( 位放在指令字中。 地址(dma)的低 位放在指令字中。 )的低7位放在指令字中