编写一个以c语言或汇编为基础的DSP程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广州大学学生实验报告
班级光信121 姓名学号指导老师
实验课程名称数字信号处理实验Ⅰ成绩
实验项目名称编写一个以c语言或汇编为基础的DSP程序
一、实验目的
二、使用仪器、材料
三、实验原理
四、实验步骤
五、实验过程原始记录(数据、图案、计算等)
六、实验结果及分析
一. 实验目的
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 CONFIGURA TION”标明了程序占用DARAM 的使用情况,共占用25H 个存储单元。比较一下,这比用C 编制的程序占用的要小得多。
-观察map 文件中的“SECTION ALLOCATION MAP”段,可以看出TASM.obj 的入口地址为100H,这也是程序的入口地址。
-用户定义的变量从120H 开始,共占用了3 个单元(Word)。
9.退出CCS
五、实验数据记录