您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > DSP技术与应用实验报告精品
DSP技术与应用实验报告实验名称:实验三向量文件的编写及多个文件的链接实验四汇编语言程序设计实验时间:2015年5月14日下午实验人:谢兴轮2012141451129实验三向量文件的编写及多个文件的链接一、实验目的1、编写复位向量文件vectors。Asm2、多个文件的链接3、编写复位和中断向量文件4、仿真外部中断二、实验条件Lab3.asm和lab3.cmd文件三、实验内容1、打开桌面CCS2(‘5000)图标,启动CCS集成开发环境。2、创建一个新工程;并将lab3.sam和lab3cmd添加入工程3、编写复位向量文件,vectors.asm并将文件添加到工程中。4、为了将lab3和vectors两个文件相连接,参看3.6.4节的说明,对lab3.sam和lab3.cmd文件进行必要的修改5、用工程文件对工程中所有文件进行汇编编译链接生成输出文件6、加载程序并单步执行lab3.out文件,仔细观察复位向量的作用7、参看教材4.4中内容,仿真外部中断INT2:①在lab3.asm中,增加一段中断服务子程序INT2,其内容是将累加器A变为负。②修改lab3.sam,开放INT2中断③修改vecotrs.asm增加INT2中断向量④编写仿真外部中断用的数据文件:文件名为INT2.dat,每隔5个时钟周期向CPU发出一次中断请求,直到仿真结束。⑤对工程中所有文件进行重新汇编,链接生成新的输出文件。⑥执行前,从Tool菜单中选择,用鼠标要链接pinname再按connect按钮,选择输入文件INT2与INT2引脚相连,单击打开按钮⑦加载程序并利用单步执行程序,注意观察中断向量在中断执行中的作用。四、实验分析源程序分析*************************************************lab3.asmy=a1*x1+a2*x2+a3*x3+a4*x4*************************************************.titlelab3.asm.mmregsSTACK.usectSTACK,10h;allocatespaceforstack.bssx,4;allocate9wordforvariates.bssa,4.bssy,1.defstart.defINT_2.data.mmregstable:.word1,2,3,4;datafollows....word8,6,4,2.text;codefollows...start:STM#STACK+10h,SP;setstackpointerSTM#table,AR1;AR1pointtotableSTM#x,AR2;AR2pointtoxSTM#7,AR0LD#40h,ASTM#0,SWWSRRSBXINTMSTM#04h,IMRloop:LD*AR1+,A;move8valuesSTLA,*AR2+;fromprogrammemoryBANZloop,*AR0-;intodatamemoryCALLSUM;callSUMsubrotineend:BendSUM:STM#a,AR3;ThesubrotinelmplememtSTM#x,AR4;multiply--accumulateRPTZA,#3MAC*AR3+,*AR4+,ASTLA,*AR2RETINT_2:NEGARETE.end*****************vectors.asm**Resetvector*****************.titlevectors.asm.refstart.sect.vecsBstart.refINT_2.sect.vecs1BINT_2.end(+100)rptEOS;中断时钟为100个周期。调试:修改lab3.cmd文件,将其中data的地址由.data:EPROMPAGE0改为.data:SPRAMPAGE1后,执行程序,每隔100个时钟周期,程序跳到中断,执行完中断后再跳回。实验结果如下实验四汇编语言程序设计一、实验目的通过本实验,熟悉指令系统,初步掌握汇编语言程序设计及指令技巧。二、实验条件在学习教材第五章的基础上进行。三、实验内容1、编写实验,小鼠乘法累加的汇编语言程序lab4a.asm.其中a={0.1,0.2,0.3,0.4.0.5}.2、将第五章例9和例10组合成一个程序lab4b.asm,实现对一个数组x[5]={1000h,2000h,3000h,5000h}进行初始化,并利用块重复操作指令将该数组每个元素加1.3、将第五章例20或例21,分别编写成完整的除法运算程序lab4c1.asm和lab4c2.asm.4、编写实现两个64位数相加的汇编语言程序lab4d.asm。5、再设计好上述每一个汇编语言程序的通知,均设计相应的链接命令文件lab4x.cmd,并利用CCS调试。四、实验分析(1)Lab4a.asm源程序******************************************************lab4a.asmy=a1*x1+a2*x2+a3*x3+a4*x4+a5*x5******************************************************.titlelab4a.asm.mmregsSTACK.usectSTACK,10h;allocatespaceforstack.bssx,5;allocate11wordforvariates.bssa,5.bssy,1.defstart.datatable:.word1*32768/10,2*32768/10,3*32768/10,4*32768/10,5*32768/10.word1*32768/10,2*32768/10,3*32768/10,4*32768/10,5*32768/10.text;codefollows...start:SSBXFRCTSTM#STACK+10h,SP;setstackpointerSTM#table,AR1;AR1pointtotableSTM#x,AR2;AR2pointtoxSTM#9,AR0LD#0,Aloop:LD*AR1+,A;move8valuesSTLA,*AR2+;fromprogrammemoryBANZloop,*AR0-;intodatamemoryCALLSUM;callSUMsubrotineend:BendSUM:STM#a,AR3;ThesubrotinelmplememtSTM#x,AR4;multiply--accumulateRPTZA,#4MAC*AR3+,*AR4+,ASTHA,@yRET.end分析:这里小数的表示方法是正数:乘以32768负数:其绝对值部分乘以32768再取反加一,所以a={0.1,0.2,0.3,0.4,0.5}依次对应0x0CCC,0x1999,0x2666,0x3333,0x4000,x赋a的值,所以小数乘法累加的结果y=0x4665=0.55。(2)Lab4b.asm源程序.titlelab4b.asm.mmregs.bssx,5.defstart.datatable.word1000h,2000h,3000h,4000h,5000h.text;codefollows...start:STM#x,AR2;AR2pointtoxRPT#4MVPDtable,*AR2+;*************************************next:LD#1,16,BSTM#4,BRCSTM#x,AR4RPTBend-1ADD*AR4,16,B,ASTHA,*AR4+end:Bend.end分析:这里利用了RPT重复操作指令对数组x进行了初始化,然后利用块重复操作指令将数组的每个元素加1,结果就一次变x[5]={1001,2001,3001,4001,5001}。(3)Lab4c1.asm源程序;**************;*lab4c1.ASM*;**************.titlelab4c1.asm.defstartSTACK.usectSTACK,100.bssnum,1.bssden,1.bssquot,1.datatable:.word-128;4*32768/10.word1024;-8*32768/10.textstart:STM#num,AR1RPT#1MVPDtable,*AR1+LD@den,16,AMPYA@numABSASTHA,@denLD@num,16,AABSARPT#14SUBC@den,AXC1,BLTNEGASTLA,@quotdone:Bdone.end分析:本例为除法运算|被除数||除数|商为小数的情况,依次赋值分子为-128对应16进制就是0xFF80,分母为1024对应16进制是0x0400,相处得商-0.125即16进制的0xF000。Lab4c2.asm源程序;**************;*lab4c2.ASM*;**************.titlelab4c2.asm.defstartSTACK.usectSTACK,100.bssnum,1.bssden,1.bssquot,1.datatable:.word16384;66*32768/100.word512;-33*32768/100.textstart:STM#num,AR1RPT#1MVPDtable,*AR1+LD@den,16,AMPYA@numABSASTHA,@denLD@num,AABSASUB@den,ABCnext,ALTADD@den,ARPT#15SUBC@den,ABnext1next:LD@num,16,AABSARPT#14SUBC@den,Anext1:XC1,BLTNEGASTLA,@quotdone:Bdone.end分析:本例为除法运算|被除数||除数|商为整数数的情况,依次赋值分子为16384对应16进制就是0x4000,分母为512对应16进制是0x0200,相处得商32即16进制的0x0020。注意,以上两例,若分子分母是小数,就要遵循第一个案例将小数做一番变换再做运算。(4)Lab4d.asm源程序;lab4d.asm.titlelab4d.asm.defstarttable:.word4000h;x3.word0f000h;x2.word0f000h;x1.word0f000h;x0.word4000h;y3.word3000h;y2.word2000h;y1.word1000h;y0.bssx,4.bssy,4.bssz,4.textstart:STM#x,AR1RPT#7MVPDtable,*AR1+;*****************************LD#x,DPDLD@x+2,ADADD@y+2,ADLD@x,BADDC@y+1,BADD@y,16,B;*****************************STLA,@z+3STHA,@z+2STLB,@z+1STHB,@zhere:Bhere.end分析:这里实现两个64位数相加,x赋值为4000f000f000f000,y赋值为4000300020001000,两个数相加,存在进位,所以相加z的值对应为8001200110010000五、实验体会本次实验学到的东西很多,从新认识了汇编语言程序设计中的加、减法和乘法运算,重复操作运算,小数运算,除法运算以及浮点运算等结构,真正理解了它们在汇编程序里是怎么实现的以及对应内存的变化,我感觉自己对DSP的认识有加深了许多。
本文标题:DSP技术与应用实验报告精品
链接地址:https://www.777doc.com/doc-2910524 .html