3986.net
小网站 大容量 大智慧
相关标签
当前位置:首页 >> 工学 >>

DSP 第五章指令


第五章 寻址方式和汇编指令
§5.1 寻址方式 寻址方式是指寻找指令中操作数地址的方式。 TMS320C2000汇编指令有3种存储器寻址方式: 立即寻址方式 直接寻址方式 间接寻址方式

一、立即寻址方式
在立即寻址方式中,指令字包含该指令要操作的常数。 在指令中常数前加“#”用于表示立即操作数。 C2000立即寻址方式分两种类型: 短立即寻址方式 长立即寻址方式。

短立即寻址方式: 指令的操作数为一个8位、9位或13 位的常数; 短立即寻址方式的指令是一个单指令字,该常数就包含 在这个单指令字中。
例1: RPT # k
RPT # 100 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 0

;重复指令, k 为8位立即数

RPT指令操作码

操作数 =100

短立即寻址方式: 指令的操作数为一个8位、9位或13 位的常数; 短立即寻址方式的指令是一个单指令字,该常数就包含 在这个单指令字中。
例2: LDP # k LDP # 100
1 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0

;装载DP指令,k 为9位立即数

LDP指令操作码

操作数 =100

短立即寻址方式: 指令的操作数为一个8位、9位或13 位的常数; 短立即寻址方式的指令是一个单指令字,该常数就包含 在这个单指令字中。

例3: MPY # k MPY # 0031h
1 1 0 0 0 0

;乘法指令, k 为13位立即数的操作数

0

0

0 0

1

1

0

0

0

1

MPY指令操作码

操作数 =0031h

长立即寻址方式: 指令的操作数为一个16位的常数 指令需两个指令字,该常数为第二指令字。 这个16位的常数可以作为一个绝对值,也可以作为二 进制的补码数。
例 ADD # lk [, shift] ADD #16384, 2
第一个 指令字 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0

; lk 为16位立即数的操作数

ADD指令操作码 第二个 指令字 0 1 0 0 0 0 0 0 0 0 0 0

移位数 = 2 0 0 0 0

操作数 = 16384 = 4000h

二、直接寻址方式
访问数据存储器的方式:直接和间接寻址方式。 直接寻址方式将指令中的7位操作数与数据存储器页面指针 (DP)的9位连接在一起,形成个16位数据存储器地址。 直接寻址方式可访问64k数据存储器的512个数据页面和每 个数据页中的128个字单元。 偏移量是指令中的操作数,是页面中的某个地址单元。 偏移量是7位的立即数,作为64K数据存储器地址的低7位, DP值作为数据存储器地址的高9位,用来确定当前数据页。



直接寻址方式的数据存储器地址产生
状态寄存器ST0 D8 DP(9LSBs) D0 D15 8MSBs 指令操作码 指令寄存器 D8 D7 D6 0 7LSBs D0

D15 DP(9MSBs)

D7 D6 偏移量 (7LSBs)

D0

16位数据存储器地址

使用直接寻址方式访问数据存储器的步骤: 1)设置数据页面,将当前数据页面(0-511)装入DP: LDP #k 2)设置偏移量, 给出7位偏移量作为指令的一个操作数。 ADD 5Dh
应注意 : 1. 在程序开始时必须初始化DP。 2. 如果程序中的所有指令均访问同一个数据页,只需在程序的 前面装入DP,而不必在采用直接寻址方式的每个指令之前设 置数据页。若访问新的数据页,需重新装新的DP值。 3. 用直接寻址方式的指令其操作数不加前缀“#”

例1: LDP ADD

#4 9h,5
指令寄存器 D0 D15 D8 D7 D6 0 D0

状态寄存器ST0 D8

0 0 0 0 0 0 1 0 0

0 0 1 0 0 1 0 1 移5位ADD指令操作码

0 0 0 1 0 0 1

D15

D7 D6

D0

0 0 0 0 0 0 1 0 0

0 0 0 1 0 0 1

16位数据存储器地址:0209h

例2: LDP ADDC
状态寄存器ST0 D8

