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

下载本文档

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

文档简介

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

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

3、INT_2与INT2引脚相连,单击打开按钮。加载程序,并利用单步方式执行程序,注意观察中断向量在程序执行过程中的作用。四、 实验程序* lab3.asm y= a1*x1+a2*x2+a3*x3+a4*x4 *.title lab3.asm.mmregs ;定义存储器映像寄存器STACK .usect STACK,10h ;给堆栈分配16个存储单元.bss x,4 ;给x分配4个存储单元 .bss a,4 .bss y,1.def start ;定义标号start .def INT_2 .data ;定义数据段.mmregs table: .word 1,2,3,4 ;为标号table开始的.

4、word 8,6,4,2 ;8个存储单元赋初值.text ;定义文本段start: STM #STACK+10h,SP ;设置堆栈指针 STM #table,AR1 ;AR1指向table的首地址STM #x,AR2 ;AR2指向x的首地址STM #7,AR0 ;将AR0赋7LD #40h,A ;将立即数40h加载到A累加器STM#0,SWWSR ;SWWSR置0,不插等待周期RSBXINTM ;开放全部可屏蔽中断STM#04h,IMR ;开放INT2中断loop: LD *AR1+,A ;将AR1中数据加载到A累加器STL A,*AR2+ ;将A低16位送往AR2寄存器所指地址BANZ lo

5、op,*AR0- ;重复执行7次CALL SUM ;调用SUM子程序end: B end ;循环等待SUM: STM #a,AR3 ; AR3指向a的首地址 STM #x,AR4 ; AR4指向x的首地址 RPTZ A,#3 ; 将A清零,重复执行下条指令3次 MAC *AR3+,*AR4+,A ;相乘累加存入A累加器 STL A,*AR2 ;将A的低16位送往AR2所指向的地址RET ;子程序返回INT_2:NEG A ;将A累加器变负RETE ;开中断,从中断返回 .end ;程序结束五、实验现象每隔100个时钟周期来一次中断,累加器A中的数值变负六、实验体会学习了如何设置中断,及源程序和

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

7、.asm和lab4c2.asm。4.编写实现两个64位数相加的汇编语言程序lab4d.asm。5.在设计好上述每一个汇编语言程序的同时,均应设计相应的链接命令文件lab4x.cmd,并利用CCS进行调试。四、实验程序lab4a* lab4a.asm y= a1*x1+a2*x2+a3*x3+a4*x4+a5*x5 * .title lab4a.asm .mmregsSTACK .usect STACK,10h ;给堆栈分配16个存储单元 .bss x,5 ;给x分配4个存储单元 .bss a,5 .bss y,1 .def start .data table:.word 1*32768/10,

8、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; 分别是0.1,0.2,0.3,0.4,0.5, 0.1,0.2,0.3,0.4,0.5。 .text ;定义文本段start: SSBX FRCT ;将小数方式位状态寄存器置一STM #STACK+10h,SP ; 设置堆栈指针 STM #table,AR1 ; AR1指向table的首地址 STM #x,AR2 ; AR2指向x的首地址

9、 STM #9,AR0 LD #0,Aloop: LD *AR1+,A ; 将AR1中数据加载到A累加器 STL A,*AR2+ ; 将A低16位送往AR2寄存器所指地址 BANZ loop,*AR0- ; 重复执行9次CALL SUM ;调用SUM子程序end: B end ;循环等待SUM: STM #a,AR3 ; AR3指向a的首地址 STM #x,AR4 ; AR4指向x的首地址 RPTZ A,#4 ; 将A清零,重复执行下条指令4次 MAC *AR3+,*AR4+,A ;相乘累加存入A累加器 STH A,y ;将A的高16位送往yRET ;子程序返回.end ;程序结束lab4b.

10、title lab4b.asm.mmregs ;定义存储器映像寄存器 .bss x,5 ;给x分配5个存储单元 .def start ;定义标号start .data ;定义数据段table .word 1000h,2000h,3000h,4000h,5000h ; 为标号table开始的5个存储单元赋初值。 .text ;定义文本段start: STM #x,AR2 ; AR2指向x的首地址 RPT #4 ;重复下条指令4次MVPDtable,*AR2+ ;重复传递共5个数据next:LD #1,16,B ;将1左移16位加载到B累加器STM#4,BRC ;将块重复计数器赋值为4STM#x,

11、AR4 ; AR4指向x的首地址RPTBend-1 ;循环执行下面语句,end-1为结束地址ADD*AR4,16,B,A ;将AR4中数据左移16位加B赋给ASTHA,*AR4+ ; 将A高16位送往AR4寄存器所指地址end:Bend ;循环等待 .end ;程序结束lab4c1;*;* lab4c1.ASM * ;* .title lab4c1.asm .def startSTACK .usect STACK,100 ;给堆栈分配100个存储单元 .bss num,1 .bss den,1 .bss quot,1 .datatable: .word -128;4*32768/10 ; 为标

12、号table开始的4个存储单元赋初值 .word 1024;-8*32768/10 ;分别是-128,0.4,1024,-0.8 .textstart: STM #num,AR1 RPT #1 ;重复执行下条语句1次 MVPD table,*AR1+ ;传送2个数据至分子 、分母单元 LD den,16,A ;将分母移到A累加器(31-16) MPYA num ;(num)*(A(32-16)移到B,获取商的符号 ABS A ;分母取绝对值 STH A,den ;分母绝对值存回原处 LD num,16,A ;分子移到A(32-16) ABS A ; 分子取绝对值 RPT #14 ;15次减法循

13、环,完成除法 SUBC den,A ;有条件减法 XC 1,BLT ;如果B0(商是负数),则需要变号 NEG A ;将A累加器变负 STL A,quot ;将A的低16位送往quotdone: B done .endlab4c2;*;* lab4c2.ASM * ;* .title lab4c2.asm .def startSTACK .usect STACK,100 ;给堆栈分配100个存储单元 .bss num,1 .bss den,1 .bss quot,1 .datatable: .word 16384;66*32768/100 ; 为标号table开始的4个存储单元赋初值 .wor

14、d 512;-33*32768/100 ;分别是16384,0.66,512,-0.33 .textstart: STM #num,AR1 RPT #1 ;重复执行下条语句1次 MVPD table,*AR1+ ;传送2个数据至分子 、分母单元 LD den,16,A ;将分母移到A累加器(31-16) MPYA num ;(num)*(A(32-16)移到B,获取商的符号 ABS A ;分母取绝对值 STH A,den ;分母绝对值存回原处 LD num,A ;分子移到A ABS A ; 分子取绝对值 SUB den,A ;从累加器A中减去den中数据 BC next,ALT ;条件分支转移,A0,则执行nex

温馨提示

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

评论

0/150

提交评论