DSP题库 联系客服

发布时间 : 星期一 文章DSP题库更新完毕开始阅读

(3)10次 4、 已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=111,外部晶振=10MHz,参数设置表:

CLKMD1 CLKMD2 CLKMD3 CLKMD复位值 0 0 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 1 E007H 9007H 4007H 1007H F007H 0000H F000H 时钟方式 PLL×15 PLL×10 PLL×5 PLL×2 PLL×1 2分频 4分频 STM #00H,CLKMD Status:LDM CLKMD,A AND #01H,A BC Status,ANEQ STM #9007H,CLKMD

问题(1)DSP复位后,DSP的工作时钟是多少?

(2)执行上面的程序片段后,DSP的工作时钟是多少? 4、答:(1)5MHz

(2)100MHz

5、阅读下面的程序片断,写出运行结果 .mmregs bei_hua .set 18

LD # bei_hua,A

问题:(1)“.mmregs”的作用是什么?

(2) 运行此段程序后,累加器A的结果是多少? 5、答:(1)定义存储器映像寄存器的符号名称

(2)A的结果是18

6、 阅读下面的程序,回答问题。

.sect \

rst: B _c_int00 ;复位中断向量的入口 NOP NOP

.space 18*4*16

tint: B timeout ;定时器0的中断向量的入口 NOP NOP

问:(1) “.sect”伪指令的作用是什么?

(2) 标号“rst”的地址为6000H,请问标号“tint”的地址是多少? 6、答:(1)定义一个自定义段名的程序段

(2) 604Ch

7、 阅读下面的命令连接文件(简称CMD文件)和程序文件: CMD文件:

19

MEMORY

{ PAGE 0: PROG: origin = 0x1000, length = 0x1000 PAGE 1: DATA: origin = 0x2000, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0 .data: {} > DATA PAGE 1 }

.data

table: .word 1,2,3,4 ; 变量初始化

.text

start: STM # 0,SWWSR ; 插入0个等待状态 问:(1)MEMORY和SECTIONS的作用各是什么?

(2)标号“table”和“start”的地址分别是什么,分别位于程序空间还是数据空间? 7、答:(1)MEMORY和SECTIONS链接伪指令,用来指定目标存储器结构和地址分配。

(2)标号table:1000h(程序空间) 标号start:2000h(数据空间)

8、阅读下面的程序,回答问题。 MEMORY

{ PAGE 0: PROG: origin = 0x2000, length = 0x1000 PAGE 1: DATA: origin = 0x3000, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0 .bss: {} > DATA PAGE 1 }

汇编程序:

.bss a,4 .bss x,4 .bss y,1

STM #a, AR3

STM #x, AR4 RPTZ A, #3

MAC *AR3+,*AR4+,A STL A,*(y) 问题:(1)指令“STM #a, AR3”的作用是什么?执行此句指令后,寄存器AR3的内容是多少?

(2)指令“MAC *AR3+,*AR4+,A”执行了几次?每执行一次寄存器AR3和AR4的内容如何变化?

(3)这段代码的功能是什么?

8、答:(1)将标号a的地址赋给辅助工作寄存器AR3,AR3=3000h。

(2)执行了4次,每执行一次辅助工作寄存器AR3和AR4的内容增一。

20

(3) y??axii?14i

9、阅读下面的程序,回答问题。 MEMORY

{ PAGE 0: PROG: origin = 0x2000, length = 0x1000

PAGE 1: DATA: origin = 0x4000, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0 STACK: {} > DATA PAGE 1 }

汇编程序

size .set 0x0120

stack .usect “STACK”,size .text

STM # stack + size,SP 问题:(1)指令“stack .usect “STACK”,size”的作用是什么? (2)标号“stack”的存储器地址是多少?

(3)执行这段代码之后,SP寄存器的内容是多少?

9、答:(1)定义一个未初始化段,段名为”STACK”,目的是为变量stack保留size个单元的存储空间。

(2) stack的存储空间为0x4000; (3) SP=0x4120;

10、 MEMORY

{PAGE 0: PROM: org=0E000h,len=100h VECS: org=0FF80h,len=04h PAGE 1: SPRAM: org=0060h,len=20h DARAM: org=0080h,len=100h }

SECTIONS

{ .text :>EPROM PAGE 0 .data :>EPROM PAGE 0 .bss :>SPRAM PAGE 1 STACK :>DARAM PAGE 1 vectors :>VECS PAGE 0 }

问题:(1)该文件是如何配置程序空间和数据空间的? (2)该文件中出现了几个段?哪些是初始化段?哪些是未初始化段?各段是如何分配的? 10、答:(1)该文件使用MEMORY伪指令将程序空间划分为两个小区间:名为PROM的区间其起始地址为0E000h,长度为100h字;名为VECS的区间其起始地址为0FF80h,长度为

21

4字。将数据空间也分为了两个小区间: 名为SPRAM的区间其起始地址为0060h,长度为20h字;名为DARAM的区间其起始地址为0080h,长度为100h字。

(2)出现了5个段,.text,.data和vectors是初始化段,.bss和STACK段是未初始化段。

.text和.data分配到程序空间的EPROM区间;.bss分配到数据空间SPRAM区间;STACK段分配到数据空间的DARAM区间; vectors段分配到程序空间的VECS区间。

11、阅读程序,回答后面的问题

STM #9,AR4

begin: STM #7,BRC RPTB next-1 nop

next: LD #0,B banz begin,*AR4-

问(1)BRC寄存器是做什么用途?

(2)其中的“nop”语句被执行了多少次? 11、答:(1)BRC保存着RPTB指令的循环次数 (2)8次

12、阅读下面的程序,回答问题。 MEMORY

{ PAGE 0: PROG: origin = 0x2000, length = 0x1000 PAGE 1: DATA: origin = 0x3100, length = 0x1000 }

SECTIONS { .text: {} > PROG PAGE 0 .bss: {} > DATA PAGE 1 }

汇编程序:

.bss x,16

.bss y,16 .text

STM #x,AR2 STM #y,AR3 RPT #15

MVDD AR2+,*AR3+ 问题:(1)变量“x”的存储器地址是多少?位于哪个存储空间(程序还是数据存储空间)。 (2)语句“STM #x,AR2”的作用是什么?执行此句指令后,寄存器AR2的内容是多少?

(3)语句“MVDD AR2+,*AR3+”的执行了多少次?每执行一次寄存器AR2和AR3的内容如何变化?

(4)此段代码的功能是多少? 12、答:(1)变量“x”的存储器地址是0x3100;位于数据存储空间

22