您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > DSP基于CCS数据寻址方式实验
1实验一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项,并输入工程2名如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*************************************************.titlelab1.asm.mmregsSTACK.usectSTACK,10h;申请16栈区空间.bssx,4;创建4个存储单元的x和a,一个存储单元的y3.bssa,4.bssy,1.defstart.datatable:.word1,2,3,4;装载数据.word8,6,4,2.text;代码段start:STM#0,SWWSRSTM#STACK+10h,SP;定义堆栈段STM#table,AR1;AR1指向tableSTM#x,AR2;AR2指向xSTM#7,AR0LD#0,Aloop:LD*AR1+,A;move8valuesSTLA,*AR2+;将AR2内容赋予ABANZloop,*AR0-;intodatamemoryCALLSUM;callSUMsubrotineend:BendSUM:STM#a,AR3;将a赋予AR3STM#x,AR4;x赋予AR4RPTZA,#3MAC*AR3+,*AR4+,A;AR3和AR4依次相加赋予A4STLA,@yRET.end六、实验结果1,启动CCS后配置CCS集成开发环境2,添加工程文件3,汇编、编译、链接、并进行加载4,加载所给出的程序,并运行。观察内存单元以及CPU寄存器的变化5,程序执行结果七、实验体会经过实验熟悉了CCS软件开发平台的使用方法。对于各个文件5(.asm、.cmd、.obj、.out)的作用有了一定的了解。实验二数据寻址方式一、实验目的1、熟悉TMS320C54X的各种寻址方式。2、继续练习CCS软件的用法。二、实验条件本实验已准备的程序列于表2.1中表2.1数据寻址方式实验程序序号实验内容源程序名链接文件名1立即寻址Lab2a.asmLab2a.cmd2绝对寻址Lab2b.asmLab2b.cmd3累加器寻址Lab2c.asmLab2c.cmd4直接寻址Lab2d.asmLab2d.cmd5间接寻址Lab2e.asmLab2e.cmd6存储器映象寻址Lab2f.asmLab2f.cmd7堆栈寻址Lab2g.asmLab2g.cmd三、实验步骤1、双击桌面上的CCS2(’5000)图标,启动CCS集成开发环境。2、在File菜单中选择Open项,打开并阅读每一种寻址方式实验源6程序和链接命令文件。3、创建新工程并添加文件(包括.asm源文件和.cmd链接命令文件)。4、汇编、编译、链接生成输出文件并加载程序。5、用单步方式执行程序,观察程序中各条指令的执行结果。6、在程序中添加若干条此类寻址方式的指令,并汇编、链接、执行。四、实验程序Lab2a:;********************************;ImmediateAddressing;********************************.titlelab2a.asm.defstart.textstart:LD#100,A;立即寻址LD#10h,4,ARSBXSXMLD#32769,B:将32769赋予BLD#4000h,16,BhereBhere.endLab2b:;********************************7;AbsoluteAddressing;********************************.titlelab2b.asm.defstartSAMPLE.set0060h.bssx,10.datatable:.word1;数据装载.word2.word3.word4.word5.textstart:LD#4AB8h,ASTLA,SAMPLESTM#0060h,AR2RPT#4MVPDtable,*AR2+;将table赋予AR2指向的地址,AR2+1RPT#48MVKD#0061h,*AR2+;将0061h指向的内容赋予AR2,并依次加1LDx,BLD0061h,AhereBhere.endLab2c:;********************************;AccumulatorAddressing;********************************.titlelab2c.asmSTACK.usectSTACK,10h.defstart.bssx,10.datatable:.word1234h,5678h,9abch,0def0h.textstart:STM#STACK+10h,SPLD#table,A;将table地址赋予ASTM#0060h,AR2RPT#39READA*AR2+;读取AR2指向地址内容后AR2内容+1LD#ADD_1,ACALAAhereBhereADD_1:ADD#1,ARET.endLab2d:;********************************;DirectAddressing;********************************.titlelab2d.asm.defstart.bssx,1.bssy,1.textstart:ST#0001,*(0180h);将0001赋予地址0180hST#1000,*(01ffh)10ST#500,*(0200h)LD#3,DPLD@x,A;DP+x地址的内容赋予A;LD#4,DPADD@y,AhereBhere.endLab2e:;****************************************;IndirectAddressing;****************************************.titlelab2d.asm.defstart.bssx,10hstart:ST#1000h,*(0060h)ST#2000h,*(0061h)ST#3000h,*(0062h)ST#4000h,*(0063h)将4000h赋予地址0063hLD#1000h,ASTM#0060h,AR1MAR*AR1+STM#2,AR011LD*AR1+0,A;将AR1指向地址内容赋予ALD*AR1,BhereBhere.endLab2f:;****************************************;Memory-MappedRegisterAddressing;****************************************.titlelab2f.asm.defstart.mmregs.textstart:STM#1234h,AR1STM#5678h,AR2;5678h赋予AR2STM#2,SWWSRLDMAR1,AMVMMAR1,AR3;AR1内容赋予AR3STLMA,AR2hereBhere.end12Lab2g:;********************************;StackAddressing;********************************.titlelab2g.asm.defstartSTACK:.usectSTACK,10h.bssx,10h.textstart:STM#STACK+10h,SPST#1234h,*(x)ST#5678h,*(x+1)ST#9abch,*(x+2)STM#x,AR1RPT#2PSHD*AR1+;将AR1指向地址内容压入堆栈;********************************RPT#2POPM*AR1+;将堆栈内容弹出堆栈hereBhere.end五、实验结果131,立即寻址2,绝对寻址将AR2的值逐渐赋予X后,从地址0x0061(0x0002)再次对X进行赋值3,累加器寻址在实验过程中,对于此时A的取值即:FFFFFFE010不理解。经询问助教后得知此时A的取值为#table的地址。其前6个F为无符号标志。此时A指向的地址#table中的值赋予X14经过ADD_1后对于A进行加1操作4,直接寻址DP赋3,将第三页x地址内容赋予A并加上DP+y5,间接寻址将AR1指向地址的内容赋予A和B6,存储器映像寻址以将AR1的值赋予A和B以及AR27,堆栈寻址经过PSHD入栈,以及退栈后形成x。入栈以及退栈地址由AR1提15供。六、实验体会实验总结:通过实验,主要熟悉了数据的几种寻址方式,认识更直观,为以后的实验搭建了基础。
本文标题:DSP基于CCS数据寻址方式实验
链接地址:https://www.777doc.com/doc-2910491 .html