DSP基于CCS向量文件编写和汇编语言设计实验_第1页
DSP基于CCS向量文件编写和汇编语言设计实验_第2页
DSP基于CCS向量文件编写和汇编语言设计实验_第3页
DSP基于CCS向量文件编写和汇编语言设计实验_第4页
DSP基于CCS向量文件编写和汇编语言设计实验_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三、向量文件的编写及多个文件的链接一、实验目的1. 编写复位向量文件vectors.asm。2. 多个文件的链接。3. 编写复位和中断向量文件。4. 仿真外部中断。二、实验条件iab3.asm 和 iab3.cmd 文件三、实验步骤1. 双击桌面上ccs 2图标,启动ccs集成开发环境。2. 建立新t根,并将iab3.asm和iab3.cmd添加入丁程。3. 按照3.6.4节中的例子,编写复位向量文件vectors.asm并将该 文件添加入工程。4. 为丫将iab3和vectors两个文件和趣接,对iab3.asm和iab3.cmd文件进行必要的修改。5. 用菜单命令对工程的所有文件进行汇

2、编、编译、链接生成输出 文件。6. 加载程序并单步执行iab3.out文件,仔细观察复位向量的作用。7. 参看教材4.4节屮的内容,仿真外部屮断int2: 在iab3.asm中,增加一段中断服务子程序int 2.dat,艽内容将累加器a变负。 修改iab3.asm,开放int2中断。 修改vectors.asm,增加int2中断向量。 编写仿真外部中断用的数据文件,文件名为int_2.dat,每隔 100个时钟周期向cpu发出一次中断请求,直到仿真结朿。 对工程中所有文件重新汇编、编译、链接生成新的输出文件。 执行前,从tool菜单中选择,用鼠标选中要连接pin name 再按connect按

3、钮,选择输入文件int_2与int2引脚相连,单 击打开按钮。 加载程序,并利用单步方式执行程序,注意观察中断向量在 程序执行过程中的作用。p4、实验程序* iab3.asmy= al*xl+a2*x2+a3*x3+a4*x4.title hiab3.asm"mmregs;定义存储器映像寄存器.usect"stack",loh;给堆栈分配16个存储单元bssx,4;给x分配4个存储单元bssa,4.bssy,idefstart;定义标号startstack.defint2.data;定义数据段.mmregstable:.word1,2,3,4;为标号table开始

4、的.word8,6,4,2;8个存储单元赋初值.text;定义文本段start:stm#stack+10h,sp;设置堆栈指针stm#table,arl;ar1指向table的首地址stm#x?ar2;ar2指向x的首地址stm#7,ar0;将ar0赋7ld#40h,a;将立即数40h加载到a累加器stm #0,swwsr;swwsr置0,不插等待周期rsbx intm;开放全部可屏蔽中断stm #04h,imr;开放int2屮断loop:ld*ar1+,a;将ar1中数据加载到a累加器stla,*ar2+;将a低16位送往ar2寄存器所指地址banzloop,*aro-;重复执行7次call

5、sum;调用sum子程序end:bend;循环等待sum:stm#a,ar3;ar3指向a的首地址stm#x,ar4;ar4指向x的首地址rptza,#3;将a清零,重复执行下条指令3次macstlretint一2: neg arete.end五、实验现象*ar3+,*ar4+,a ;相乘累加存入a累加器 a/ar2 ;将a的低16位送往ar2所指向的地址;子程序返回 ;将a累加器变负 ;开中断,从中断返回 ;程序结束每隔100个时钟周期来一次中断,累加器a中的数值变负usp 008f st01000ar0ffff厂affffffffd8厂ar10071b0000000000f八41:1 ,

6、1六、实验体会学习了如何设置中断,及源程序和向量文件的链接,编写仿真外 部中断的数据文件,更直观的认识到程序是如何执行中断的。实验四汇编语言程序设计一、实验目的通过实验熟悉指令系统,初步掌握汇编语言程序设计的基本方法 和技巧。二、实验条件在第五章基础上进行。三、实验内容1. 编写实验y = i=iaixi小数乘法累加的、?编语言程序iab4a.asm。 其屮 a=0.1,0.2,0.3,0.4,0.5。2. 将第五章例9和例10组合成一个程序iab4b.asm,实现对一个 数组x5=1000h,2000h,3000h,5000h进行初始化,并利用块重复操作指令将该数组每个元素加一。3. 将第五

