当前位置:首页 > 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
共分享92篇相关文档