#500 6h

; 500 = 1F4h

指令寄存器 D0 D15 D8 D7 D6 0 D0

1 1 1 1 1 0 1 0 0

0 1 1 0 0 0 0 0 移5位ADD指令操作码

0 0 0 0 1 1 0

D15

D7 D6

D0

1 1 1 1 1 0 1 0 0

0 0 0 0 1 1 0

16位数据存储器地址:0FA06h

三、间接寻址方式
通过一个16位的辅助寄存器间接访问数据存储器。 利用8个16位的辅助寄存器(AR0—AR7)可提供灵活多变且 功能强大的间接寻址方式。 辅助寄存器的内容作为一个16位地址可访问64K数据存储 器中的任意单元。 除了具有立即操作数或没有操作数的指令外,所有的指令 都能使用间接寻址方式。 间接寻址方式不要考虑页地址DP

1. 辅助寄存器的选择
装载ARP来选择辅助寄存器: LST指令 MAR指令 支持间接寻址方式的任意指令 由ARP指定的辅助寄存器称为当前辅助寄存器或当前AR。 在使用间接寻址方式的指令中,当前辅助寄存器的内容为数 据存储器的访问地址。 。

2. 间接寻址的选择
使用当前辅助寄存器进行间接寻址之后,辅助寄存器算术 单元(ARAU)可以对当前辅助寄存器的内容进行修改。 C2000提供了4种修改方法: 无增量或减量 加1或减1 加或减一个变址量 按逆向进位方式加或逆向借位方式减一个变址量

2. 间接寻址的选择
指令使用当前辅助寄存器内容作为数 使用当前辅助寄存器进行间接寻址之后,辅助寄存器算术 据存储器地址。 单元(ARAU)可以对当前辅助寄存器的内容进行修改。

C2000提供了4种修改方法: 无增量或减量 加1或减1 加或减一个变址量

指令执行完成后当前辅助寄存器的内 容保持不变。 例: LT * ;用当前AR所指的数据存
储器地址内容装载TREG

按逆向进位方式加或逆向借位方式减一个变址量

2. 间接寻址的选择
指令使用当前辅助寄存器内容作为数 使用当前辅助寄存器进行间接寻址之后,辅助寄存器算术 据存储器地址,然后将当前辅助寄存 单元(ARAU)可以对当前辅助寄存器的内容进行修改。

C2000提供了4种修改方法: 无增量或减量 加1或减1 加或减一个变址量

器内容加1或减1。 例:
LT *+ ;用当前AR所指的数据存 储器地址内容装载TREG, 然后将当前AR内容加1 。 LT *- ;用当前AR所指的数据存 储器地址内容装载TREG,

按逆向进位方式加或逆向借位方式减一个变址量 然后将当前AR内容减1。

2. 间接寻址的选择
指令使用当前AR的内容作为数据有储器 使用当前辅助寄存器进行间接寻址之后,辅助寄存器算术 地址,然后向AR的内容加上或减去AR0 单元(ARAU)可以对当前辅助寄存器的内容进行修改。 的内容。 AR0中的值即是这个变址量。

C2000提供了4种修改方法: 例: 无增量或减量 加1或减1 加或减一个变址量
LT *0+ ;用当前AR所指的数据存 储器地址内容装载TREG, 然后向当前AR内容加上 AR0内容 。 LT *0- ;用当前AR所指的数据存 然后将当前AR内容减1。

储器地址内容装载TREG, 按逆向进位方式加或逆向借位方式减一个变址量

2. 间接寻址的选择
指令使用当前AR内容作为数据存储器地址,然后将当前AR内容与AR0 中的内容按逆向进位或逆向借位方式相加或相减,结果送到当前辅助寄 使用当前辅助寄存器进行间接寻址之后,辅助寄存器算术 存器中。AR0中的值即是这个变址量。 单元(ARAU)可以对当前辅助寄存器的内容进行修改。

例:

