DSP汇编语言程序设计

上传人:豆浆 文档编号:48657319 上传时间:2018-07-19 格式:PPT 页数:187 大小:1.56MB
返回 下载 相关 举报
DSP汇编语言程序设计_第1页
第1页 / 共187页
DSP汇编语言程序设计_第2页
第2页 / 共187页
DSP汇编语言程序设计_第3页
第3页 / 共187页
DSP汇编语言程序设计_第4页
第4页 / 共187页
DSP汇编语言程序设计_第5页
第5页 / 共187页
点击查看更多>>
资源描述

《DSP汇编语言程序设计》由会员分享,可在线阅读,更多相关《DSP汇编语言程序设计(187页珍藏版)》请在金锄头文库上搜索。

1、第4章 DSP汇编语言程序设计 4.1 TMS320C54x汇编语言的基本概念 4.2 TMS320C54x汇编语言程序设计的基本方法 4.3 TMS320C54x汇编语言程序的编辑、汇编与链接过程 4.4 汇编器 4.5 链接器 4.6 汇编程序举例 1汇编语言源程序的句法格式 要点以.asm为扩为扩 展名 每一行由4个部分组组成 格式 标号: 空格 助记符 空格 操作数 空格 ;注释 中的 内容为可 选择部分 供本程序的其它部分或其它程序调 用。标号是任选项,标号后面可以 加也可以不加冒号“:”。 4.1 TMS320C54x汇编语言的基本概念要 点1.标号必须从第列写起,2.标号最多可达

2、32个字符,可以是AZ,az,0 9,_,以及$,但标号的第1个字符不能是数字。3.引用标号时,标号的大小写必须一致。4.标号的值就是段程序计数器SPC的值。5.如果不用标号,则第一个字母必须为空格、分号或星号(*)。 要点建议 标号: 空格 助记符 空格 操作数 空格 ;注释 可以是助记符指令、汇编指令、宏 指令和宏调用命令。1.助记记符指令,一般用大写; 2.汇编汇编 命令和宏命令,以句号 “.” 开始,且为为通常用小写。 要点标号: 空格 助记符 空格 操作数 空格 ;注释 1.指令中的操作数或汇 编命令中定义的内容 2.操作数之间必须用逗 号“,”分开。 1.从分号“;”开始 2.可以

3、放在指令或汇编命令后面, 也可以放在单独的一行或数行。要点2汇编语言源程序的数据型式 二进制:如1110001b或1111001B; 八进制:226q或572Q; 十进制:1234或+1234或-1234(缺省型) 十六进制:0A40h或0A40H或0xA40 浮点数:1.623e-23(仅C语言程序中能用,汇编程序不能用) 字符:D,每位字符由8位ASCII码表示; 字符串:“this is a string”符号用作标号、常数和替代符号。符号名可以是长达200个字符的字母(AZ,az)、数字(09)加上$或下划线(_)。第一个字符不能是数字,符号中间不能有空格。符号分大小写,例如:Abc。

4、 3汇编语言源程序的符号4表达式1) 运算顺序影响表达式运算顺序的三个主要因素是:圆括号、优先级和同级运算顺序。圆括号内的表达式最先运算,不能用 或 来代替( )。TMS320C54x汇编器的优先级使用与C语言类似,优先级高的运算先执行。 表4-1给出了表达式中可用的运算符及优先级。 表4-1 表达式的运算符及优先级 符 号操 作计算顺序+、取正、取负、按位求补从右到左*、/、%乘、除、求模从左到右左移、右移从左到右+、加、减从左到右、小于、小于等于、大于、大于等于从左到右!=、=不等于、等于从左到右说明宏功能 6 7 add3 .macro p1,p2,p3,ADDRP ;定义宏 8 9 L

5、D p1,A ;将参数1赋给A 10 ADD p2,A ;将参数2与A相加 11 ADD p3,A ;将参数3与A相加 12 STL A,ADDRP ;将结果A的低字存参数4 13 .endm ;结束宏 14 15 16 .global abc,def,ghi,adr ;定义全局符号 17 18 000000 add3 abc,def,ghi,adr ;调用宏 1 1 000000 1000! LD abc,A ;宏展开 1 000001 0000! ADD def,A 1 000002 0000! ADD ghi,A 1 000003 8000! STL A,adr例4-2 宏定义、宏调用和

