DSP基于CCS数据寻址方式实验.docx
《DSP基于CCS数据寻址方式实验.docx》由会员分享,可在线阅读,更多相关《DSP基于CCS数据寻址方式实验.docx(11页珍藏版)》请在冰豆网上搜索。
DSP基于CCS数据寻址方式实验
实验一CCS的用法
一、实验目的
1、了解TMS320C54X汇编语言程序的基本格式,以及汇编、链接的基本过程。
2、初步熟悉CCS的用法。
二、实验要求
1、了解CCS菜单命令及产生各个显示窗口的操作
2、操作各种仿真命令
·进入、退出CCS
·选择当前窗口、改变窗口大小
·加载程序
·运行程序(包括单步执行)
·检查修改CPU寄存器
·检查修改存储器单元内容
·用观察窗口检查变量、CPU寄存器或存储单元的内容
三、实验条件
1、硬件DSK板及软件开发平台工具CCS。
2、源程序清单lab1.asm,详见教材3。
2节。
3、链接命令文件lab1。
cmd,详见教材3。
2节.
四、实验内容
1、双击桌面上的CCS2(‘5000)图标,启动CCS集成开发环境。
2、创建一个新的工程:
在Project菜单中选择New项,并输入工程名如lab1,然后单击完成按钮创建新工程.
3、将文件添加入工程中:
从Project菜单中选取AddFilestoProject命令,在弹出的对话框中选择lab1。
asm文件并单击打开按钮;或者在工程lab1.pjt处单击右键,选择菜单命令AddFilestoProject。
采用类似方法将lab1.cmd文件添加入工程。
4、对工程进行汇编、编译、链接:
执行菜单命令Project→RebuildAll,或者在工具栏上单击RebuildAll图标.
5、加载程序:
执行菜单命令File→LoadProgram,在弹出的对话框中选择lab1。
out并单击打开按钮。
6、运行程序:
选择Debug中的Run运行程序或单击工具栏的Run图标、SingleStep图标运行程序。
五、试验程序
lab1:
************************************************
*lab1.asmy=a1*x1+a2*x2+a3*x3+a4*x4*
************************************************
。
title”lab1.asm”
.mmregs
STACK.usect"STACK",10h;申请16栈区空间
.bssx,4
;创建4个存储单元的x和a,一个存储单元的y
。
bssa,4
.bssy,1
。
defstart
.data
table:
.word1,2,3,4;装载数据
.word8,6,4,2
.text;代码段
start:
STM#0,SWWSR
STM#STACK+10h,SP;定义堆栈段
STM#table,AR1;AR1指向table
STM#x,AR2;AR2指向x
STM#7,AR0
LD#0,A
loop:
LD*AR1+,A;move8values
STLA,*AR2+;将AR2内容赋予A
BANZloop,*AR0-;intodatamemory
CALLSUM;callSUMsubrotine
end:
Bend
SUM:
STM#a,AR3;将a赋予AR3
STM#x,AR4;x赋予AR4
RPTZA,#3
MAC*AR3+,*AR4+,A;AR3和AR4依次相加赋予A
STLA,@y
RET
。
end
六、实验结果
1,启动CCS后配置CCS集成开发环境
2,添加工程文件
3,汇编、编译、链接、并进行加载
4,加载所给出的程序,并运行。
观察内存单元以及CPU寄存器的变化
5,程序执行结果
七、实验体会
经过实验熟悉了CCS软件开发平台的使用方法.对于各个文件(。
asm、.cmd、.obj、。
out)的作用有了一定的了解。
实验二数据寻址方式
一、实验目的
1、熟悉TMS320C54X的各种寻址方式。
2、继续练习CCS软件的用法。
二、实验条件
本实验已准备的程序列于表2。
1中
表2。
1数据寻址方式实验程序
序号
实验内容
源程序名
链接文件名
1
立即寻址
Lab2a。
asm
Lab2a。
cmd
2
绝对寻址
Lab2b。
asm
Lab2b.cmd
3
累加器寻址
Lab2c。
asm
Lab2c。
cmd
4
直接寻址
Lab2d.asm
Lab2d.cmd
5
间接寻址
Lab2e。
asm
Lab2e。
cmd
6
存储器映象寻址
Lab2f。
asm
Lab2f.cmd
7
堆栈寻址
Lab2g.asm
Lab2g。
cmd
三、实验步骤
1、双击桌面上的CCS2(’5000)图标,启动CCS集成开发环境.
2、在File菜单中选择Open项,打开并阅读每一种寻址方式实验源程序和链接命令文件。
3、创建新工程并添加文件(包括.asm源文件和.cmd链接命令文件)。
4、汇编、编译、链接生成输出文件并加载程序。
5、用单步方式执行程序,观察程序中各条指令的执行结果。
6、在程序中添加若干条此类寻址方式的指令,并汇编、链接、执行。
四、实验程序
Lab2a:
;********************************
;ImmediateAddressing
;********************************
。
title”lab2a.asm"
。
defstart
。
text
start:
LD#100,A;立即寻址
LD#10h,4,A
RSBXSXM
LD#32769,B:
将32769赋予B
LD#4000h,16,B
hereBhere
。
end
Lab2b:
;********************************
;AbsoluteAddressing
;********************************
。
title”lab2b.asm"
。
defstart
SAMPLE.set0060h
.bssx,10
。
data
table:
。
word1;数据装载
.word2
。
word3
.word4
。
word5
.text
start:
LD#4AB8h,A
STLA,SAMPLE
STM#0060h,AR2
RPT#4
MVPDtable,*AR2+;将table赋予AR2指向的地址,AR2+1
RPT#4
MVKD#0061h,*AR2+;将0061h指向的内容赋予AR2,并依次加1
LDx,B
LD0061h,A
hereBhere
.end
Lab2c:
;********************************
;AccumulatorAddressing
;********************************
。
title”lab2c。
asm"
STACK.usect"STACK",10h
.defstart
。
bssx,10
。
data
table:
。
word1234h,5678h,9abch,0def0h
。
text
start:
STM#STACK+10h,SP
LD#table,A;将table地址赋予A
STM#0060h,AR2
RPT#3
READA*AR2+;读取AR2指向地址内容后AR2内容+1
LD#ADD_1,A
CALAA
hereBhere
ADD_1:
ADD#1,A
RET
.end
Lab2d:
;********************************
;DirectAddressing
;********************************
。
title"lab2d.asm”
。
defstart
.bssx,1
.bssy,1
.text
start:
ST#0001,*(0180h);将0001赋予地址0180h
ST#1000,*(01ffh)
ST#500,*(0200h)
LD#3,DP
LD@x,A;DP+x地址的内容赋予A
;LD#4,DP
ADD@y,A
hereBhere
.end
Lab2e:
;****************************************
;IndirectAddressing
;****************************************
.title”lab2d.asm”
.defstart
。
bssx,10h
start:
ST#1000h,*(0060h)
ST#2000h,*(0061h)
ST#3000h,*(0062h)
ST#4000h,*(0063h)将4000h赋予地址0063h
LD#1000h,A
STM#0060h,AR1
MAR*AR1+
STM#2,AR0
LD*AR1+0,A;将AR1指向地址内容赋予A
LD*AR1,B
hereBhere
.end
Lab2f:
;****************************************
;Memory-MappedRegisterAddressing
;****************************************
.title”lab2f。
asm”
.defstart
。
mmregs
。
text
start:
STM#1234h,AR1
STM#5678h,AR2;5678h赋予AR2
STM#2,SWWSR
LDMAR1,A
MVMMAR1,AR3;AR1内容赋予AR3
STLMA,AR2
hereBhere
.end
Lab2g:
;********************************
;StackAddressing
;********************************
.title”lab2g.asm"
。
defstart
STACK:
。
usect"STACK",10h
。
bssx,10h
.text
start:
STM#STACK+10h,SP
ST#1234h,*(x)
ST#5678h,*(x+1)
ST#9abch,*(x+2)
STM#x,AR1
RPT#2
PSHD*AR1+;将AR1指向地址内容压入堆栈
;********************************
RPT#2
POPM*AR1+;将堆栈内容弹出堆栈
hereBhere
.end
五、实验结果
1,立即寻址
2,绝对寻址
将AR2的值逐渐赋予X后,从