DSP汇编语言初步资料
- 格式:ppt
- 大小:417.00 KB
- 文档页数:22
实验二 DSP汇编语言编程基础一、 实验目的1、了解DSP的寻址方式;2、了解DSP的汇编语言与C语言混合编程。
二、 实验器材1、安装有CCS的PC机一台;三、 实验内容1、建立一个工程;2、用汇编语言编程实现一个可被C程序调用的例程。
四、 实验步骤1、汇编语言和C语言混合编程:(1) 运行CCS,建立一个工程,取名exp2a,并保存到c:\ti\myprojects\xxx\Experiment2\目录下。
(2) 编辑如下C文件,取名exp2a.c并保存到c:\ti\myprojects\xxx\Experiment2\exp2a\目录。
/* Assembly routine */extern int sum(int *);/* define x[] as global array */int x[2]={0x1234,0x4321};/* define result s as global variable */int s;void main(){s = sum (x); /* return sum product */}(3) 编辑如下汇编文件,取名exp2_sum.asm并保存到c:\ti\myprojects\xxx\Experiment2\exp2a\目录。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * ** exp2_sum.asm SUM subroutine* called by exp2a.c* Input: Array pointer* Output: Return sum result in T0* * * * * * * * * * * * * * * * * * * * * * * * * * * * *.global _sum_summov *AR0+,AC0 ; AC0 = x[1]add *AR0+,AC0 ; AC0 = x[1]+x[2]mov AC0,T0ret ; Return T0.end(4) 编辑如下链接命令文件,取名link.cmd并保存到c:\ti\myprojects\xxx\Experiment2\exp2a\目录。
CCS的使用与汇编语言程序设计入门一、实验目的1、了解DSP开发系统的组成和结构;2、熟悉DSP 集成开发环境;3、掌握TMS320C54X程序空间的分配;4、掌握TMS320C54X数据空间的分配;5、掌握操作TMS320C54X存储器的相关指令;6、掌握TMS320C54X相关运算的指令;7、TMS320C54X相关程序流程控制类的指令;8、熟悉DSP开发软件的使用;二、实验内容设计一汇编程序,实现从一组所给的数的累加,并将结果送数码管显示。
三、实验设备硬件:DSP实验与开发系统、JTAG仿真器、PC机Pentumn100以上。
软件:PC机操作系统win98或以上、CCS集成开发环境、仿真器驱动程序。
四、实验步骤1)连接好 DSP开发系统,运行CCS软件;2)用汇编语言设计一程序及相应的链接命令文件(.CMD文件):, 或输入参考程序及链接命令文件(.CMD文件)(附后),使一组所给的数累加,并将结果送数码管显示。
3)新建一个工程;4)向工程添加汇编程序及链接命令文件(.CMD文件):;5)编译、链接工程工程中的所有文件,生成out文件;6)装载上述out文件,并运行;五、程序汇编语言程序:.title "mac.asm".mmregs.def startSIZE .set 100stack .usect "STK", SIZESEGSEL .set 0001b ;数码管使能控制数据,此处第0数码管选通SEGSELPORT .set 0h ;数码管使能控制口地址SEGPORT .set 1h ;数码管数据口地址.bss SEG_DA TA,10 ;用于存放从SEG_V ALUE装载进来的数码管编码数据.bss x,5 ;用于存放从table0装载进来输入数据.bss z,1 ;用于存放输出数据(计算结果).datatable0: .word 1,2,3,4,5 ;待计算的一组输入数据;以下用于存放数码管编码数据,分别控制数码管显示0~9SEG_V ALUE .word 077h,014h,0b3h,0b6h,0d4h,0e6h,0e7h,034h,0f7h,0f6H.textstart:stm #stack+SIZE, SP;;;;;;;;;C5402 初始化;;;;;;;;;;;;;;;stm #2b40h,ST1;STM #2B40H,ST1;stm #1e00h,ST0;stm #02024h,PMST ;IPTR=0010,0000,0 ->RESET=2000Hstm #0h,SWWSRstm #04007h,CLKMD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;stm #SEG_DA TA, AR3 ;将数码管编码数据从SEG_V ALUE装入SEG_DATA rpt #9mvpd SEG_V ALUE, *AR3+stm #x,AR1 ;从空间table0装载输入数据进入空间xrpt #4mvpd table0,*AR1+call sum ;调用累加子程序ld #SEGSEL,B ;第0个数码管选通portw *(0bH), SEGSELPORTstlm A,AR0 ;累加子程序返回的计算结果转入AR0stm #SEG_DA TA,AR7 ;数码管编码数据区首地址送AR7nopmar *AR7+0 ;首地址(AR7中内容)+偏移地址(AR0中内容)nopportw *AR7,SEGPOR T ;让数码管显示计算结果end: b endsum: stm #x,AR3 ;累加子程序rptz A,#4add *AR3, Astm #z,AR4stl A,*AR4ret.end链接命令文件(.CMD文件):mac.obj-o mac.out-m mac.map-e startMEMORY{PAGE 0:EPROM :org=02000h,len=200hPAGE 1:SPRAM :org=0060h,len=001fhDARAM :org=0080h,len=100h}SECTIONS{.text :>EPROM PAGE 0.data :>EPROM PAGE 0.bss :>SPRAM P AGE 1.stack :>DARAM PAGE 1}六、实验现象与结果:运行程序后, 用CCS观察相应的存储单元(参考程序中用z), 该单元存储了所给一组数的累加值, 且与数码管显示结果一致。