6、宏展开的一个例子。4.2 TMS320C54x汇编语言程序设计的 基本方法 DSP的软件开发一般有以下几种方式:(1) 直接编写汇编语言源程序;(2) 编写C语言程序;(3) 混合编程(既有C代码,又含汇编代码)。4.2.1 TMS320C54x汇编语言源程序的完整结构 汇编语言源程序中,以 .asm为程序的扩展名,程序员用“段”伪指令来组织程序的结构。程序一般由数据段、堆栈段和代码段组成。.data用于存放有初值的数据块;.usect用于为堆栈保留一块存储空间;.text用于设置代码段。另外,.bss用于为变量保留一块存储空间;.sect常用于定义中断向量表。程序的基本结构有四种:顺序结构、

7、分支结构、循环结构和子程序结构。4.2.2 顺序结构程序顺序结构是最基本、最简单的程序结构形式,程序中的语句或结构被连续执行。【例1】 试编制程序,求出下列公式中z的值。z=(x+y)8-w源程序编制如下:* ex41.asm z=(x+y)*8-w *.title “ex41.asm“.mmregsSTACK .usect“STACK“,10H ; 开辟堆栈空间.bss x ,1 ; 为变量分配4个字的空间.bss y ,1 .bss w ,1.bss z ,1.def start.data table: .word 6,7,9 .text start: STM #0 ,SWWSR ; 零等

8、待状态STM #STACK+10H,SP ; 设置堆栈指针STM #x,AR1 ; AR1指向xRPT # 2 ; 从程序存储器传送3个值至数据存储器MVPD table,*AR1+ LD x,A ADD y,A ; A=x+yLD A,3 ; A=(x+y)*8SUB w,A ; A=(x+y)*8-wSTL A,zend: B end.end采用顺序结构编程时应注意: 合理选取算法; 采用合适的寻址方式进行指令选取; 存储数据及结果时注意内存空间的分配和寄存器的使用。4.2.3 分支结构程序程序的分支主要是靠条件转移指令来实现的。TMS320C54x具有丰富的程序控制与转移指令,利用这些指

9、令可以执行分支转移、循环控制以及子程序操作 。分支转移指令(如B、BACC、BC等)通过改写PC,以改变程序的流向。分支结构也称条件结构。【例2】 试编制程序,求一个数的绝对值,并送回原处。源程序编制如下:* ex42.asm ABS of positive or negative *.title “ex42.asm“.mmregsSTACK .usect “STACK“,10H ; 开辟堆栈空间.bss x,1 ; 为变量分配一个字的空间.def start.data table: .word -7 .text start: STM #0,SWWSR ; 零等待状态STM #STACK+10

10、H,SP ; 设置堆栈指针STM #x,AR1MVPD table,*AR1LD *AR1,ABC end,AGT ; 若A0,则转至end,否则往下执行ABS ASTL A,xend: B end.end 采用分支结构编程时应注意: 正确选择条件运算符; 正确选择相应指令; 每个分支中要有完整的终结点; 对于多分支程序,要检查每个程序正确与否。4.2.4 循环结构程序循环结构程序设计主要用于某些需要重复进行的操作,它简化程序,节约内存。循环结构程序的设计可分为设置循环初始状态、循环体和循环控制条件三部分。 循环初始状态主要是指设置循环次数的计 数初值,以及其他为能使循环体正常工作而设 置的初

11、始状态等(比如缓冲区首地址)。 循环体是循环操作(重复执行)部分,包括 循环的工作部分及修改部分。循环的工作部分 是实现程序功能的主要程序段;循环的修改部 分是指当程序循环执行时,对一些参数(如地址 、变量)的有规律的修正。 循环控制部分是循环程序设计的关键。 每个循环程序必须选择一个控制循环程序运行 和结束的条件。 【例3】 试编制程序,在4项乘积aixi(i=1,2,3,4)中找出最大值,并存放在累加器A中。源程序编制如下:.title “ex43.asm“.mmregsSTACK .usect “STACK“,10H .bss a,4 .bss x,4 .def start.data table: .word 1,2,3,4 .word 8,6,9,7.text start: STM #0,SWWSR STM #STACK+10H,SP STM #a,AR1 RPT #7 MVPD table,*AR1+ STM #a,AR1 STM #x,AR2STM #2,AR3 LD *AR1+,TMPY *AR2+,A;第一个乘积在累加器A中loop1: LD *AR1+,TMPY *AR2+,B;其他乘积在累加器B中MAX A;累加器A和B比较,选大的存在A中BANZ loop1,*AR3- ;此循环中共进行3次乘法和比较end: B end .e

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号