DSP 技术及应用 教学课件 ppt 作者 陈金鹰 主编 4

上传人:E**** 文档编号:89190448 上传时间:2019-05-21 格式:PPT 页数:67 大小:925.50KB
返回 下载 相关 举报
DSP 技术及应用 教学课件 ppt 作者 陈金鹰 主编 4_第1页
第1页 / 共67页
DSP 技术及应用 教学课件 ppt 作者 陈金鹰 主编 4_第2页
第2页 / 共67页
DSP 技术及应用 教学课件 ppt 作者 陈金鹰 主编 4_第3页
第3页 / 共67页
DSP 技术及应用 教学课件 ppt 作者 陈金鹰 主编 4_第4页
第4页 / 共67页
DSP 技术及应用 教学课件 ppt 作者 陈金鹰 主编 4_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《DSP 技术及应用 教学课件 ppt 作者 陈金鹰 主编 4》由会员分享,可在线阅读,更多相关《DSP 技术及应用 教学课件 ppt 作者 陈金鹰 主编 4(67页珍藏版)》请在金锄头文库上搜索。

1、1,信息工程学通信工程系,DSP技术及应用,Digital Signal Processor 数字信号处理器,陈金鹰 副教授,2,第四章 DSP软件开发过程,第一节 汇编语言程序的编写方法 第二节 汇编语言程序的汇编 第三节 COFF的一般概念 第四节 目标文件的链接,3,软件开发过程,第一节 汇编语言程序的编写方法,4,汇编语言程序的编辑、汇编和链接过程,5,1汇编语言源程序的句法格式,要点,以.asm为扩展名 每一行由4个部分组成,格式,标号: 空格 助记符 空格 操作数 空格 ;注释, 中的内容为可选择部分,供本程序的其它部分或其它程序调用。标号是任选项,标号后面可以加也可以不加冒号“:

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

3、操作数之间必须用逗号“,”分开。,1.从分号“;”开始 2.可以放在指令或汇编命令后面, 也可以放在单独的一行或数行。,要点,9,2汇编语言源程序的数据型式,二进制:如1110001b或1111001B; 八进制:226q或572Q; 十进制:1234或+1234或-1234(缺省型) 十六进制:0A40h或0A40H或0xA40 浮点数:1.623e-23(仅C语言程序中能用,汇编程序不能用) 字符:D 字符串:“this is a string”,10,3汇编命令,汇编命令是用来为程序提供数据和控制汇编进程的。C54x汇编器共有64条汇编命令,根据它们的功能,可以将汇编命令分成8类: (1

4、)对各种段进行定义的命令。 (2)对常数(数据和存储器)进行初始化的命令。 (3)调整SPC(段寄存器)的指令。 (4)对输出列表文件格式化的命令。 (5)引用其它文件的命令。 (6)控制条件汇编的命令。 (7)在汇编时定义符号的命令。 (8)执行其它功能的命令。,11,例4-1 编写计算y=a1*x1+a2*x2+a3*x3+a4*x4的汇编源程序 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * * * * * * * * * *

5、 * * * * * * * * * * * * * * * * * * * * * * * .title “example.asm” ;为汇编源程序取名 .mmregs ;定义存储器映象寄存器 STACK .usect “STACK”,10h ;分配10个单元的堆栈空间 .bss a,4 ;为系数a分配4个单元的空间 .bss x,4 ;为变量x分配4个单元的空间 .bss y,1 ;为结果y 分配1个单元的空间 .def _c_int00 ;定义标号_c_int00 .data ;定义数据代码段 table: .word 1,2,3,4 ;在标号table开始的8个单元中 .word 8,

6、6,4,2 ;为这8个单元赋初值,12,.text ;定义文本代码段 _c_int00 :STM #0,SWWSR ;软件等待状态寄存器置0,不设等待 STM #STACK+10h,SP ;设置堆栈指针初值 STM #a,AR1 ;AR1 指向 a的地址 RPT #7 ;从程序存储器向数据存储器 MVPD table,*AR1+;重复传送 8个数据 CALL SUM ;调用 SUM 实现乘法累加和的子程序 end: B end ;循环等待 SUM:STM #a,AR3 ;将系数a的地址赋给AR3 STM #x,AR4 ;将变量x的地址赋给AR3 RPTZ A,#3 ;将A清0,并重复执行下条指

