实验一 集成开发环境 CCS 应用基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一集成开发环境CCS 应用基础
一、实验目的
1. 通过创建一个简单的应用工程,初步熟悉Code Composer Studio(简称CCS)的集成开发环境(IDE)及其工具的使用。
2. 掌握汇编语言源程序的基本框架和编写方法,了解CCS的工程结构以及编译、汇编、连接、运行和调试的基本过程。
3. 了解ST0、ST1的控制位对计算过程的控制以及计算结果对状态位的影响。
二、实验内容
1. 学习使用CCS集成开发环境(IDE)的各种工具。
包括下列内容:
(1)编辑、汇编和连接。
(2)查看和修改存储器映像寄存器的内容。
(3)查看和修改ST0、ST1 及PMST 的有关位。
(4)查看和修改程序存储器和数据存储器的内容。
(5)断点操作。
(6)运行程序(单步运行、连续运行和断点运行)。
2. 观察并理解COFF段结构的划分及存储空间的分配。
3. 观察控制位SXM、OVM、C16及FRCT置1或清0对执行结果的影响。
4. 观察标志位TC、C、OVA及OVB的变化情况。
三、程序分析
1. 说明3个文件的作用及接口情况,说明各个文件中伪指令的作用。
①text1.asm文件为实验主程序。
Vectors.asm文件用于处理中断,在本程序中规定了上电复位的跳转地址,并屏蔽其他用不到的中断。
Test1.cmd文件是存储器分配说明文件,主要功能是指定工程中的各段分配到那段存储器中,比如有片内RAM(起始地址,大小)和SDRAM等,为连接器提供段定位信息。
②EPROM程存空间为从E000h开始的100h个存储单元,SPRAM数据空间为从0060h开始的32个存储单元,VECS程存空间为从FF80h开始的128个存储单元,DARAM数据空间为从0080h开始的256个存储单元。设置的.text段和.data段在0页EEPROM存储空间,.bss 段在1页SPRAM存储空间,STACK段在1页DARAM存储空间,Vectors段在0页VECS存储空间。
③text1.asm中使用了以下伪指令:
.title “example.asm”允许汇编器在每页顶部打印标题
.mmregs 将存储映射寄存器送入符号表中
.usect “STACK”为未初始化变量保留存储空间的自定义段STACK
.def _c_int00 在当前模块中定义符号_c_int00,使其在其他模块中可使用
.text 设置已初始化段.text
.end 终止汇编,放置在源程序最后一行
Vectors.asm中使用了以下伪指令:
.ref _c_int00 在模块test1.asm中定义的符号_c_int00,在当前模块中可用
.sect “vectors”设置自定义已初始化段vectors
.space 124*16 在当前段中保留指定的位,共124位*16bit
.end 终止汇编,放置在源程序最后一行
Test1.cmd中使用了以下伪指令:
.text 设置已初始化段.text
.data 设置已初始化段.data
.bss 设置未初始化段.bss
2. 分析主程序的结构和功能,对每条指令进行注释,写出执行结果。
主程序为顺序结构,功能、注释、结果见下:
;************************************************************************;
; 实验一集成开发环境CCS应用基础
;************************************************************************ .title "example1.asm" ;允许汇编器在每页顶部打印标题"example1.asm"
.mmregs ;使能存储器映像寄存器
stack .usect "STACK",10h
.def _c_int00
;------------------------------------------------------------------------------
.text
_c_int00:
stm # stack+10h, SP ;设置堆栈指针
stm #0x0000, SWWSR ;所有存储器未加软件延迟
;================================================
stm #0x70,AR2 ;0x70→AR2
st #0xff80,*AR2 ;0xff80→0x70h
;================================================
;观察控制位SXM的作用
;当SXM=0时,进行无符号数的加载
rsbx SXM ;SXM=0时,((AR2))→A
nop
ld *AR2, A ;(A)=(00 0000 FF80)
;------------------------
;当SXM=1时,进行有符号数的加载
ssbx SXM ;SXM=1时,((AR2))→A
nop
ld *AR2, A ;(A)=(FF FFFF FF80)
;================================================
;================================================
;观察控制位OVM的作用
;当OVM=0时,对溢出不进行处理
rsbx OVM ;OVM=0时,不处理溢出
ld #0x7fff, 16, B ;0x7fff左移16位后送B,(B)=00 7FFF 0000 add #0x7fff, 16, B ;(B)=(00 FFFE 0000)0x7fff左移16位后加到B ;------------------------
;当OVM=1时,对溢出进行处理
ssbx OVM ;0VM=1时,处理溢出