DSP考试编程题.docx

上传人:b****7 文档编号:10592132 上传时间:2023-02-21 格式:DOCX 页数:13 大小:264.64KB
下载 相关 举报
DSP考试编程题.docx_第1页
第1页 / 共13页
DSP考试编程题.docx_第2页
第2页 / 共13页
DSP考试编程题.docx_第3页
第3页 / 共13页
DSP考试编程题.docx_第4页
第4页 / 共13页
DSP考试编程题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

DSP考试编程题.docx

《DSP考试编程题.docx》由会员分享,可在线阅读,更多相关《DSP考试编程题.docx(13页珍藏版)》请在冰豆网上搜索。

DSP考试编程题.docx

DSP考试编程题

第一题:

C语言Helloworld程序

#include

intmain()

{

printf("helloworld!

\n");

return1;

}

.text    文本段        通常包含可执行代码

.data    数据段        通常包含初始化的数据

.bss     保留空间段    通常为没有初始化的变量保留空间

自定义段

.usect     保留空间段    为没有初始化的数据保留空间的自定义段

.sect        初始化段    自定义段

.asect    初始化段

第二题:

程序的控制与转移指令BANZ

题目:

已知数据10、20、3、4、5,将其累加求累加之后的结果

要求:

为x分配5个字空间存储中间数据,为y分配1个字空间保存最终结果。

.title"example2.asm"

.mmregs;预定义的寄存器

STACK.usect"STACK",10H;堆栈的设置给堆栈段分配空间

.bssx,5;为变量分配6个字的存储空间

.bssy,1

.defstart

.data

table:

.word10,20,3,4,5;x1,x2,x3,x4,x5

.text

start:

STM#0,SWWSR;插入0个等待状态

STM#STACK+10H,sp;设置堆栈指针

STM#x,AR1;AR1指向x;存储器映像寄存器寻址

RPT#4;下一条被重复执行5遍

MVPDtable,*AR1+;把程序存储器中的数据传送到数据存储器绝对地址访问

LD#0,A;A清零

CALLSUM;调用求和函数

end:

Bend

SUM:

STM#x,AR3;AR3指向x

STM#4,AR2;AR2=4

loop:

ADD*AR3+,A;*AR3+A-->A,然后AR3+

BANZloop,*AR2-;如果AR2的值不为0,则跳到loop处;否则执行下一条指令

STLA,*(y);把A的低16位赋给变量y

RET

.end

---------------------------------------------------------------

vectors.obj

example2.obj

-oexample2.out

-mexample2.map

-estart

MEMORY

{

PAGE0:

EPROM:

org=0090Hlen=0F70H

VECS:

org=0080Hlen=0010H

PAGE1:

SPRAM:

org=1000Hlen=1000H

DARAM:

org=2000Hlen=2000H

}

SECTIONS

{

.text:

>EPROMPAGE0

.data:

>EPROMPAGE0

.bss:

>SPRAMPAGE1

STACK:

>DARAMPAGE1

.vectors:

>VECSPAGE0

}

---------------------------------------------------------------

.title"vectors.asm"

.refstart

.sect".vectors"

Bstart

.end

---------------------------------------------------------------

第三题:

乘法累加,并寻找最大值

题目:

已知数据:

1、5、3、4和8、6、7、2进行乘法累加操作,并求出其中乘法最大值,并保存。

要求:

为a分配4个空间,存放1、5、3、4

为x分配4个空间,存放8、6、7、2

为y分配1个空间,存放乘积最大值

.title"example8.asm"

.mmregs

STACK.usect"STACK",10H;堆栈的设置

.bssa,4;为变量分配9个字的存储空间

.bssx,4

.bssy,1

.defstart

.data

table:

.word1,5,3,4;a1,a2,a3,a4

.word8,6,7,2;x1,x2,x3,x4

.text

start:

STM#0,SWWSR;插入0个等待状态

STM#STACK+10H,SP;设置堆栈指针

STM#a,AR1;存储器映像寄存器寻址

RPT#7

MVPDtable,*AR1+

CALLMAX

end:

Bend

MAX:

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中

MAXA;累加器A和B比较,选出较大者存入A中

BANZloop,*AR3-;此循环中共进行3次乘法和比较

STLA,*(y)

RET

.end

---------------------------------------------------------------

---------------------------------------------------------------

第四题:

数据块传送指令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"

.mmregs

STACK.usect"STACK",30H

.bssx,20

.bssy,20

.data

table:

.word1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

.defstart

.text

start:

STM#x,AR1

RPT#19

MVPDtable,*AR1+;程序存储器传送到数据存储器

STM#x,AR2

STM#y,AR3

RPT#19

MVDD*AR2+,*AR3+;数据存储器传送到数据存储器

end:

Bend

.end

---------------------------------------------------------------

---------------------------------------------------------------

运行答案:

x:

1000H:

0x0001~1013H:

0x0014

y:

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。

.title"zhao6.asm"

.mmregs

STACK.usect"STACK",30H

.bssa,20

.bssx,20

.bssy,2

.data

table:

.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

.text

start:

STM#0,SWWSR

STM#STACK+30H,SP

STM#a,AR1

RPT#39

MVPDtable,*AR1+

CALLSUM;调用中断子程序SUM

end:

Bend

SUM:

STM#a,AR3;中断子程序SUM

STM#x,AR4

RPTZA,#19;累加器A清零,并且重复执行下一条指令

MAC*AR3+,*AR4+,A

STLA,*(y)

STHA,*(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/10

0.2写成2*32768/10

·

·

·

.title"zhao9e.asm"

.mmregs

STACK.usect"STACK",10H

.bssa,4

.bssx,4

.bssy,1

.defstart

.data

table:

.word1*32768/10

.word2*32768/10

.word-3*32768/10

.word2*32768/10

.word8*32768/10

.word6*32768/10

.word-4*32768/10

.word-2*32768/10

.text

start:

SSBXFRCT

STM#a,AR1

RPT#7

MVPDtable,*AR1+

STM#x,AR2

STM#a,AR3

RPTZA,#3

MAC*AR2+,*AR3+,A

STHA,*(y)

end:

Bend

.end

y:

0x1008H:

0x23D5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1