7、令4次 MAC *AR3+,*AR4+,A ;执行乘法并累加,结果放在A中 STL A,y ;将A的低字内容送结果单元y RET ;结束子程序 .end ;结束全部程序,13,4宏定义和宏调用,(1)两者都可以被多次调用,但是把子程序汇编成目标代码的过程只进行一次,而在用到宏指令的每个地方都要对宏指令中的语句逐条地进行汇编。 (2)在调用前,由于子程序不使用参数,故子程序所需要的寄存器等都必须事先设置好;而对于宏指令来说,由于可以使用参数,调用时只要直接代入参数就行了。 (3)宏指令可以在源程序的任何位置上定义,但必须在用到它之前先定义好。宏定义可以嵌套。,宏指令与子程序的异同,14,macn

8、ame .macroparameter 1,parameter n 助记符指令与宏指令 .mexit .endm,宏定义的格式,宏调用的格式,label:macname parameter1,parametern,15,1 * 2 3 * add3 4 * 5 * ADDRP=P1+P2+P3 ;说明宏功能 6 7 add3 .macro p1,p2,p3,ADDRP ;定义宏 8 9 LD 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

9、 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 宏定义、宏调用和宏展开的一个例子。,16,第二节 汇编语言程序的汇编,汇编语言源程序要素,汇编命令 助记符指令 宏命令,汇编程序(汇编器)功能,将源程序汇编成可重定位的目标文件(.obj文件); 如果需要,可以生成一个列表

10、文件(.lst文件); 将程序代码分段,每段的目标代码都有一个SPC管理; 定义和引用全局符号,可在列表后附加交叉引用表; 对条件程序块进行汇编; 支持宏功能,允许定义宏命令。,17,1运行汇编程序,axm500 input fileobject filelisting file-options,汇编器是名为asm500.exe的可执行程序,例如 axm500 cjy.asm -l -s -x 源程序cjy.asm经汇编后将生成一个cjy. obj目标文件、列表文件、符号表(在目标文件中)以及交叉引用表(在列表文件中)。,18,2列表文件,TMS320C54x COFF Assembler V

11、ersion 3.70 Tue Oct 19 12:42:59 2004 Copyright (c) 1996-2001 Texas Instruments Incorporated example.asm PAGE 1 1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * 3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5 .mmregs ;定义

12、存储器映象寄存器 6 000000 STACK .usect “STACK“,10h ;分配10个单元的堆栈空间 7 000000 .bss a,4 ;为系数a分配4个单元的空间 8 000004 .bss x,4 ;为变量x分配4个单元的空间 9 000008 .bss y,1 ;为结果y 分配1个单元的空间 10 .global _c_int00 ;定义标号,列表文件中包括源程序语句和目标代码,19,11 000000 .data ;定义数据代码段 12 000000 0001 table: .word 1,2,3,4 ;在标号table开始的8个单元中 000001 0002 00000

13、2 0003 000003 0004 13 000004 0008 .word 8,6,4,2 ;为这8个单元赋初值 000005 0006 000006 0004 000007 0002 14 000000 .text ;定义文本代码段 15 000000 7728 _c_int00 STM #0,SWWSR ;软件等待状态寄存器置0,不设等待 000001 0000 16 000002 7718 STM #STACK+10h,SP ;设置堆栈指针初值 000003 0010- 17 000004 7711 STM #a,AR1 ;AR1 指向 a的地址 000005 0000- 18 000006 EC07 RPT #7 ;从程序存储器向数据存储器 19 000007 7C91 MVPD table,*AR1+ ;重复传送 8个数据 000008 0000“,源文件的每一行都会在列表文件中生成一行。包括行号、段程序计数器SPC的数值、汇编后的目标代码、源程序语句。,一条指令可以生成1或2个字的目标代码。,第2字单独列一行,列出了SPC的数值和目标代码 。,20,20 000009 F074 CALL SUM ;调用 SUM 实现乘法累加和的子程序

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

当前位置:首页 > 高等教育 > 大学课件

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