汇编的数据访问.docx
《汇编的数据访问.docx》由会员分享,可在线阅读,更多相关《汇编的数据访问.docx(17页珍藏版)》请在冰豆网上搜索。
汇编的数据访问
实验报告
实验名称汇编的数据访问
课程名称DSP
院系部:
电院专业班级:
学生姓名:
学号:
同组人:
实验台号:
指导教师:
成绩:
实验日期:
华北电力大学(北京)
实验报告要求:
一、实验目的及要求:
实验目的
1.了解DSP结构;
2.熟悉CCS开发环境;
3.熟悉TDB-C54XplusDSP实验箱的硬件环境;
4.掌握C54Xplus存储区数据访问的方法。
实验要求
在程序区预留2个数据块,每块大小为128字;在数据区预留4个数
据块,每块大小为128字,分别将数据区的数据移动到程序区,将程序区的
数据移动到数据区,将数据区的数据移动到数据区,运行程序,
通过CCS‡View‡CPURegisters,观察各寄存器的值,
通过CCS‡View‡Memory,观察片内程序区和数据区的值,
上述各值应与源程序的结果一致。
二、仪器用具:
仪器名称
规格/型号
数量
备注
PC机
1
装有CCS软件
三、实验原理(填写程序流程图)
四、实验步骤(包括原理图、程序、实验结果与数据处理)
实验结果:
1#程序区地址=0x1f00,初始化为全0
2#程序区地址=0x1f80,初始化为全0
1#数据区地址=0x2000,初始化为0-127
2#数据区地址=0x2080
3#数据区地址=0x2100
4#数据区地址=0x2180
1.将1#数据区的内容写到1#程序区
执行前:
执行后:
2.将1#程序区的内容写到2#数据区
执行前:
执行后:
3.将2#数据区的内容写到2#程序区
执行前:
执行后:
4.将2#程序区的内容写到3#数据区
执行前:
执行后:
5.将3#数据区的内容写到4#数据区
执行前:
执行后:
源程序:
T.set00EH
BRC.set01AH
SWWSR.set028H
CLKMD.set058H
PADD.set1F00H;PROGRAM_MEMORYADDRESS
DADD.set2000H;DATA_MEMORYADDRESS
.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)
SSBXINTM;禁止中断
STM#07FFFH,SWWSR;置外部等待时间
STM#06004H,CLKMD
LD#0FFFFH,A
CALL_DELAY
STM#087FBH,CLKMD
LD#0FFFFH,A
CALL_DELAY
B_main
_main:
CALLINIT_DATA;;初始化程序区为0,数据区为0-127
NOP
NOP
CALLWRITE_A;;将1#数据区的内容写到1#程序区
NOP
NOP
CALLREAD_A;;将1#程序区的内容写到2#数据区
NOP
NOP
CALLMOVE_DP;;将2#数据区的内容写到2#程序区
NOP
NOP
CALLMOVE_PD;;将2#程序区的内容写到3#数据区
NOP
NOP
CALLMOVE_DD;;将3#数据区的内容写到4#数据区
NOP
NOP
B$
_DELAY:
STLMA,BRC;设置块循环计数器
RPTB_DELAY1-1
NOP
NOP
NOP
NOP
_DELAY1:
RET
INIT_DATA:
STM#PADD,AR2
RPTZA,#03FFH
STLA,*AR2+
NOP
NOP
NOP
LD#0,A
STM#DADD,AR2
STM#127,BRC
RPTB_INIT_DATA1-1
STLA,*AR2+
ADD#1,0,A
NOP
NOP
_INIT_DATA1:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ThisroutineusestheMVDDinstructiontomove
;informationindatamemorytootherdatamemory
;locations.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVE_DD:
STM#DADD+100h,AR2;Loadpointertosourceindatamemory.
STM#DADD+180h,AR3;Loadpointerto
;destinationindatamemory.
RPT#127;Move128value.
MVDD*AR2+,*AR3+
RET
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ThisroutineusestheMVDPinstructiontomoveexternal
;datamemorytointernalprogrammemory.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
MOVE_DP:
STM#DADD+80h,AR1;Loadpointertosourceindatamemory.
RPT#127;Move128toprogrammemoryspace.
MVDP*AR1+,#PADD+80H
RET
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ThisroutineusestheMVPDinstructiontomoveexternal
;programmemorytointernaldatamemory.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVE_PD:
STM#DADD+100h,AR1;Loadpointertodestinationindatamemory.
RPT#127;Move128wordsfromexternal
MVPD#PADD+80h,*AR1+;programtointernaldatamemory.
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ThisroutineusestheREADAinstructiontomoveexternal
;programmemorytointernaldatamemory.Thisdiffers
;fromtheMVPDinstructioninthattheaccumulator
;containstheaddressinprogrammemoryfromwhichto
;transfer.Thisallowsforacalculated,ratherthan
;pre-determined,locationinprogrammemorytobe
;specified.READAcanaccesslocationsinprogrammemory
;beyond64Kwordboundary
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READ_A:
LD#PADD,A
STM#DADD+80h,AR1;Loadpointertodestinationindatamemory.
RPT#127;Move128wordsfromexternal
READA*AR1+;programtointernaldatamemory.
RET
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ThisroutineusestheWRITAinstructiontomovedata
;memorytoprogrammemory.Thecallingroutinemust
;containthedestinationprogrammemoryaddressinthe
;accumulator.WRITAcanaccessprogrammemoryaddress
;beyond64Kwordboundary
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE_A:
LD#PADD,A
STM#DADD,AR1;Loadpointertosourceindatamemory.
RPT#127;Move128wordsfromdata
WRITA*AR1+;memorytoprogrammemory.
RET
.end
五、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见。
)
指导教师签字:
年月日