




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
n 计算:y=(x+y)*8-w.title ex41.asm.mmregsSTACK.usect STACK, 10H.bss x,1.bss y,1.bss w,1.bss z,1.def _c_int00.datatable:.word 6,7,9.text_c_int00:STM #0, SWWSR ;插入0个等待状态STM #STACK+10H, SP ;设置堆栈指针STM #x, AR1 ;AR1指向xRPT #2MVPD table, *AR1+; 从程序存储器传送3个值到数据存储器LD x,AADD y,A ;A=x+yLD A,3 ;A=(x+y)*8SUB w, A ;A=(x+y)*8-wSTL A, zend:B end.endn 计算:y=x+y-w.title ex42.asm .bss x,1.bss y,1.bss w,1.bss z,1.def _c_int00.datatable:.word 20H,20H,20H.text_c_int00:RSBX CPL ;CPL=0 方式LD #1,DP STM #x,AR1 ; 将x的地址存储到AR1中RPT#2MVPDtable,*AR1+ ;从程序存储器传送到数据存储器LDx,A ;将x值装入累加品中。ADDy,ASUBw,ASTLA,z end:Bend .endn 计算y=a*x+b.title ex43.asm ;需.asm.bssa,1.bssx,1.bssb,1.bssy,1.def _c_int00.datatable: .word1,2,3.text_c_int00:RSBX CPL ;CPL=0 方式LD #1,DP STM #a,AR1 RPT #2 MVPD table,*AR1+ LD #0,BLD a,T MPY x,B ADD b,B STL B, yend: B end .endn 用双操作数指令实现y=ax+b.title ex43_b.asm ; ;需.bssa,1.bssx,1.bssb,1.bssy,1.def _c_int00.datatable:.word2,2,3.text_c_int00: RSBX CPL ;CPL=0 方式LD #1,DP STM #a,AR1 ; 将a的地址存储到AR1中 RPT #2 ;重复执行下面的指令3次。 MVPD table,*AR1+ ;从程序存储器传送到数据存储器 STM #a,AR2 STM #x,AR3 MPY *AR2,*AR3,A ; A=AR2*AR3 (双操作数指令实现)ADDb,ASTLA,y end: B end .endn 计算y=x1*a1+x2*a2.title dsp_5_add1.asm ; y=x1*a1+x2*a2.bss x1,1.bss x2,1.bss a1,1.bss a2,1.bss y,2.def _c_int00.datatable:.word 2,2,2,2.text_c_int00:RSBX CPL ;CPL=0 方式LD #1,DP STM #x1, AR1 ; 将x1的地址存储到AR1中RPT#3 ;重复执行下面的指令3次。MVPDtable,*AR1+ ;从程序存储器传送到数据存储器LD x1,T ;将x1值装入T中。 MPY a1,A ; A=x1*a1 LD x2,T ;将x2值装入T中。 MAC a2,A ; A=A+x2*a2 操作数与T寄存器相乘后加到A STL A, y ;存A的低16位到y STH A, y+1 ;存A的高16位到y+1end:Bend.endn 求一个数的绝对值,并送回原处.title ex45.asm.mmregsSTACK.usect STACK, 10H.bss x,1.def _c_int00.datatable:.word -2.text_c_int00: STM #0, SWWSR ;插入0个等待状态RSBX CPL ;CPL=0 方式;LD #1,DP LD #0, DPSTM #STACK+10H, SP ;设置堆栈指针 STM #x, AR1 ;AR1指向xMVPD table, *AR1; 从程序存储器传送1个值到数据存储器LD *AR1, ABC end, AGT ;若A0 ,则转移到end, 否则继续向下执行ABS A STL A, x ; *AR1 ;注意: DP的页码end:B end.endn 比较两数data0与data1的大小。 .title ex46.asm ; 比较两数data0与data1的大小。 .mmregs data0.set 8data1.set 2.bss data2, 1 .def _c_int00 .text_c_int00: RSBX CPL ;CPL=0 方式 LD #1,DP LD #data0, 16,A ;A(31-16) ADD #data1,A ;A(15-0) CMPS A, data2end: Bend .endn 求y=a1*x1+a2*x2+a3*x3+a4*x4.title dsp_5_C.asm ; y=x1*a1+x2*a2+x3*a3+x4*a4.bss a,4.bss x,4.bss y,2.def _c_int00.datatable:.word 4,3,2,1 ; a1,a2,a3,a4.word 1,2,3,4 ; x1,x2,x3,x4.text_c_int00:RSBX CPL ;CPL=0 方式LD #1,DP STM #a,AR1 ; 将x1的地址存储到AR1中RPT#7 ;重复执行下面的指令8次。MVPDtable,*AR1+ ;从程序存储器传送到数据存储 STM #a,AR3 STM #x,AR4 RPTZ A,#3 MAC *AR3+,*AR4+,A ;A=A+(AR3*AR4) 两个操作数相乘后加到A STL A, y ;存A的低16位到y STH A, y+1;存A的高16位到y+1end:Bend.endn 求找出乘积中的最大值 x1*a1,x2*a2,x3*a3,x4*a4.title dsp_5_D.asm;找出乘积中的最大值 x1*a1,x2*a2,x3*a3,x4*a4.bss a,4.bss x,4.bss y,1.def _c_int00.datatable:.word 1,5,3,4 ; a1,a2,a3,a4.word 8,6,7,2 ; x1,x2,x3,x4.text_c_int00:RSBX CPL ;CPL=0 方式LD #1,DP STM #a,AR1 ; 将x1的地址存储到AR1中RPT#7 ;重复执行下面的指令8次。MVPD table,*AR1+ ;从程序存储器传送到数据存储器 STM #a,AR1 STM #x,AR2 STM #2,AR3 ; 余下的3次。循环3次 LD *AR1+,T MPY *AR2+,A;将第1个乘积放进Aloop LD *AR1+,T MPY *AR2+,B MAX A; A=max(A,B) BANZ loop ,*AR3- STL A, y ;存A的低16位到y(最大值存入y)end:Bend.endn 求x1+x2+x3+x15 n .title dsp_5_F.asmn ; 求和 x1+x2+x3+x4+.+x15n ; 用循环嵌套方式实现n .mmregsn .bss x,15n .bss y,1n .def _c_int00n .datan table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ;和为120.text_c_int00: RSBX CPL ;CPL=0 方式 LD #1,DP STM #x,AR1 ;设置循环次数 RPT #14 ;重复5次 MVPD table,*AR1+ ;将table中的5个数据,复制到数据存储器中。 LD #0,A ;将A清零 STM #x ,AR3 ;将第一个数据首地址装入AR3 STM #2,BRC ;程序块被重复3次 RPTB next-1 RPT #4;内循环重复5次 ADD *AR3+,Anext: STL A,yend: B end .endn 初始化数组x5=1,2,3,45.title dsp_5_21.asm ;初始化数组x5=1,2,3,45STACK.usectSTACK,10H.bssx,5.datatable:.word1,2,3,4,5.def _c_int00.text_c_int00: RSBX CPL ;CPL=0 方式LD #1,DP STM#x,AR1 ;指向 XRPT#4 ;重复5次MVPDtable,*AR1+end:Bend.endn 将数据存储器中数组x20中的数据复制到数组y20中n .title dsp_5_G.asmn .mmregs n .bss x, 20n .bss y, 20n .data n table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20n .def _c_int00n .textn _c_int00:RSBX CPL ;CPL=0 方式 LD #1,DP STM #x, AR1 RPT #19 ;重复20次 MVPD table, *AR1+; 程序存储器传送到数据存储器 STM #x, AR2 STM #y, AR3 RPT #19 ;重复20次 MVDD *AR2+, *AR3+ ; 数据存储器传送到数据存储器end: Bend .endn 程序存储器传送到数据存储器.titledsp_5_22.asm ;累加器寻址 .bss y, 20 .data table: .word 7,7,7,8,8,8,7,7,9,10,11,12,13,14,15,16,17,18,19,20 .def _c_int00 .text_c_int00: STM table, AR1 ;将table的地址存入AR1 LDM AR1, A ; AR1- A STM #y, AR3 RPT #19 ;重复20次 READA *AR3+ ; 程序存储器传送到数据存储器 end: Bend .endn 编写一段程序,首先对数组x20赋值,再将数据存储器中的数组x20复制到数组y20。.titledsp_5_23.asm ;累加器寻址 .bss x, 20 .bss y, 20 .data table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 .def_c_int00 .text_c_int00: RSBX CPL ;CPL=0 方式LD #1,DP STM #x, AR1 RPT #19 MVPD table, *AR1+; 程序存储器传送到数据存储器 STM #x, AR2 STM #y, AR3 RPT #19 MVDD *AR2+, *AR3+ ; 数据存储器传送到数据存储器end: Bend .endn 计算y=x1+x2+x3+x4+x5.title prg3.asm ; 求和 x1+x2+x3+x4+.+xn.mmregs.bss x,5.bss y,1.def _c_int00.datatable: .word 1,2,2,2,7.text_c_int00: STM #x,AR1 ;设置循环次数 RPT #4 ;重复5次 MVPD table,*AR1+ ;将table中的5个数据,复制到数据存储器中。 LD #0,A ;将A清零 STM #x ,AR3 ;将第一个数据首地址装入AR3 STM #4, AR2 ;将循环次数装入AR2loop: ADD *AR3+, A ;用间接寻址方式,将第1个数据与A相加,然后AR3+ BANZ loop, *AR2- ;AR2不等于0就循环。 STL A,yend: B end .endn 求1+2+3+10.title prg4.asm ; 求和 1+2+3+.+10.mmregs.bss y,1.def _c_int00.text_c_int00: LD #0,A ;将A清零(计数器) LD #0,B ;累加单元清零 STM #9, AR2 ;将循环次数装入AR2loop: ADD #0001, A ;用立即寻址方式,将第1个数据与A相加. ADD A,B BANZ loop, *AR2- ;AR2不等于0就循环。 STL B,yend: B end .endn 求y=x1*a1+x2*a2n .title prg5.asm ; y=x1*a1+x2*a2n .mmregsn .bss x1,1n .bss x2,1n .bss a1,1n .bss a2,1n .bss y,2n .def _c_int00n .datan table:.word 1,5,6,7.text_c_int00:STM #x1,AR1 ; 将x1的地址存储到AR1中RPT#3 ;重复执行下面的指令4次。MVPDtable,*AR1+ ;从程序存储器传送到数据存储器 LDx1,T ;将x1值装入T中。 MPY a1,A ; A=x1*a1 LDx2,T ;将x2值装入T中。 MAC a2 ,A ; A=A+x2*a2 操作数与T寄存器相乘后加到A STL A, y ;存A的低16位到y STH A, y+1 ;存A的高16位到y+1end:Bend.end1、2、3、4、(一).在CCS中输入以下指令序列,说明红框区中指令的作用,将指令中的#2005H用自己学号的后4位替换。运行该程序后,将数据存储区的结果截屏。注意要修改文件名。 .title sy2_xinxi1012_20218_1.asm .def _c_int00x .set 50y .set AR4 ;y是AR4的别名sample .set 65HN .set 512 ;定义常数nzg1 .set 1nzg2 .set 2nzg3 .set 3 .text_c_int00: STM #0218H,sample 将立即数0218H存入60H; STM #0512H, AR4 将立即数0512H存入辅助寄存器AR4; MVMM y,sp将辅助寄存器AR4的内容存入SP; STM #nzg1, AR0将立即数1存入辅助寄存器AR0; STM #nzg2, AR1将立即数2存入辅助寄存器AR1; STM #nzg3, AR2将立即数3存入辅助寄存器AR2; STM #N, AR3将立即数N存入辅助寄存器AR3; STM #x, AR5将立即数X存入辅助寄存器AR5; ST #1234H,*AR1将立即数1234H存入辅助寄存器AR1所存单元内容end: B end .end (二)在CCS中输入以下指令序列,说明红色框中各指令的作用。该程序汇编后分为几个段。将各段的存储器图截屏。;例 段伪指令的使用 .title sy2_xinxi1012_20218_2.asm .def _c_int00 定义标号_c_int00; .text 代码段定义; .word 1,2 将text段初始化为1,2; .word 3,4 将text段初始化为3,4; .data 数据段定义; .word 9,10 数据段初始化9,10; .word 11,12 数据段初始化11,12; .sect var_defs var_defs段定义; .word 17,18 将text段初始化为17,18; .data 数据段定义; .word 13,14 将text段初始化为13,14; .bss sym,19 为sym保留19个初始化的空间; .word 15,16 将text段初始化为15,16; .text 代码段定义; .word 5,6 将text段初始化为5, 6;usym .usect xy,20 为usym保留20个字的初始化空间,并定义为xy; .word 7,8 将text段初始化为7, 8;end: B end ;结束 .end(三)在CCS中输入以下指令序列,说明红色指令的作用, 写出累加器B的结果。 .title sy2_xinxi1012_20218_3.asm .def _c_int00 .text_c_int00: STM #7711H,60H将立即数7711H存入60H; STM #88H,61H将立即数88H存入61H;SUBS 61H,A将累加器A的数据减去61H中的数据存入累加器A中; DLD 60H,B将60H单元的内容装入累加器B;end: B end .end(四)已知(60)=55h, (61)=80h. 运行下列程序后,B等于多少?编程在CCS中调试.提示:要写出完整结构,才能在ccs中调试,完整结构参见第三题。注意:要为60H,61H地址单元赋值。 .title sy2_xinxi1012_20218_4.asm .def _c_int00 .text_c_int00: STM #55H,60H STM #80H,61H RSBX CPL LD #0,DP LD 60h, 16, A ADD 61h,A,B ADD #5,4, B SUB 60h,2,Bend: B end .end(五)在CCS中输入以下指令序列,说明以下指令序列中,M开头的各指令的作用及寻址类别, 将目的操作数的值标注在每条指令的右边。注意文件名的修改。 .title sy2_xinxi1012_20218_5.asm .def _c_int00sample .set 65HT .set 000Eh .text_c_int00: STM #00A0H,sample STM #0070H, AR2 STM #075H, AR3 STM #0080H, AR4 MVKD 65H,*AR2数据存储器寻址;将65H数据单元的内容移到辅助寄存器AR2数据存储单元;*AR2=0000H MVDD *AR2,*AR3数据存储器寻址;将辅助寄存器AR2数据单元移到辅助寄存器AR3数据单元;*AR3=0000H MVDM 65H,AR4数据存储器寻址;将65H数据单元的内容复制到辅助寄存器AR4数据存储单元; AR4=0000H MVDM sample,T数据存储器寻址;将00A0H的数据复制到T中;T=00A0H end: B end .end1.堆栈操作. 参考以下范例,编写一个具有50单元的堆栈, 将其中存储单元填充自已学号的后4位16进制数。如:某学生学号为2346, 对应用的16进制数为:2346H。将存储器的中的数据截屏,取名为:sy3_xx1011_学号_1.jpg .title sy3_xx1012_20218_1.asmsize .set 50 stack .usect STK,size ; 堆栈的,单元设置 .def _c_int00 .text_c_int00: STM #stack+size , SP ;设置堆栈指针 LD #0218H,A ;堆栈区要填充的数加载A STM #50,AR1 ;设置循环次数 MVMM SP,AR4 ;设置数据指针 loop: STL A, *AR4- ;循环,填充数据 BANZ loop, *AR1- .end2. 以下范例的功能是什么?写出对应的计算表达式(公式), 若a= 3, b=4, x=5,则y=?,将存储器的中的数据截屏,取名为:sy3_xx1011_学号_2.jpg .title sy3_xx1012_20218_2.asm.bssa,1.bssx,1.bssb,1.bssy,1.def _c_int00.datatable:.word3,5,4.text_c_int00:RSBX CPL ;CPL=0 方式LD #1,DP STM #a,AR1 RPT #2 MVPD table,*AR1+ LD #0,BLD a,T MPY x,B ADD b,B STL B, y end: B end .end3. 以下指令序列的功能是什么? 输入以下的指令序列。将存储器的中的数据截屏,取名为:sy3_xx1011_学号_3.jpg .titlesy3_xx1012_20218_3.asm .bss y, 20 .data table: .word 7,7,7,8,8,8,7,7,9,10,11,12,13,14,15,16,17,18,19,20 .def _c_int00 .text_c_int00: STM table, AR1 ;将table的地址存入AR1 LDM AR1, A ; AR1- A STM #y, AR3 RPT #19 ;重复20次 READA *AR3+ ; 程序存储器传送到数据存储器 end: Bend .end4. 计算: 求y=a1*x1+a2*x2+a3*x3+a4*x4 ,用双操作数指令计算。当x1,x2,x3,x4分别为:1,2,3,4; a1,a2,a3,a4均为3时,y=?(提示:不能用块循环结构), 将存储器的中的数据截屏,取名为:sy3_xx1011_学号_4.jpg .title sy3_xx1012_20218_4.asm ; y=x1*a1+x2*a2+x3*a3+x4*a4 .bss a,4 .bss x,4 .bss y,2 .def _c_int00 .datatable: .word 3,3,3,3 ; a1,a2,a3,a4 .word 1,2,3,4 ; x1,x2,x3,x4 .text_c_int00: RSBX CPL ;CPL=0 方式 LD #1,DP STM #a,AR1 ; 将x1的地址存储到AR1中 RPT#7 ;重复执行下面的指令8次。 MVPD table,*AR1+ ;从程序存储器传送到数据存储 STM #a,AR3 STM #x,AR4 RPTZ A,#3 MAC *AR3+,*AR4+,A ;A=A+(AR3*AR4) 两个操作数相乘后加到A STL A, y ;存A的低16位到y STH A, y+1;存A的高16位到y+1end:Bend.end5. 用双操作数的方法计算: y=a*x+b , (其中a,b,c的值为自已学号的后3位,16进制数) (参考课件), 将存储器的中的数据截屏,取名为:sy3_xx1011_学号_5.jpg .title sy3_xx1012_20218_5.asm .bssa,1 .bssx,1 .bssb,1 .bssy,1 .def _c_int00 .datatable:.word218,218,218 .text_c_int00: RSBX CPL ;CPL=0 方式 LD #1,DP STM #a,AR1 ; 将a的地址存储到AR1中 RPT #2 ;重复执行下面的指令3次。 MVPD table,*AR1+ ;从程序存储器传送到数据存储器 STM #a,AR2 STM #x,AR3 MPY *AR2,*AR3,A ; A=AR2*AR3 (双操作数指令实现) ADDb,A STLA,y end: B end .end1.使用C54X汇编语言编写计算y1=x1+x2, y2=a1+a2, 并在simulator上调试运行。观察计算结果。其中x1,x2,a1,a2分别等于2,4,6,8。 .title sy4_xx1012_20218_1.asm .bss x,2 .bss a,2 .bss y,2 .datatable: .word 2,4,6,8 .def _c_int00 .text_c_int00: RSBX CPL LD #1,DP STM #
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶山茶叶种植基地租赁与茶叶种植基地绿化工程合同
- 夹胶玻璃研发合作采购合同模板
- 老师雇佣合同协议书范本
- 基础工程赵明华课件
- 消防大讲堂课件
- 自愿解除加盟合同协议书
- 租房合同协议书关于安全
- 就业中介合同协议书范本
- 2025年江苏省苏州工业园区七年级英语第二学期期末检测模拟试题含答案
- 很火的星座测试题及答案
- 内科病临床思维智慧树知到答案章节测试2023年浙江大学
- a320mel放行偏差指南项ata21维护程序
- TY/T 4001.2-2018汽车自驾运动营地服务管理要求
- (整理)不同温度下空气中饱和水分含量及饱和蒸汽压
- 高中物理情境化选择题专题练习
- 内功四经内功真经真本全书
- 突发环境事件应急预案备案表
- 施工进度计划表(参考模板)
- 钢结构冷库施工方案
- DL∕T 2101-2020 架空输电线路固定翼无人机巡检系统
- 罗伊护理个案模板
评论
0/150
提交评论