C2000提供了4种修改方法: LT *BR0+ ;用当前AR所指的数据存储器地址内容装载TREG, 然
后向当前AR内容加上 AR0内容 , 加法采用逆向进位方式。 无增量或减量 后将当前AR内容减1。减法采用逆向借位方式。 加1或减1 LT *BR0- ;用当前AR所指的数据存储器地址内容装载TREG,然 AR TREG

加或减一个变址量 按逆向进位方式加或逆向借位方式减一个变址量

3.下次使用的辅助寄存器
许多间接寻址的指令除了可以改变当前AR的内容外,还 可以指定下次使用的AR 。 当这些指令执行完毕时,指定的AR成为下一条指令的当 前AR ,即为下次使用的AR。 指定下次使用的AR的指令实际上是将一个0-7的值装入 ARP中,当前的ARP值则被复制到ARB中

例: MAR *, AR1 LT :将1装入ARP,使AR1成为下次使用的AR。

*+, AR2 ;将当前辅助寄存器AR1的内容作为地址,把该地址 单元的内存装入TREG;然后将ARl的内容加1;再使 AR2成为下次使用的辅助寄存器

MPY *

;将AR2的内容作为地址,把该地址单元的内容与 TREG的内容相乘,乘积送入乘积寄存器PREG, 下次使用的辅助寄存器仍为AR2

4. 修改辅助寄存器的方法
使用专用指令修改辅助寄存器的内容。
LAR指令:直接将操作数指定的内容装入AR。 ADRK指令:将当前AR值加一个立即数。 SBRK 令:将当前AR值减‘个立即数。 MAR指令:将当前AR值加、减1或加、减一个变址量。



利用任何一条支持间接寻址的指令都能修改辅助寄存器 的内容

§ 5.2 汇编指令
TMS320C2000系列的汇编指令支持各种信号处理运算。 C2000指令集与C2X指令集兼容,为C2x编写的代码经重 新汇编可在C2000上运行。 C5x的指令包含了C2000的指令,C2000的指令也能用于 C5X芯片。 TMS320C2000系列的汇编指令有80多条。

一、汇编指令的表示法
用助记符表示 组成: 操作码 [ 操作数 [,操作数 ] ]



LAR 操作码

AR1, #08h 操作数

二、分类
C2000指令按功能叫分为6大类。 (1)累加器、算术和逻辑运算指令(26条) (2)辅助寄存器指令( 6条); (3)TREG、PREG 和乘法指令( 20条): (4)转移指令(12条); (5)控制指令(15条); (6)I/O和存储器指令(8条)。 见P89 -92

三、指令句法描述
C2000指令有6种典型的格式 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 dma[,shift] dma, 16 ind [,shift [,ARn]] ind [,16[,ARn]] #k #lk[,shift ]
例: 无操作数指令 ABS

三、指令句法描述
C2000指令有6种典型的格式 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 dma[,shift] dma, 16 ind [,shift [,ARn]] ind [,16[,ARn]] #k #lk[,shift ]
shift 例: ADD 1, 1 左移0-15位直接寻址 其中: dma 数据存储器地址的低 7位(页内地址) 左移0-15位(缺省为0)

三、指令句法描述
C2000指令有6种典型的格式 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 dma[,shift] dma, 16 ind [,shift [,ARn]] ind [,16[,ARn]] #k #lk[,shift ]
左移16位直接寻址 其中: dma 数据存储器地址的低 7位(页内地址) 16 例: ADD 13h, 16 左移16位

三、指令句法描述
C2000指令有6种典型的格式 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 dma[,shift] dma, 16 ind [,shift [,ARn]] ind [,16[,ARn]] #k #lk[,shift ]
shift ARn 左移0-15位间接寻址 其中: ind 间接寻址符号,有七种 选择:
* ,*+,*-,*0+,*0*BR0+ *BR0-

左移0-15位 n为数值0-7,ARn指定 下次的辅助寄存器。

例: ADD *+, 2, AR0