7、章中的例20或例21,分别编写成完整的除法运算程序iab4cl.asm 和 iab4c2.asm。4. 编写实现两个64位数相加的汇编语言程序iab4d.asmo5. 在设计好上述毎一个汇编语言程序的同吋,均应设计相应的链 接命令文件iab4x.cmd,并利用ccs进行调试。iab4a* iab4a.asmy= al*xl+a2*x2+a3*x3+a4*x4+a5*x5*.title niab4a.asm"mmregs.usect"stack",loh.bssx,5.bssa,5.bssy,i.defstart.datastack;给堆栈分配16个存储单元 ;给x

8、分配4个存储单元table: .word 1*32768/10,2*32768/10,3*32768/10,4*32768/10,5*32768/10;为标号table开始的10个存储单元赋初值。.word 1*32768/10,2*32768/10,3*32768/10,4*32768/10,5*32768/10;分另lj是 0.1,0.2,03,0.4,0.5, 0.1,0.2,0.3,0.4,0.5。.text;定义文本段start: ssbxfrct;将小数方式位状态寄存器置一stm#stack+10h,sp;设置堆栈指针stm#table,arl;ar1指向table的首地址stm#

9、x?ar2;ar2指向x的首地址stm#9,ar0ld#0,aloop: ld*ar1+,a;将ar1中数据加载到a累加器stla/ar2+;将a低16位送往ar2寄存器所指地址banzloop,*ar0-;重复执行9次callsum;调用sum子程序end:bend;循环等待sum:stm#a,ar3;ar3指向a的苜地址stm#x,ar4;ar4指向x的首地址rptza,林4;将a清零,重复执行下条指令4次mac*ar3+,*ar4+,a;相乘累加存入a累加器stha,y;将a的高16位送往yret;子程序返回.end;程序结束iab4b.titlenlab4b.asm".mmr

10、egs;定义存储器映像寄存器.bssx,5;给x分配5个存储单元.defstart;定义标号start.data;定义数据段table .word 1000h,2000h,3000hz4000h,5000h;为标号table开始的5个存储单元赋初值。 .text;定义文本段start:stm#x,ar2;ar2指向x的首地址rpt#4;重复下条指令4次mvpd table,*ar2+;重复传递共5个数据next:ld#1,16?b;将1左移16位加载到b累加器stm#4,brc;将块重复计数器赋值为4stm#x,ar4;ar4指向x的首地址rptbend-1;循环执行下面语句,end-1为结束

11、地址add*ar4,16,b,a;将ar4中数据左移16位加b赋给astha,*ar4+;将a高16位送往ar4寄存器所指地址end:bend;循环等待.end;程序结束iab4clslsl馨;* lab4cl.asm *備/.title"iab4cl.asm".defstartstack .usect"stack",100;给堆栈分配100个存储单元.bssnum,l.bssden,l.bssquot'l.datatable:.word -128;4*32768/10;为标号table开始的4个存储单元赋初值 .word 1024;-8*327

12、68/10;分别是-128,0.4,1024, -0.8.textstart: stm#num,arlrpt#1;重复执行下条语句1次mvpdtable,*ar1+;传送2个数据至分子、分母单元ldden,16,a;将分母移到a累加器(31-16)mpyanum;(num)* (a (32-16)移到b,获取商的符号absa;分母取绝对值stha,den;分母绝对值存回原处ldnum,16,a;分子移到a (32-16)absa;分子取绝对值rpt#14;15次减法循环,完成除法subcden,a;有条件减法xc1,blt;如果b<0 (商是负数),则需要变号nega;将a累加器变负st

13、la,quot;将a的低16位送往quotdone:bdone.endiab4c2;* lab4c2.asm *.title "iab4c2.asm"给堆桟分配100个存储单元.def startstack .usect "stack",100bssnum,l.bssden,l.bssquot,l.datatable: .word 16384;66*32768/100;为标号table开始的4个存储单元赋初值 .word 512/33*32768/100;分别是 16384,0.66,512,-0.33.textstart: stm #num,arlrp

