第三章汇编语言程序设计实验编写程序,实现计算y=51iix的值。********************************************学习循环操作指令:BANZ********************************************.titleexample2.asm.mmregsSTACK.usectSTACK,10H;堆栈的设置.bssx,5;为变量分配6个字的存储空间.bssy,1.defstart.datatable:.word10,20,3,4,5;x1,x2,x3,x4,x5.textstart:STM#0,SWWSR;插入0个等待状态STM#STACK+10H,sp;设置堆栈指针STM#x,AR1;AR1指向xRPT#4;下一条被重复执行5遍MVPDtable,*AR1+;把程序存储器中的数据传送到数据存储器LD#0,A;A清零CALLSUM;调用求和函数end:BendSUM:STM#x,AR3;AR3指向xSTM#4,AR2;AR2=4loop:ADD*AR3+,A;*AR3+A--A,然后AR3+BANZloop,*AR2-;如果AR2的值不为0,则跳到loop处;;否则执行下一条指令STLA,*(y);把A的低16位赋给变量yRET.end6、编写链接配置文件:只有汇编源程序是不够的,一个完整的DSP程序至少包含三个部分:主程序、中断向量表、链接配置文件(*.cmd)。这里先介绍一下链接配置文件。链接配置文件有很多功能,这里先介绍最常用的也是必须的两条:1.存贮器的分配2.标明程序入口。由于每个程序都需要一个链接配置文件,每个程序的链接配置文件根据实际情况的需要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文件都可以参考光盘中相应的例程来完成:/*example2.cmd*/vectors.obj/*中断向量的目标文件*/example2.obj/*产生目标文件*/-oexample2.out/*产生可执行下载文件,文件名可以根据不同项目而定*/-mexample2.map/*产生存储器映射文件,文件名可以根据不同项目而定*/-estart/*程序入口*/MEMORY{PAGE0:/*定义程序存贮区*/EPROM:org=0090Hlen=0F70H/*定义EPROM区,起始地址0090H,长度0F70H*/VECS:org=0080Hlen=0010H/*定义VECS区,起始地址0080H,长度0010H*/PAGE1:/*定义数据存贮区*/SPRAM:org=1000Hlen=1000H/*定义SPRAM区,起始地址1000H,长度1000H*/DARAM:org=2000Hlen=2000H/*定义DARAM区,起始地址2000H,长度2000H*/}SECTIONS{.text:EPROMPAGE0/*将.text段映射到PAGE0的EPROM区*/.data:EPROMPAGE0/*将.text段映射到PAGE0的EPROM区*/.bss:SPRAMPAGE1/*将.text段映射到PAGE1的SPRAM区*/STACK:DARAMPAGE1/*将.text段映射到PAGE1的DARAM区*/.vectors:VECSPAGE0/*将中断向量表定位到PAGE0的VECS区*/}7、编写中断向量表文件/*vectors.asm*/.titlevectors.asm/*中断向量表的文件名*/.refstart/*引用外部定义的标号*/.sect.vectors/*定义初始化的段名*/Bstart/*引用start*/.end实验二堆栈的使用方法一、实验目的掌握堆栈的使用方法。5、编写源程序:在工程管理器中双击example3.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:********************************************学习堆栈的使用方法********************************************.titleexample3.asm.mmregssize.set100stack.usectSTK,size;堆栈的设置.bsslength,10H.defstart.textstart:STM#0,SWWSR;插入0个等待状态STM#stack+size,SP;设置堆栈的指针LD#-8531,ASTM#(length-0FA0),AR1MVMMSP,AR7loop:STLA,*AR7-BANZloop,*AR1-.end6、编写链接配置文件:参照实验一,需要更改的地方如下:更改前更改后example2.objexample3.obj-oexample2.out-oexample3.out-mexample2.map-mexample3.map7、编写中断向量表文件参照实验一,可不作修改。8、对项目进行编译和链接:把example3.asm、vectors.asm、example3.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件。实验三加减法和乘法运算编写程序,分别实现计算z=x+y-w、y=mx+b、y=x1×a2+x2×a2、y=41iiixa。********************************************计算z=x+y-w********************************************.titleexample4.asm.mmregsSTACK.usectSTACK,10H;堆栈的设置.bssx,1;为变量分配4个字的存储空间.bssy,1.bssw,1.bssz,1.defstart.datatable.word10,26,23;x,y,w.textstart:STM#0,SWWSR;插入0个等待状态STM#STACK+10H,SP;设置堆栈指针STM#x,AR1;AR1指向xRPT#2MVPDtable,*AR1+;把程序存储器中的数据移动到数据存储器CALLSUMBend:BendSUMB:LD*(x),AADD*(y),ASUB*(w),ASTLA,*(z)RET.end6、编写链接配置文件:参照实验一,需要更改的地方如下:更改前更改后example2.objexample4.obj-oexample2.out-oexample4.out-mexample2.map-mexample4.map7、编写中断向量表文件参照实验一,可不作修改。8、对项目进行编译和链接:把example4.asm、vectors.asm、example4.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件。实验四重复操作********************************************学习块重复操作指令:RPTB********************************************.titleexample9.asm.mmregsSTACK.usectSTACK,10H.bssx,5.defstart.textstart:STM#x,AR1LD#2H,A;将数组每个元素初始化为2RPT#4STLA,*AR1+;把A的低16位赋给AR1指向的变量x,然后AR1+1LD#1,16,B;为每个元素加1作准备STM#4,BRCSTM#x,AR4RPTBnext-1;next-1为循环结束地址add*AR4,16,B,ASTHA,*AR4+next:LD#0,Bend:Bend.end6、编写链接配置文件:参照实验一,需要更改的地方如下:更改前更改后example2.objexample9.obj-oexample2.out-oexample9.out-mexample2.map-mexample9.map7、编写中断向量表文件参照实验一,可不作修改。8、对项目进行编译和链接:把example9.asm、vectors.asm、example9.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件。实验五数据块传送一、实验目的掌握各种数据块传送操作指令。*************************************************学习数据块传送指令:MVPD、MVDD*************************************************.titlezhao3.asm.mmregsSTACK.usectSTACK,30H.bssx,20.bssy,20.datatable:.word1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.defstart.textstart:STM#x,AR1RPT#19MVPDtable,*AR1+;程序存储器传送到数据存储器STM#x,AR2STM#y,AR3RPT#19MVDD*AR2+,*AR3+;数据存储器传送到数据存储器end:Bend.end6、编写链接配置文件:参照实验一,需要更改的地方如下:更改前更改后example2.objZhao3.obj-oexample2.out-ozhao3.out-mexample2.map-mzhao3.map7、编写中断向量表文件参照实验一,可不作修改。8、对项目进行编译和链接:把zhao3.asm、vectors.asm、zhao3.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件。9、装载可执行文件:要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:File-LoadPrograme再选择生成的zhao3.out文件就可以将程序装载到DSP的内部存储器中。实验六双操作数乘法一、实验目的掌握各种双操作数乘法指令。编写程序,实现y=201iiixa。***用单操作数指令方案实现**y=(a1*x1+a2*x2+···a19*x19+a20*x20)****************************************************.titlezhao4.asm.mmregsSTACK.usectSTACK,30H.bssa,20.bssx,20.bssy,2.datatable:.word1,2,3,4,5,6,7,8,9,10,11.word12,13,14,15,16,17,18,19,20.word21,22,23,24,25,26,27,28.word29,30,1,2,3,4,5,6,7,8,9,10.defstart.textstart:STM#a,AR1RPT#39MVPDtable,*AR1+LD#0,BSTM#a,AR2STM#x,AR3STM#19,BRCRPTBdone-1LD*AR2+,T;单操作数指令MPY*AR3+,A;单操作数指令ADDA,Bdone:STHB,*(y)STLB,*(y+1)end:Bend.end6、编写链接配置文件:参照实验一,需要更改的地方如下:更改前更改后example2.objZhao4.obj-oexample2.out-ozhao4.out-mexample2.map-mzhao4.map7、编写中断向量表文件参照实验一,可不作修改。8、对项目进行编译和链接:把zhao4.asm、vectors.asm、zhao4.cmd依次添加到项目后,点击Pr