三、指令句法描述
C2000指令有6种典型的格式 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 dma[,shift] dma, 16 ind [,shift [,ARn]] ind [,16[,ARn]] #k #lk[,shift ]
16 ARn 例: 左移16位间接寻址 其中: ind 间接寻址符号,有七种 选择:
* ,*+,*-,*0+,*0*BR0+ *BR0-

左移16位 n为数值0-7,ARn指定 下次的辅助寄存器。 ADD *-, 16, AR1

三、指令句法描述
C2000指令有6种典型的格式 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 dma[,shift] dma, 16 ind [,shift [,ARn]] ind [,16[,ARn]] #k #lk [,shift ]
短立即寻址 其中: k # 8,9,13位短立即数 立即寻址方式前缀 #8

例: ADD

三、指令句法描述
C2000指令有6种典型的格式 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 指令助记符 dma[,shift] dma, 16 ind [,shift [,ARn]] ind [,16[,ARn]] #k #lk [,shift ]
左移0-15位长立即寻址 其中: lk # shift 例: 16位长立即数 立即寻址方式前缀 左移0-15位 ADD #1111h, 2

注意:
指令助记符是指令中的关键字,表示本条指令的操作类 型,不能缺省。 以上7种格式基本包含了所有指令的类型,但不是所有 指令都具备这7种格式。 指令助记符与操作数之间要用空格分开,各操作数之间 要用“,”号分开,操作数可缺省。

例1:带移位加法ADD
ADD ADD ADD ADD ADD ADD dma[,shift] dma, 16 ind [,shift [,ARn]] ind [,16[,ARn]] #k #lk [,shift ]

例2:带进位加法ADDC
ADDC ADDC dma ind [,ARn]

四、指令集
指令说明的信息 句法 功能 操作数 执行过程与结果 受影响的状态位 该指令所占的字数 执行该指令所需的周期数(时间) 指令举例


推荐相关:

DSP指令解释_计算机软件及应用_IT/计算机_专业资料。DSP指令解释1...第三章 DSP指令系统 165页 1下载券 DSP解释 暂无评价 1页 免费 DSP指令 ...


DSP指令系统_计算机软件及应用_IT/计算机_专业资料。TI 公司三大系列 DSP 的...第三章 DSP指令系统 165页 1下载券 第5章 dsp指令系统 17页 免费 DSP指令...


DSP指令 33页 1财富值 DSP指令一览表 8页 免费 DSP 第五章指令 34页 1财富值 DSP的指令系统 63页 1财富值 dsp指令 10页 免费 DSP指令系统 17页 2财富值...


访问堆栈的指令有四条:PSHD,PSHM,POPD,POPM DSP 指令实例: 指令实例: DSP ...DSP的指令系统 63页 1下载券 DSP指令 56页 免费 DSP 第五章指令 34页 1下载...


大部分 DSP 芯片可在一个指令周 期内完成 MAC 操作; (7) FFT 执行时间:...第五章 1.C55x 的片内外设可以分为哪几类?这些片上外设可以通过什么工具完成...


减法指令 (1)SUB uns(*AR1),BORROW,AC0,AC1;讲CARRY位取反,ACO减去AR1...第5章 dsp指令系统 17页 免费 DSP课件NO.7 指令系统 17页 免费喜欢...


DSP原理A卷_电子/电路_工程科技_专业资料。一、填空题 1.在数字信号处理器...4、指令ADD A, B 指令MPY *AR3+, A 五、程序题用 MEMORY 伪指令编写连接...


北邮dsp第五章附加题答案_工学_高等教育_教育专区。第五章附加题答案 ,北邮的,从老师那下的 希望有帮助第五章 FIR 滤波器的设计附加题 1. 一 FIR 数字滤波...


dsp汇编指令_IT/计算机_专业资料。dsp中的汇编伪指令指令分类伪指令及其表示格式具体描述段定义伪指令 .asect “段名” , 地址汇编到一以绝对地址为起始的段中...


习题一 1.简述 DSP 芯片的主要特点 DSP 的主要特点有哈佛结构、多总线结构、指令系统的流水线操作、专用的硬件乘法器、特殊的 DSP 指令、快速的指令周期、硬件...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com