DSP56800指令集与汇编语言
- 格式:ppt
- 大小:132.00 KB
- 文档页数:28
实验二 DSP汇编语言编程基础一、 实验目的1、了解DSP的寻址方式;2、了解DSP的汇编语言与C语言混合编程。
二、 实验器材1、安装有CCS的PC机一台;三、 实验内容1、建立一个工程;2、用汇编语言编程实现一个可被C程序调用的例程。
四、 实验步骤1、汇编语言和C语言混合编程:(1) 运行CCS,建立一个工程,取名exp2a,并保存到c:\ti\myprojects\xxx\Experiment2\目录下。
(2) 编辑如下C文件,取名exp2a.c并保存到c:\ti\myprojects\xxx\Experiment2\exp2a\目录。
/* Assembly routine */extern int sum(int *);/* define x[] as global array */int x[2]={0x1234,0x4321};/* define result s as global variable */int s;void main(){s = sum (x); /* return sum product */}(3) 编辑如下汇编文件,取名exp2_sum.asm并保存到c:\ti\myprojects\xxx\Experiment2\exp2a\目录。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * ** exp2_sum.asm SUM subroutine* called by exp2a.c* Input: Array pointer* Output: Return sum result in T0* * * * * * * * * * * * * * * * * * * * * * * * * * * * *.global _sum_summov *AR0+,AC0 ; AC0 = x[1]add *AR0+,AC0 ; AC0 = x[1]+x[2]mov AC0,T0ret ; Return T0.end(4) 编辑如下链接命令文件,取名link.cmd并保存到c:\ti\myprojects\xxx\Experiment2\exp2a\目录。
汇编指令集本节根据指令的功能来分,提供六张表来说明指令集的概况:累加器、算数和逻辑指令(表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。
附录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—使汇编语言文件中大小没有区别。
汇编指令集本节根据指令的功能来分,提供六张表来说明指令集的概况:累加器、算数和逻辑指令(表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应用程序中C代码和汇编代码的结合◆ CEVA公司高级编译器项目经理Eran Balaish随着DSP处理器的功能日益强大,加上编译器的优化技术不断提高,以往只利用汇编语言编写DSP应用程序的普遍做法已逐渐被淘汰。
今天,几乎所有的DSP应用程序都是由C代码和汇编代码共同构成。
对于性能是核心的关键性功能,DSP工程师继续使用高度优化的汇编代码,而其它功能则采用C语言编写,以便于维护和移植。
C代码和汇编代码的结合需要DSP工程师在工具箱中备有专用工具和方法。
众所周知,汇编代码编程的性能更好,而C代码编程的优势在于编写更为方便、快捷。
为了解释清楚原因,让我们仔细对比一下汇编代码和C代码编程的优缺点。
汇编代码编程的优势● 汇编代码能够利用处理器独有的指令和各种专用硬件资源。
另一方面,C代码则是通用性的,必须支持不同的硬件平台,因此,对C代码来说,支持专用平台代码十分困难。
● 汇编代码的编程人员通常对应用非常熟悉,并可能做出编译器难以企及的设想。
● 汇编代码编程人员可以发挥人们的创造力;而编译器再先进也只是一个自动程序而已。
汇编代码编程的缺点:● 汇编代码编程人员不得不处理耗时的机器级问题,比如寄存器分配和指令调度。
而对C代码,这些问题都可交给编译器去做。
● 汇编代码编程需要拥有关于DSP架构及其指令集的专业知识,而C编码只需要掌握广为流行的C语言即可。
● 采用汇编代码,平台之间的应用移植极其困难和耗时。
而C应用程序的移植要简单得多。
图1显示了如何利用专用硬件机制来高度优化汇编代码。
左边的C代码实现方案利用模数运算创建了循环缓冲器。
右边的是高度优化的汇编代码,利用CEVA-TeakLite-III DSP核的模数机制来创建相同的缓冲器。
只要缓冲器指针(这里是r0)更新,该模数机制就自动执行模数算法。
这种运算和指针更新发生在同一个周期内,故汇编代码比C代码有效得多,其可为模数运算产生单独的指令。
在DSP应用中选择适当的C和汇编代码混合问题在于C 代码和汇编代码之间的界限究竟在哪里,答案由分析器提供的性能分析给出。
DSP 控制器汇编语言程序设计摘要:在当今的数字化时代背景下,DSP 控制器在数字信号处理中起着重要的作用。
本论文概括介绍了TMS320C6XDSP 的硬件结构,并对TMS320C6XDSP 的汇编语言指令系统做了重点说明。
在具备以上知识的基础上,详细介绍了基于DSP 的高速数据采集和IIR 数字滤波器在DSP 上的实现,通过这两个应用实例了解DSP 汇编语言程序开发的方法。
关键字: TMS320C6X DSP 汇编语言 IIR数字滤波器高速数据采集Abstract :In digitized time ,DSP plays an important role in the digital signal processing. This paper summarily describes the hardware structure of theTMS320C6XDSP,and It introduced in detail the assembly language introductions.On the basis of having all above knowledge, a high speed data acquisition system based on DSP and using DSP to IIR Digital filter design was introduced,in order to understand the DSP assembly language program development method.Keyword: TMS320C6X DSP the assembly language IIR Digital filter designa high speed data acquisition system前言数字信号处理是一种将现实世界中的连续信号转换为计算机能够处理的信息的过程。