1、DSP考试编程题第一题:C语言Hello world程序#includeint main()printf(hello world!n);return 1;.text 文本段 通常包含可执行代码.data 数据段 通常包含初始化的数据.bss 保留空间段 通常为没有初始化的变量保留空间自定义段.usect 保留空间段 为没有初始化的数据保留空间的自定义段.sect 初始化段 自定义段.asect 初始化段第二题:程序的控制与转移指令BANZ题目:已知数据10、20、3、4、5,将其累加求累加之后的结果要求:为x分配5个字空间存储中间数据,为y分配1个字空间保存最终结果。 .title examp
2、le2.asm .mmregs ;预定义的寄存器STACK .usect STACK,10H ; 堆栈的设置 给堆栈段分配空间 .bss x,5 ;为变量分配6个字的存储空间 .bss y,1 .def start .datatable: .word 10,20,3,4,5 ;x1,x2,x3,x4,x5 .textstart: STM #0,SWWSR ;插入0个等待状态 STM #STACK+10H,sp ;设置堆栈指针 STM #x,AR1 ;AR1指向x ;存储器映像寄存器寻址 RPT #4 ;下一条被重复执行5遍 MVPD table,*AR1+ ;把程序存储器中的数据传送到数据存储
3、器 绝对地址访问 LD #0,A ;A清零 CALL SUM ;调用求和函数end: B endSUM: STM #x,AR3 ;AR3指向x STM #4,AR2 ;AR2=4loop: ADD *AR3+,A ;*AR3+A-A,然后AR3+ BANZ loop,*AR2- ;如果AR2的值不为0,则跳到loop处;否则执行下一条指令 STL A,*(y) ;把A的低16位赋给变量y RET .end-vectors.obj example2.obj -o example2.out -m example2.map -estart MEMORY PAGE 0: EPROM:org=0090H
4、 len=0F70H VECS: org=0080H len=0010H PAGE 1: SPRAM:org=1000H len=1000H DARAM:org=2000H len=2000H SECTIONS .text :EPROM PAGE 0 .data :EPROM PAGE 0 .bss :SPRAM PAGE 1 STACK :DARAM PAGE 1 .vectors:VECS PAGE 0 -.title vectors.asm .ref start .sect .vectors B start .end-第三题:乘法累加,并寻找最大值题目:已知数据:1、5、3、4和8、6、
5、7、2进行乘法累加操作,并求出其中乘法最大值,并保存。要求:为a分配4个空间,存放1、5、3、4 为x分配4个空间,存放8、6、7、2 为y分配1个空间,存放乘积最大值 .title example8.asm .mmregsSTACK .usect STACK,10H ;堆栈的设置 .bss a,4 ;为变量分配9个字的存储空间 .bss x,4 .bss y,1 .def start .datatable: .word 1,5,3,4 ;a1,a2,a3,a4 .word 8,6,7,2 ;x1,x2,x3,x4 .textstart: STM #0,SWWSR ;插入0个等待状态 STM
6、#STACK+10H,SP ;设置堆栈指针 STM #a,AR1 ;存储器映像寄存器寻址 RPT #7 MVPD table,*AR1+ CALL MAXend: B endMAX: STM #a,AR1 STM #x,AR2 STM #2,AR3 LD *AR1+,T MPY *AR2+,A ;第一个乘积在累加器A中 *AR2指令和T相乘loop: LD *AR1+,T MPY *AR2+,B ;其他乘积在累加器B中 MAX A ;累加器A和B比较,选出较大者存入A中 BANZ loop,*AR3- ;此循环中共进行3次乘法和比较 STL A,*(y) RET .end-第四题:数据块传送指
7、令MVPD、MVDD题目:将数据表中的20个数据:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20传送到x分配的20个字存储空间,再将x的20个字存储空间中的内容传送到y的20个字存储空间。 .title zhao3.asm .mmregsSTACK .usect STACK,30H .bss x,20 .bss y,20 .datatable: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 .def start .textstart: STM #x,AR1 RPT #19
8、MVPD table,*AR1+ ;程序存储器传送到数据存储器 STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+ ;数据存储器传送到数据存储器end: B end .end-运行答案:x:1000H:0x0001 1013H:0x0014y:1014H:0x0001 1028H:0x0014-第五个:乘法累加实验题目:整数系数时:其中:=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 =21,22,23,24,25,26,27,28, 29,30,1,2,3,4,5,6,7,8,9,10求:y。
9、.title zhao6.asm .mmregsSTACK .usect STACK,30H .bss a,20 .bss x,20 .bss y,2 .datatable: .word 1,2,3,4,5,6,7,8,9,10,11 .word 12,13,14,15,16,17,18,19,20 .word 21,22,23,24,25,26,27,28 .word 29,30,1,2,3,4,5,6,7,8,9,10 .def start .textstart: STM #0,SWWSR STM #STACK+30H,SP STM #a,AR1 RPT #39 MVPD table,*A
10、R1+ CALL SUM ;调用中断子程序SUMend: B endSUM: STM #a,AR3 ;中断子程序SUM STM #x,AR4 RPTZ A,#19 ;累加器A清零,并且重复执行下一条指令 MAC *AR3+,*AR4+,A STL A,*(y) STH A,*(y+1) RET .end-答案:y: 0x1028H:0x0000 0x1029H:0x0974-小数系数时:其中:=0.1,0.2,-0.3,0.2 =0.8,0.6,-0.4,-0.2求:y。注意:0.1 写成 1*32768/100.2 写成 2*32768/10 .title zhao9e.asm .mmreg
11、sSTACK .usect STACK,10H .bss a,4 .bss x,4 .bss y,1 .def start .datatable: .word 1*32768/10 .word 2*32768/10 .word -3*32768/10 .word 2*32768/10 .word 8*32768/10 .word 6*32768/10 .word -4*32768/10 .word -2*32768/10 .textstart: SSBX FRCT STM #a,AR1 RPT #7 MVPD table,*AR1+ STM #x,AR2 STM #a,AR3 RPTZ A,#3 MAC *AR2+,*AR3+,A STH A,*(y)end: B end .endy:0x1008H:0x23D5
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1