机电113班 胡燕 2011012579
实验三 汇编的循环与分支
一、实验目的
1、了解DSP结构;
2、熟悉CCS开发环境;
3、熟悉TDB-C54X plus DSP实验箱的硬件环境;
4、掌握C54X plus汇编程序的循环与分支结构;
二、实验内容
1、C54X plus汇编初始化程序;
2、C54X plus数据区初始化程序;
3、C54X plus各种汇编循环源程序;
4、C54X plus各种汇编分支源程序;
三、实验要求
在数据区预留2个数据块,每块大小为1024字,分别为源数据块和目标数据块,将源数据块初始化为表1所示,在初始化程序中需用到循环和跳转指令,然后将源数据块复制到目标数据块,需用到跳转指令。运行程序,通过CCS→View→CPU Registers,观察各寄存器的值,通过CCS→View→Memory,观察片内各数据地址的值,上述各值应与源程序的结果一致。
四、实验代码
T .set 00EH
BRC .set 01AH
SWWSR .set 028H
CLKMD .set 058H
DDAT0 .set 02000H
DDAT2 .set 02400H
.def _main
.def _c_int00
.def _DELAY
.text
_c_int00:
RPT #1000H
NOP
LD #40H,DP
STM #4000H ,SP
ADDM #7FFH,*(SP)
ANDM #0FFFEH,*(SP)
SSBX INTM STM #07FFFH,SWWSR STM #06004H,CLKMD
LD #0FFFFH,A
;禁止中断
;置外部等待时间
CALL _DELAY
STM #087FBH,CLKMD
LD #0FFFFH,A
CALL _DELAY
B _main
_main: CALL INIT_DATA
LD #MOVE2,B
NOP
BACC B
_DELAY: STLM A,BRC
RPTB _DELAY1-1
NOP
NOP
NOP
NOP
_DELAY1:RET
INIT_DATA:
STM #DDAT0,AR2
RPTZ A,#07FFH
STL A,*AR2+
NOP
NOP
NOP
LD #0,A
STM #DDAT0,AR2
STM #3FFH,BRC
RPTB _INIT_DATA2-1
STL A,*AR2+
LDM AR2,B
AND #7,0,B
ADD #1,0,A
BC _INIT_DATA2-1,BNEQ
LDM AR2,B
AND #0FFF8H,0,A
AND #3FH,0,B
ADD #0F8H,0,A
XC 2,BEQ
AND #078H,0,A
XC 2,BEQ
ADD #8,0,A
NOP
_INIT_DATA2:
RET
MOVE2: STM #15,AR4
STM #DDAT2,AR3
STM #DDAT0,AR2
MOVE21:STM #7,BRC
PSHM AR3
RPTB MOVE22-1
RPT #7
MVDD *AR2+,*AR3+
ADDM #120,*(AR3)
NOP
MOVE22:POPM AR3
ADDM #8,*(AR3)
BANZ MOVE21,*AR4-
B $
五、实验结果
1、 STM #DDAT0,AR2 RPTZ A,#07FFH
描述从这个语句到_INIT_DATA2-1语句的功能
答:设置块重复的范围,从RPTB句后一句开始到_INIT_DATA2前一句作为块重复内容,重复次数为BRC次数3FFh次加1;块中嵌套一次分支转移,当满足B不等于0时,分支跳转至_INIT_DATA2的前一句,完成一次块重复,条件不满足时,连续执行程序,不进行跳转。
2、 STM #07FFFH,SWWSR 解释该语句实现的功能
答:YINWEI SWWSR中所有段设置值均为“1”,所以设置的延迟周期为7个。 实验总结
本次实验主要学习了块重复,寄存器的应用。本次实验需要整个来读懂程序,来处理
实验中的问题。本次实验主要了解到了DSP程序的基本构造,对教材第五章和第三张的内容更加了解。
本次实验过程中也遇见很多问题,刚接触完整的程序,对程序的整体把握不好,在老师的帮助下,我们小组都把实验过程中遇见的问题解决了。