实验一CCS的用法_第1页
实验一CCS的用法_第2页
实验一CCS的用法_第3页
实验一CCS的用法_第4页
实验一CCS的用法_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、 电子信息学院DSP结构原理及应用实验组员:实验报告书写: 日期:地点:基础教学楼B座520实验室 实验一 CCS的用法1、 实验目的:1)了解TMS320C54X汇编语言程序对的基本格式以及汇编、链接的基本过程。2)初步熟悉CCS的用法。实验条件:1)硬件DSK板及软件开发平台工具CCS。2)源程序清单lab1.asm,链接命令文件lab1,cmd.二、实验步骤:1、打开桌面CCS2(5000)图标,启动CCS集成开发环境。2 、创建一个新工程;从project中选择new项,输入工程名如lab1,单击完成。3、 将文件添加到工程中: a、从project中选择Add Files to pr

2、oject,在弹出的对话框选择 lab1.asm文件并单击打开;或在工程lab.pjt处单击右键,选择菜单命令Add Files to project。b、同理将lab1.cmd文件添加入工程。4、 对工程进行汇编、编译、链接:执行菜单命令project-Rebuild All,或在工具栏上单击Rebuild All图标。5、 加载程序:执行菜单命令File-Load Program,在弹出的对话框中选择lab1.out并单击打开按钮。6、 运行程序:选择Debug中的Run运行程序或单击工具栏的Run图标、Single Step图标运行程序。三实验要求:1、 了解CCS菜单命令及产生各个显示

3、窗口的操作。2、 操作各种仿真命令 进入、退出CCS; 选择当前窗口,改变窗口的大小。 加载程序。 运行程序(包括单步运行)。 检查修改CUP寄存器。 检查修改存储器单元内容。 用观察窗口检查变量、CPU寄存器或存储单元内容。 四、实验源程序:* lab1.asm y= a1*x1+a2*x2+a3*x3+a4*x4 * .title lab1.asm ;汇编语言源文件取名 .mmregs ;定义存储器印象寄存器STACK .usect STACK,10h ;为堆栈分配10个空间 .bss x,4 ;为变量x分配4个存储单元 .bss a,4 ;为系数a分配4个存储单元 .bss y,1 ;为

4、变量y分配1个存储单元 .def start .data ;定义数据代码段 table: .word 1,2,3,4 ;为table开始的8个存储单元赋值 .word 8,6,4,2 .text ;定义文本代码段start: STM #0,SWWSR STM #STACK+10h,SP ;设置堆栈指针 STM #table,AR1 ;AR1指向table首地址 STM #x,AR2 ;AR2指向x首地址 STM #7,AR0 ;寄存器AR0赋值7 LD #0,A ;累加器清零loop: LD *AR1+,A ;将AR1的值赋给累加器A中 STL A,*AR2+ ;将A的低16位存储到AR2中

5、BANZ loop,*AR0- ;辅助寄存器 CALL SUM ;调用乘法累加子程序SUMend: B end ;循环等等SUM: STM #a,AR3 ;将系数的首地址赋给AR3 STM #x,AR4 ;将变量x的首地址赋给AR4 RPTZ A,#3 ;将累加器清零,重复执行下条指令4次 MAC *AR3+,*AR4+,A;执行乘法累加运算,结果存储在累加器A中 STL A,y ;将结果(A的低16位)送往变量y存储单元 RET .end5、 实验体会:1)、出现一个warning: entry point other than _c_int00 specified,将start 用_c_i

6、nt00代替后warning消失,说明标号_c_int00更精确。2)、堆栈赋值改为20时,SP值变为100,但对整体无影响,仅只是为堆栈分配的存储单元增加了。3)、4次loop循环中,PC指针由F00B到F00D依次变化,说明 LD *AR1+,A ;STL A,*AR2+;BANZ loop,*AR0-;三条语句的执行周期均为1.实验二 数据寻址方式1、 实验目的1、 熟悉TMS320C54X的各种寻址方式。2、 继续练习CCS软件用法。二、实验条件本实验已准备的程序于表2.1中表2.1 数据寻址方式实验程序序号实验内容源程序名链接文件名1立即寻址Lab2a.asmLab2a.cmd2绝对

7、寻址Lab2b.asmLab2b.cmd3累加器寻址Lab2c.asmLab2c.cmd4直接寻址Lab2d.asmLab2d.cmd5间接寻址Lab2e.asmLab2e.cmd6存储器映象寻址Lab2f.asmLab2f.cmd7堆栈寻址Lab2g.asmLab2g.cmd 2、 实验步骤1、 双击桌面上的“CCS”图标,启动”CCS”开发环境。2、 在file菜单中选择open项,打开并阅读每一种寻址方式的源程序和链接命令文件。3、 创建新工程并添加文件,包括(.asm 源文件和.cmd链接命令文件)。4、 汇编、编译、链接生成输出文件并加载程序。5、 用单步方式执行程序,观察程序中各条

