ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:71.52KB ,
资源ID:4585768      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4585768.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP基于某CCS向量文件资料编写和总汇编语言设计实验.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP基于某CCS向量文件资料编写和总汇编语言设计实验.docx

1、DSP基于某CCS向量文件资料编写和总汇编语言设计实验实验三、向量文件的编写及多个文件的链接一、 实验目的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文件进

2、行必要的修改。5. 用菜单命令对工程的所有文件进行汇编、编译、链接生成输出文件。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菜单中选择,用鼠标选中要连接P

3、in Name再按 connect按钮,选择输入文件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: .

4、word 1,2,3,4 ;为标号table开始的.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,不插等待周期RSBX INTM ;开放全部可屏蔽中断STM #04h,IMR ;开放INT2中断loop: LD *AR1+,A ;将AR1中数据加载到A累加器STL A,*AR

5、2+ ;将A低16位送往AR2寄存器所指地址BANZ loop,*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个时钟周期来一次中断,累

6、加器A中的数值变负六、实验体会学习了如何设置中断,及源程序和向量文件的链接,编写仿真外部中断的数据文件,更直观的认识到程序是如何执行中断的。实验四 汇编语言程序设计一、实验目的通过实验熟悉指令系统,初步掌握汇编语言程序设计的基本方法和技巧。二、实验条件在第五章基础上进行。三、实验内容1.编写实验小数乘法累加的汇编语言程序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,

7、分别编写成完整的除法运算程序lab4c1.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 tab

8、le:.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; 分别是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的首地址 ST

9、M #x,AR2 ; AR2指向x的首地址 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 ;

10、子程序返回.end ;程序结束lab4b.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次 MVPD table,*AR2+ ;重复传递共5个数据next: LD #1,16,B ;将1左移16位加载到B累加器 STM

11、 #4,BRC ;将块重复计数器赋值为4 STM #x,AR4 ; AR4指向x的首地址 RPTB end-1 ;循环执行下面语句,end-1为结束地址 ADD *AR4,16,B,A ;将AR4中数据左移16位加B赋给A STH A,*AR4+ ; 将A高16位送往AR4寄存器所指地址end: B end ;循环等待 .end ;程序结束lab4c1;*;* lab4c1.ASM * ;* .title lab4c1.asm .def startSTACK .usect STACK,100 ;给堆栈分配100个存储单元 .bss num,1 .bss den,1 .bss quot,1 .d

12、atatable: .word -128;4*32768/10 ; 为标号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(3

13、2-16) ABS A ; 分子取绝对值 RPT #14 ;15次减法循环,完成除法 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*3

14、2768/100 ; 为标号table开始的4个存储单元赋初值 .word 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,则执行next子程序 ADD den,A ; 在累加器A中加上den中数据 RPT #15 ;重复下条语句15次 SUBC den,A ;有条件减法 B next1 ;执行next1子程序next: LD num,16,A ;分子移到A(32-16) ABS A ; 分子取绝对值 RPT #14 ;重复下条语句14次 SUBC den,A ;有条件减法next1: XC 1,BLT ;如果B()除数时的除法运算,及两个64位数相加如何处理进位问题。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1