1,编写一个以c语言为基础的dsp程序,编写一个以c语言或汇编为基础的DSP程序.doc...

广州大学学生实验报告

开课学院及实验室:物理与电子工程学院 2015年3月22日

班级

光信121

姓名

学号

指导老师

实验课程名称

数字信号处理实验Ⅰ

成绩

实验项目名称

编写一个以c语言或汇编为基础的DSP程序

1、 实验目的

2、 使用仪器、材料

3、 实验原理

4、 实验步骤

5、 实验过程原始记录(数据、图案、计算等)

6、 实验结果及分析

一. 实验目的

1.学习用汇编语言编制程序;了解汇编语言程序与 C 语言程序的区别和在设置上的不同。

2.了解 TMS320C55x 汇编语言程序结果和一些简单的汇编语句用法。

3.学习在 CCS 环境中调试汇编代码

二. 实验设备

PC 兼容机一台,操作系统为 Windows2000(或 Windows98,WindowsXP,以下默认为

Windows2000),安装 Code Composer Studio 2.2 软件。

三. 实验原理

1.汇编语言程序:

汇编语言程序除了程序中必须使用汇编语句之外,其编译选项的设置与 C 语言编制的程序

也稍有不同。其区别为:

⑴汇编语言程序在执行时直接从用户指定入口开始,常见的入口标号为“start” ,而 C 语言程序在执行时,先要调用 C 标准库中的初始化程序(入口标号为“_c_init00”),完成设置之后,才转入用户的主程序 main()运行。

⑵由于 CCS 的代码链接器默认支持 C 语言,在编制汇编语言程序时,需要设置链接参数,

选择非自动初始化,注明汇编程序的入口地址。

2.程序设计要求:

程序框图:

四.实验步骤

1.实验准备:

设置软件仿真模式,参看:第三部分、四、1。

2. 建立新的工程文件:(1)启动 Code Composer Studio 2.21。

⑵进行以下设置:建立 TASM.pjt。

3. 设置工程文件:

4.编辑输入源程序:

⑴汇编语言程序:

-先新建源程序窗口:

输入源程序:

.mmregs sect “.text”

.model call=c55_std .align 4

.model mem=large .global start

.global x .sym start,start, 36, 2, 0

.bss x,1,0,0 start:

.sym x,x, 4, 2, 16 MOV #2, *(#y)

.global y MOV #1, *(#x)

.bss y,1,0,0 L1:

.sym y,y, 4, 2, 16 MOV *(#y), AR1

.global z ADD *(#x), AR1, AR1

.sym z,z, 4, 2, 16 MOV AR1, *(#z)

B L1

C语言

main()

{

int x,y,z;

x=1; y=2;

while ( 1 )

{

z=x+y;

} }

注意: 在输入汇编语言源程序时, 除了标号以外的程序行必须以一个空格或退格字符开始。

-保存源程序为 TASM.asm。

⑵连接命令文件:如同第⑴步操作,建立空的源程序窗口。

-输入连接命令文件内容:

MEMORY

{

DARAM: o=0x100, l=0x7f00

DARAM2: o=0x8000, l=0x8000

}

SECTIONS

{

.text: {} > DARAM

.bss: {} > DARAM

.stack :{} > DARAM

}

注意:第 3、4 行中等号前边字母是小写的“L” 。

-将文件存为 C:\ICETEK-VC5509-EDULab\Lab0103-ASM\TASM.cmd

⑶将上述编译的源程序加入工程 TASM.pjt,具体操作可请参考实验一、四、4、⑵。

5.编译源文件、下载可执行程序:

⑴选择菜单 Project->Rebuild All。

⑵执行 File?Load Program,在随后打开的对话框中选择刚刚建立的 C:\ICETEK-

VC5509-EDULab\Lab0103-TASM\debug\TASM.out 文件。完成后,系统自动打开 TASM.asm

源程序窗口,并在其中指示程序的入口地址为标号“start”后的语句。

6.打开观察窗口:

⑴选择菜单 View->Disassembly。注意程序运行指针停留的位置。

⑵开启 CPU 寄存器观察窗口:单击菜单 View->Registers->CPU Registers。请看 PC 指针取值与当前程序运行地址对应。

⑶将变量 x、y、z 分别加入观察窗口:

在源程序中双击变量名,再单击鼠标右键,选择“Add to Watch Window” 。这时,这 3 个变量还未作初始化。

⑷开启内存观察窗口:

选择“View”菜单中“Memory…”项,在“Memroy Window Options”窗口中的“Adress”

项中输入&x,单击“OK”完成设置; “Memory”窗口中 x 的当前取值显示在第 1 个地址的后。而且 y 和 z 的存储单元跟在其后。

7.观察程序运行结果:

⑴单步运行 2 次,在观察窗中观察到变量 x、y 被赋值。变化的值被显示成红色。同时在

“Memory”窗口中也能观察到 x 和 y 值的改变。

⑵单步运行,观察 CPU 寄存器窗口中“XAR1”寄存器存储值的变化。程序利用 XAR1 进

行运算。

⑶再单步运行,可观察到 z 的值被计算出来。双击“Memory”窗口中变量 x、y 相应的存储单元,将其修改成其他取值,单步运行后观察结果。

8.对照观察 map 文件和 cmd 文件的内容:

⑴选择菜单 File->Open…,将找到 C:\ICETEK-VC5509-EDULab\Lab0103-ASM\Debug 目录,将文件类型改为“Memory Map Files” ,选择 TASM.map 文件、打开。

⑵打开 TASM.cmd 文件。

⑶程序的入口地址:map 文件中“ENTRY POINT SYMBOL”中说明了程序入口地址(start)。

⑷内存使用情况:

-map 文件中“MEMORY CONFIGURATION”标明了程序占用 DARAM 的使用情况,共

占用 25H 个存储单元。比较一下,这比用 C 编制的程序占用的要小得多。

-观察 map 文件中的“SECTION ALLOCATION MAP”段,可以看出 TASM.obj 的入口地

址为 100H,这也是程序的入口地址。

-用户定义的变量从 120H 开始,共占用了 3 个单元(Word)。

9.退出 CCS

5、 实验数据记录

6、 数据结果及分析

图1 图2

数据分析

图1中,可以从“MEMORY CONFIGURATION”中可以看到used为000025H,程序占用了DARAM的25H个存储单位。这比起C语言占用的单位少很多。从“SECTION ALLOCATION”中,看到TASM.obj地址为0000100H,。而我们定义的变量的地址从120H,总共占用了3个单位。

图2是修改程序后,对0f000h+0e000h的相加运算,结果是0x1D00.

总结

经过这次的实验课程,我学会了和更熟悉了以C语言或为汇编为基础的DSP程序的运用,只要多加练习便可容易操作,但还是要注意一步一步的来,不可图快。

展开阅读全文

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值