14、t#1;重复执行下条语句1次mvpdtable,*arl+;传送2个数据至分子、分母单元ldden,16,a;将分母移到a累加器(31-16)mpyanum;(num) * (a (32-16)移到b,获取商的符号absa;分母取绝对值stha,den;分母绝对值存回原处ldnum,a;分子移到aabsa;分子取绝对值subden,a;从累加器a中减去den中数掘bcnext,alt;条件分支转移,a<0,则执行next子程序addden,a;在累加器a中加上den中数据rpt#15;重复下条语句15次subcden,a;有条件减法bnextl;执行nextl子程序next:ldnum,

15、16,a;分子移到a (32-16)absa;分子取绝对值rpt#14;重复下条语句14次subcden,a;有条件减法nextl:xc1,blt;如果b<0 (商是负数),则需要变号nega;将a累加器变负stla,quot;将a的低16位送往quotdone:bdoneendiab4d;lab4d.asm.title "iab4d.asm.defstarttable: .word4000h;x3.wordofoooh;x2.wordof000h;xl.wordofoooh;x0.word4000h;y3.word3000h;y2.word2000h;yi.wordloooh

16、;y0.bssx,4.bssv,4.bssz,4.textstart: stm#x,arl;ar1指向x的首地址rpt#7;重复执行下条语句7次mvpdtable,*ar1+datable中的8个数据送往x, yld#x,dp;将*的立即数加载到页指针dldx+2,a;将x的后两个数据合并加载到adaddy+2,a;c16=1,将y高低位和a高低位分别相加dldx?b;将x的前两个数据合并加载到baddc y+l,b;将y的中间两个数据合并与b带进位相加addy,16,b ;将y第一个数据左移16位与b相加stla,z+3;将a的低位赋给z的(015)stha,z+2;将a的高位赋给z的(16

17、31)stlb,z+1;将b的低位赋给z的(3247)sthb,z;将b的高位赋给z的(4863)here: b here.end五、实验结果lab4a2doxoooooosa0x00000x00000x0000oxoooooosd0x00000x00000x0000oxooooooox, bss , bssoxooooooooxoccc0x19990x20x00000030x33330x40000x0000005a0x0000005oxoccc0x19990x20x00000080x33330x4000oxooooooayoxoooooo 6a0x46s0x000000bendr end0x

18、000000b0x00000x00000x00000x000000e0x00000x00000x00000x000000710x00000x00000x00000x000000740x00000x00000x00000x000000770x00000x00000x00000x0000007a0x00000x00000x00000x0000007d0x00000x00000x00000x00000080stack0x000000800x00000x00000x0000nvnnnnnnonvnnnnnvnnnnnvnnnn7 圉 16 bit. !data |lab4b0x600x0000000x

19、, bss -bss0x00000000x10010x20010x30010x00000030x40010x50010x0000005end0x0000005oxoooooxoooo0x00000x0000008oxoooooxoooo0x00000x000000boxoooooxoooo0x00000x000000eoxoooooxoooo0x00000x000000710x0000oxoooo0x00000x00000074oxoooooxoooo0x00000x000000770x0000omoooo0x00000x0000007a0x0000oxoooo0x00000x00000070

20、0x0000oxoooo0x00000x000000800x0000oxoooo0x00000x000000830x0000oxoooo0x00000x0000008oxoooooxoooo0x00000x00000089oxoooooxoooo0x0000oxooooooecoxoooooxoooo0x0000oxoooooosfoxoooooxoooo0x00000x00000092oxoooooxoooo0x0000nvnnnnnno 二1 n n n aavnnnny |=j hex 16 bitdata 二lab4cl0x00000050oxooooooooxooooooo0x000

21、00061oxooooool0x00000020x000000620x00000030x0000003oxoooooo0x000000690x000000c0x000000f0x000000720x000000750x000000760x0000007b0x0000007e0x000000800x000000800x00000x00000x0000bs3, .bssoxfrsoden0x0400quooxtooo_end.end0x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x0000

22、0x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x0000stack0x00000x00000x0000avahanzji±j_lab4c20x600x00000060nuzc* _bss,.bss0x00000000x40000x000000lden0x000000l0x02000x0000002quo:0x00000020x00200x0000003nd.end0x00000030x00000x00000x00000x0000000x00000x00000x00000x00000090x00000x00000x00000x000000c0x00000x00000x00000x000000f0x00000x00000x00000x000000720x00000x00000x00000x0000007s0x00000x00000x00000x000000780x00000x00000x0000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论