8、指令执行结果。6、 在程序中添加若干条类似这样的寻址方式的指令,并汇编、编译、链接、执行。3、 实验源程序1立即寻址Lab2a.asmLab2a.cmd;*; Immediate Addressing;*.title lab2a.asm.defstart.textstart:LD#100,A ;长立即数100加到累加器A,变为A=0x0064 LD#10h,4,A ;十六进制数10h左移4位后加载到累加器A ,A = 0x0100RSBX SXM ;状态寄存器复位 LD#32769,B ; 立即数32769转为16进制加载到B,B = 0x8001 LD#4000h,16,B ;十六进制数40

9、00h左移16位后加载到B,B = 0xhereBhere .end _2绝对寻址Lab2b.asmLab2b.cmd;*; Absolute Addressing;*.title lab2b.asm.defstartSAMPLE.set0060h .bssx,10 .datatable:.word1 .word2 .word3 .word4 .word5 .textstart:LD#4AB8h,A ;4AB8h加载到累加器A,A = 4AB8; STLA,SAMPLE STM#0060h,AR2 ;寄存器AR2指向首地址0x0060 RPT#4 ;重复运行4次 MVPDtable,*AR2+

10、 ;将程序存储器标号为table地址单元中数据传送到寄存器AR2中,AR2变为0x0065 RPT#4 MVKD#0061h,*AR2+ ;将地址为0061h的数据存储器中的数据传到AR2,AR2变为0x006A LDx,B ;B = 0x0001 LD0061h,A ; A = 0x0002hereBhere .end _3累加器寻址Lab2c.asmLab2c.cmd;*; Accumulator Addressing;*.title lab2c.asmSTACK .usect STACK,10h.defstart.bssx,10.datatable:.word1234h,5678h,9a

11、bch,0def0h.textstart:STM#STACK+10h,SP ; SP = 90LD#table,A ;A = 0xE010hSTM#0060h,AR2 ;AR2指向首地址0x0060hRPT#3 ; 重复运行三次READA*AR2+ ;立即数寻址:AR2指向的地址空间存入“word”LD#ADD_1,A ;A = 0xE00DhCALAA ;调用子程序ADD_1hereBhereADD_1:ADD#1,A ;A = 0xE00EhRET .end4直接寻址Lab2d.asmLab2d.cmd;*; Direct Addressing;*.title lab2d.asm.defs

12、tart.bssx,1.bssy,1.textstart: ST#0001, *(0180h) ;将数据0x0001存到地址为0x0180h的空间 ST#1000, *(01ffh) ;将数据1000b存到地址为0x01ffh的空间 ST#500, *(0200h) ;将数据500b存到地址为0x0200h的空间 LD#3,DP LDx,A ;A = 0x03E8 ;LD#4,DP ADDy,A ;A = 0x03E9hereBhere .end 结果可发现,程序执行没有达到预期的结果(A = x + y = 1500h)其原因是x和y存放在不同页面,执行“ADD y,A”指令时,DP = 3

13、,结果变成0180h单元中的数(0x0001)加至累加器A,故而结果为:A = 0x03E9. 5间接寻址Lab2e.asmLab2e.cmd;*; Indirect Addressing;*.title lab2d.asm.defstart.bssx,10hstart:ST#1000h,*(0060h) ;将数据0x1000存到地址为0x0060h的空间ST#2000h,*(0061h) ;将数据0x2000存到地址为0x0061h的空间ST#3000h,*(0062h) ;将数据0x3000存到地址为0x0062h的空间ST#4000h,*(0063h) ;将数据0x4000存到地址为0x

14、0063h的空间LD#1000h,A ;A = 0x1000hSTM#0060h,AR1 ;AR1首地址为0x0060hMAR*AR1+ ;修改AR1地址,使AR1指向0x0061h,间接寻址STM#2,AR0 ;AR0所在首地址存放2个地址跳变LD*AR1+0,A ;A = 0x2000hLD*AR1,B ;B = 0x4000hhereB here .end6 存储器映象寻址 Lab2f.asm Lab2f.cmd ;*; Memory-Mapped Register Addressing;*.title lab2f.asm.defstart.mmregs.textstart:STM#12

15、34h,AR1 STM#5678h,AR2STM#2,SWWSRLDMAR1,A ; A = 0x1234hMVMMAR1,AR3 ;AR3指向0x1234h,存储器印象寻址STLMA,AR2 ;AR2 指向0x1234hhereBhere .end7堆栈寻址Lab2g.asmLab2g.cmd;*; Stack Addressing;*.title lab2g.asm.defstartSTACK:.usectSTACK,10h.bssx,10h.textstart:STM #STACK+10h,SP x的首地址为0x0060hST#1234h,*(x) 0x0060h 存入 1234hST#

16、5678h,*(x+1) 0x0061h 存入 5678hST#9abch,*(x+2) 0x0061h 存入 9abchSTM#x,AR1RPT#2PSHD*AR1+ ;压栈,AR1指向0x0063h,SP = 8D;* ;堆栈寻址RPT#2 ;重复运行2次 0x0063h 存入 1234hPOPM*AR1+ 0x0064h 存入 5678h hereBhere 0x0065h 存入 9abch .end四、几种寻址方式代码举例: 1,立即数寻址:LD #80h,A 2,绝对寻址:MVDK 1000h, *AR5 MVPD TABLE, *AR5 PORTR FIFO, *AR5 LD *(BUFFER), A

温馨提示

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

评论

0/150

提交评论