DSP课后习题答案 下载本文

内容发布更新时间 : 2024/12/22 14:11:21星期一 下面是文章的全部内容请认真阅读。

(2)C语言程序代码优化有几种方法 答:算法优化 编译优化 函数优化 (3)利用C语言实现中断函数,有什么要求

答:(1)对由SP指向的字,编译器可能正在使用,因此必须加以保护(2)中断的屏蔽和使能必须由程序员设置 3)由于C语言编写中断时,需对所有寄存器进行保护4)中断程序没有参数传递(5)将一个程序与某个中断关联时,必须在相应的中断矢量处加跳转指令 第六章

(2)说明.text块 .data块和.bss块分别包含什么内容?

答:.text块:通常包含可执行代码(代码块。

.data块:通常包含初始化变量(数据块)。

.bss块:通常为未初始化的变量的保留空间(保留块。)

(3)链接命令文件包括哪些内容?

答:链接器提供两个命令完成上述功能:MEMORY和SECTIONS。MEMORY命令定义目标系统的存储器,程序员可以定

义每一块存储器,指定每一块的起始地址和长度。SECTIONS告诉链接器如何组合输入块以及在存储器何处存放输出快。若不用这两个命令,链接器会采用默认的分配算法。若要使用这两个命令,一般需要链接命令文件,扩展名为.cmd。因此程序员先根据系统要求编写一个链接命令文件,并把它添加到工程文件中。 第七章

(1)汇编语言格式包含哪几部分?编写汇编语言需要注意哪些问题? 答:汇编语言格式包括四部分:标号域,指令域,操作数域和注释域 注意事项:(1)语句必须以标号,空格,星号或分号开始。

(2)标号为可选项,若要使用标号,则必须从第一列开始。标号长度为32个字符, 字母,数字和$(数字不打头)组成。标号后必须跟冒号(:),但并不作为标号的一部分 (3)每个域必须要有一个或多个空格分隔开。

(4)注释是可选项,第一列可以用星号或分号,但其他列开始的注释前面只能表分号。

(5)指令域一定不能从第一列开始,否则将被视为标号

(6)操作数域内写操作数,若为立即数,需要用#开始,若要间接寻址,则要以*开始 (2)C54x的指令集包含了哪几种基本类型的操作?

答:C54x包含了四种基本类型的操作:算术指令,逻辑指令,程序控制指令,装载和存储指令 (3)C54x提供了哪些基本的数据寻址方式?

答:数据寻址:立即数寻址,绝对地址寻址,累加器寻址,直接寻址,间接寻址,存储区映射寄存器寻址,堆栈寻址 第八章

(1)为什么通常需要采用C语言和汇编语言的混合编程方法 答:原因:用C语言开发DSP程序不仅使DSP开发的速度大大加快,而且DSP程序的可读性和可移植性显著提高,程序修改也非常方便。但在某些情况下C代码的效率还是无法和手工编写的汇编代码的效率相比,如FFT程序。用C语言编写的中断程序虽然好读,但是其运行效率不高,当中断被反复调用时,就会大大的降低程序运行效率。所以为了解决上述问题,提出了C语言和汇编语言混合编程的方法。

(2)C语言和汇编语言的混合编程方法主要有哪几种?各有什么特点? 答:独立编写C语言和汇编语言

直接在C语言程序的相应位置嵌入汇编语言 对C语言进行编译,生成相应的汇编语言

(3)整型变量var和整型数组table[10]已经在汇编程序中定义为全局变量和全局数组,试说明如何在C程序中访问var变量和table数组并编写相应的TMS320C54x程序。 汇编语言:

.global _var;定义外部变量x .global _table;定义数组 .sect “table_1”;定义一个独立快 _table: ;数组起始地址 .float 0.00 .float 0.02

.float 0.03

.float 0.00 .float 0.02 .float 0.03

.float 0.00 .float 0.02 .float 0.03

.float 0.03 C 程序:

extern int var; //定义外部变量 var=1;//访问变量

float table[10];//定义外部数组 float *p=table;//定义指针