DSP指令一览表
- 格式:doc
- 大小:431.00 KB
- 文档页数:8
汇编指令集本节根据指令的功能来分,提供六张表来说明指令集的概况:累加器、算数和逻辑指令(表2);辅助寄存器和数据页指针指令(表3);TREG、PREG和乘法指令(表4);转移指令(表5);控制指令(表6);I/O和存储器操作(表7)。
在每张表中,指令按字母顺序排列。
执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。
编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。
由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。
为了参照起见,我们先定义这六张概述表的符号意义:ACC 累加器。
ARBITXCM 辅助寄存器。
4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。
2位数值,CMPR指令执行CM值所声明的比较:若CM=00,测试当前AR=AR0否;若CM=01,测试当前AR<AR0否;若CM=10,测试当前AR>AR0否;若CM=11,测试当前AR≠AR0否。
ShiftTP 4位右移量。
用于条件执行指令的2位数值,代表如下4种条件:若BIO引脚为低,TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=11。
ARX 用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。
52表2 累加器、算数和逻辑指令 ABS周期|(ACC)|→ACC 1(ACC)+(数据存储器地址)×12shift→ACC(ACC)+(数据存储器地址)×216→ACC 1(ACC)+k→ACC 1shift(ACC)+lk×2→ACC 2指令功能(ACC)+(数据存储器地址)+(C)→ACC寻址方式直接/间接直接/间接短立即数长立即数指令说明ACC取绝对值移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。
DSP指令一览表附录6 TMS320C54x 指令系统一览表按指令功能排列
一、算术运算指令
1. 加法指令
2. 减法指令
3. 乘法指令
4. 乘法累加/减指令
5. 双精度32位操作数指令
6. 专用指令
二、逻辑运算指令
1. 与逻辑运算指令
2. 或逻辑运算指令
3. 异或逻辑运算指令
4. 移位指令
5. 测试指令
三、程序控制指令
1. 分支转换指令
2. 调用指令
注:条件“真”,§条件“假”,※延迟指令;
3. 中断指令
4. 返回指令
注:条件“真”,§条件“假”,※延迟指令;
5. 重复指令
注:条件“真”,§条件“假”,※延迟指令;
6. 堆栈管理指令
7. 其他程序控制指令
注:条件“真”,§条件“假”,※延迟指令;
四、加载和存储指令
1. 加载指令
2. 存储指令
3. 条件存储指令
4. 并行加载和存储指令
5. 并行加载和乘法指令
6. 并行存储和加 / 减法指令
7. 并行存储和乘法指令
8. 其他加载和存储指令。
DSP汇编指令引言DSP是指数字信号处理器,是一种专门用于数字信号处理的微处理器。
DSP汇编指令是在DSP芯片上执行操作的命令。
这篇文档将常见的DSP汇编指令及其使用方法。
通用指令MOVMOV是Move的缩写,指将数据从一个寄存器移动到另一个寄存器或内存地址中。
它有很多不同的格式,例如:MOV R1, #0 ; 将0存储在R1寄存器中MOV R2, R1 ; 将R1寄存器中的值复制到R2寄存器中MOV @R3, R2 ; 将R2寄存器中的值存储在R3指向的内存地址中ADD和SUBADD和SUB分别表示加法和减法运算。
它们也有不同的格式,例如:ADD R1, R2 ; 将R2寄存器中的值加到R1寄存器中ADD R1, #2 ; 将2加到R1寄存器中SUB R1, R2 ; 将R2寄存器中的值从R1寄存器中减去AND和ORAND和OR分别表示按位与和按位或运算。
它们也有不同的格式,例如:AND R1, R2 ; 将R1寄存器和R2寄存器中的值按位与后存储在R1寄存器中OR R1, R2 ; 将R1寄存器和R2寄存器中的值按位或后存储在R1寄存器中CMPCMP是Compare的缩写,用于比较两个值。
它会将两个操作数相减,并设置相关的标志位。
它的格式如下:CMP R1, R2 ; 比较R1和R2寄存器中的值跳转指令JMPJMP是Jump的缩写,用于无条件跳转到目标地址。
它的格式如下:JMP label ; 跳转到标签为label的位置JNZ和JZJNZ和JZ分别表示如果结果不为零则跳转和如果结果为零则跳转。
它们的格式如下:JNZ label ; 如果前一条CMP指令比较结果不为零,则跳转到标签为label的位置JZ label ; 如果前一条CMP指令比较结果为零,则跳转到标签为label的位置JGE和JLEJGE和JLE分别表示如果大于或等于则跳转和如果小于或等于则跳转。
它们的格式如下:JGE label ; 如果前一条CMP指令比较结果大于或等于,则跳转到标签为label的位置JLE label ; 如果前一条CMP指令比较结果小于或等于,则跳转到标签为label的位置循环指令DJNZDJNZ是Decrement and Jump if Not Zero的缩写,表示如果操作数不为零则减1并跳转到目标地址。
word格式-可编辑-感谢下载支持1.STM #8765,*AR7+ 把立即数8765存放到AR7所指定的数据存储单元中去2.MPY #-2,A 立即数-2与T寄存器中的值相乘,并将乘积装入累加器A中3.MVPD TABLE,*AR1+把中TABLE标注的程序存储器单元地址中的一个字复制到由AR4所指定的数据存储单元中去。
4.BC new,AOV 若累加器A溢出,则跳转至new5.BC new,AGT 若累加器A中的值大于0,则跳转至new6.STL A,*AR1+ 把累加器A低端存放到AR1所指定的数据存储单元中7.PRTZ A,#4 对A清零并设置重复执行下条指令5次8.ADD *AR4,16,B,A将AR4所指定的数据存储单元中的值左移16后的值与累加器B中的值相加,并把结果装入累加器A中9.SUB *AR3+,14,A 累加器A中的值减去AR3所指定的数据存储单元中的数左移14位后的值,并将结果装入累加器A中。
即:从累加器A中减去AR3所指定的数据存储单元中的数左移14位后的值的值。
10.MAC #345H,A,B将T寄存器中的值与立即数345的乘积加上累加器A中的值所得到的和装入累加器B中。
11.STA, *AR4-(ASM=0)将累加器A中的值存储到AR4所指向的数据存储单元中。
12.MAC *AR3+,*AR4+,A,BAR3所指定数据存储单元中的值与AR4所指定数据存储单元中的值相乘,将乘积与累加器A中的值相加所得到的和装入累加器B中13.SUB #12345,8,A,B把累加器A中的值与立即数12345左移8位后的值相减所得到的差装入累加器B14.RPT #99NOP重复执行NOP指令100次15.MVDD *AR3+,*AR5+将AR3所指定的数据存储单元中的值传送到AR5指定的数据存储单元中。
16.CALA A 用累加器A的滴16位加载PC17.ST T,*AR7- T寄存器高端移位后存储到AR7所指定的数据存储单元中。
DSP指令大全(最全)附录6 TMS320C54x 指令系统一览表(按指令功能排列) 一、算术运算指令二、逻辑运算指令三、程序控制指令6.注:?条件―真‖,§条件―假‖,※延迟指令。
四、加载和存储指令4.6.7.五.伪指令2.初始化常数(数据和存储器)的伪指令3.调整段程序计数器伪指令(SPC).align 把SPC调整到页边界.even 把SPC调整到偶数字边界4.控制输出列表格式化伪指令5.条件汇编伪指令.break [well-defined expression] 如果条件真结束.loop汇编,.break结构是可选项.else 如果.if条件为假,汇编代码块.else结构是可选项.elseif well-defined expression——如果if条件为假且.elseif 条件为真,汇编代码块.else结构是可选项.endif 结束.if代码块.endloop 结束.1oop代码块.if well-defined expression 如果条件为真则汇编代码块.loop [well-defined expression] 开始代码块的重复汇编6. 汇编符号.asg [”] character string [”],substitution symbol——把字符串赋予替代的符号..endstruct 结束结构定义.equ 使值和符号相等.eval well-defined expression,substitution symbol 根据数字替代符号完成运算.newblock 取消局部标号.set 使数值和符号相等.struct 开始结构定义.tag 把结构属性赋予标号7.宏指令宏定义:Macname .macro[参数1],[…],[参数n]宏调用:[标号][:] macname [参数1],[…],[参数n]8.编译软件指令①汇编器:asm500.exeasm500[input file[object file [listing file] [-options]]-c—使汇编语言文件中大小没有区别。
C2 的指令集C2xx DSP中共有汇编语言指令88条,分成6类:①累加器、算术和逻辑指令26条如:ADD、LACC、AND②辅助寄存器和数据页面指针指令7条如:MAR、LAR等③TREG、PREG和乘法指令20条如:LT、MTY、PAC等④分支、调用指令12条如:B、BCND、INTR等⑤控制指令15条如:SPM、POP、BIT等⑥存储器和I/O操作指令8条如:BLDD、SPLK、TBLR等注:有些指令助记符是增强性指令,对应于几条简单指令(机器码),如:ADD可完成ADD,ADDH,ADDK和ADLK等功能,这样做可使程序更简洁并易读。
1.指令格式(即语法)不带进位加法指令格式:ADD dma [,shift] ;直接寻址ADD dma,16 ;16位左移直接寻址ADD ind [,shift [,ARn ] ] ;间接寻址ADD ind ,16[,ARn ] ;16位左移的间接寻址ADD#k ;短立即寻址ADD#lk [,shift ] ;长立即寻址2.操作数dma ;直接寻址时,数据存储器地址低7位shift: ;左移值从 0 到 15 (默认值为 0)n ;指示下一个辅助寄存器 n= 0~ 7k: ;8位短立即数值lk: ;16位短立即数值ind ;选择下列7种间接寻址方式中的一种* *+ *- *0+ *0- *BR0+ *BR0-3.操作码4.执行(1) (Smem)+(src)→src(2) (Smem)<<(TS)+(src)→src(3) (Smem)<<16+(src)→dst(4) (Smem)[ <<SHIFT]+(src)→dst(5) (Xmem) <<SHIFT+(src)→src(6)( (Xmem)+ (Ymem)) <<16→dst(7) lk<<SHFT+(src)→dst(8) lk<<16+(src)→dst(9) (src or[dst])+(src)<<SHIFT→dst(10) (src or[dst])+(src)<<ASM→dst5.状态位指令执行受SXM和OVM的影响,指令执行结果影响C和OV6.说明把一个16位的数加到选定的累加器中,或一个采用双数据存储器操作数寻址的操作数Xmen。