RPTB next-1
ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B 问题:
(1)寄存器“BRC”的功能是什么?
寄存器“BRC”的功能是暂存块循环的次数
(2)汇编语句“ADD *AR4,16,B,A”执行了多少次? 8次
(3)执行语句“LD #0001H,16,B”后,累加器B的内容是多少? B=0x0100H;
8. 阅读下面的程序:
.mmregs
DAT0 .SET 60H DAT1 .SET 61H DAT2 .SET 62H DAT3 .SET 63H
add3 .macro P1,P2,P3,ADDRP LD P1,A ADD P2,A ADD P3,A STL A,ADDRP .endm
ST #0034h,DAT0
ST #0243h,DAT1 ST #1230h,DAT2 ADD3 DAT0,DAT1,DAT2,DAT3 问题:
(1) 语句“.mmregs”的含义。
定义存储器映像寄存器的符号名称。
(2) 语句“ADD3 DAT0,DAT1,DAT2,DAT3”是一条什么类型的语句?作用是什么?
宏调用。执行三个数相加。
(3)执行此段程序后,存储单元(DAT3)的运行结果多少? 14a7H
9.阅读下面的程序片段,写出运行结果 .mmregs DAT0 .SET 60H LD #004h,DP
ST #0345h,DAT0
STM #0002h,T MPY DAT0,A NOP NOP
问题:(1)寄存器T的作用是什么?
第16 页(共 2 页)
寄存器T的作用是暂存被乘数,
(2)执行“MPY DAT0,A”后,累加器A的内容是什么?: 累加器A的内容为0x68A或68Ah 10. 阅读程序,回答后面的问题 STM #6,AR4 begin: STM #9,BRC RPTB next-1 nop
next: LD #0,B
banz begin,*AR4-
问题:(1) BRC寄存器是做什么用途? BRC保存着RPTB指令的循环次数
(2)语句“banz begin,*AR4-”的作用是什么?
判断AR4的内容是否为零,若不为零,跳转到标号begin。 (3) 其中的“nop”语句被执行了多少次? 70次
11. 已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=111,外部晶振=10MHz,参数设置表: CLKMD1 CLKMD2 CLKMD3 CLKMD复位值 时钟方式 0 0 0 E007H PLL×15 0 0 1 9007H PLL×10 0 1 0 4007H PLL×5 1 0 0 1007H PLL×2 1 1 0 F007H PLL×1 1 1 1 0000H 2分频 1 0 1 F000H 4分频 STM #00H,CLKMD
Status:LDM CLKMD,A AND #01H,A BC Status,ANEQ
STM #9007H,CLKMD
问题(1)DSP复位后,DSP的工作时钟是多少? 5MHz
(2)执行上面的程序片段后,DSP的工作时钟是多少?
100MHz
12. 阅读下面的程序片断,写出运行结果 .mmregs bei_hua .set 18
LD # bei_hua,A
问题:(1)“.mmregs”的作用是什么? 定义存储器映像寄存器的符号名称
(2) 运行此段程序后,累加器A的结果是多少? A的结果是18
13. 阅读下面的程序,回答问题。
第17 页(共 2 页)
.sect \
rst: B _c_int00 ;复位中断向量的入口 NOP NOP .space 18*4*16 tint: B timeout ;定时器0的中断向量的入口 NOP NOP
问: (1) “.sect”伪指令的作用是什么? 定义一个自定义段名的程序段
(2) 标号“rst”的地址为6000H,请问标号“tint”的地址是多少? 604Ch
14. 阅读下面的命令连接文件(简称CMD文件)和程序文件: CMD文件: 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的作用各是什么?
MEMORY和SECTIONS链接伪指令,用来指定目标存储器结构和地址分配。
(2)标号“table”和“start”的地址分别是什么,分别位于程序空间还是数据空间? 标号table:1000h(程序空间) 标号start:2000h(数据空间)
15. 阅读下面的程序片断,回答下面的问题
DAT0 .SET 60H DAT1 .SET 61H DAT2 .SET 62H DAT3 .SET 63H LD #004h,DP ST #83h,DAT0
ST #0041h,DAT1 RSBX SXM LD DAT0,A RPT #15 SUBC DAT1,A STL A,DAT2
第18 页(共 2 页)
STH A,DAT3 问:在CPL=0的情况下, (1) 语句“STL A,DAT2”,其中DAT2所指的地址是多少?
0262h
(2) 存储单元(DAT2)和(DAT3)的内容是多少? (DAT2)=02H (DAT3)=01H
16. 阅读下面的程序,回答问题。 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的内容是多少?
将标号a的地址赋给辅助工作寄存器AR3,AR3=3000h。
(2)指令“MAC *AR3+,*AR4+,A”执行了几次?每执行一次寄存器AR3和AR4的内容如何变化?
执行了4次,每执行一次辅助工作寄存器AR3和AR4的内容增一。 (3)这段代码的功能是什么?
y??aixi
i?1417. 阅读下面的程序,回答问题。 MEMORY { PAGE 0: PROG: origin = 0x2000, length = 0x1000
PAGE 1: DATA: origin = 0x4000, length = 0x1000 }
SECTIONS { .text: {} > PROG PAGE 0 STACK: {} > DATA PAGE 1 }
汇编程序
第19 页(共 2 页)
size .set 0x0120
stack .usect “STACK”,size .text
STM # stack + size,SP 问题:(1)指令“stack .usect “STACK”,size”的作用是什么?
定义一个未初始化段,段名为”STACK”,目的是为变量stack保留size个单元的存储空间。 (3) 标号“stack”的存储器地址是多少?
stack的存储空间为0x4000;
(3)执行这段代码之后,SP寄存器的内容是多少?
SP=0x4120;
18. 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)该文件是如何配置程序空间和数据空间的?
答:该文件使用MEMORY伪指令将程序空间划分为两个小区间:名为PROM的区间其起始地址为0E000h,长度为100h字;名为VECS的区间其起始地址为0FF80h,长度为4字。将数据空间也分为了两个小区间: 名为SPRAM的区间其起始地址为0060h,长度为20h字;名为DARAM的区间其起始地址为0080h,长度为100h字。
(2)该文件中出现了几个段?哪些是初始化段?哪些是未初始化段?各
出现了5个段,.text,.data和vectors是初始化段,.bss和STACK段是未初始化段。 .text和.data分配到程序空间的EPROM区间;.bss分配到数据空间SPRAM区间;STACK段分配到数据空间的DARAM区间; vectors段分配到程序空间的VECS区间。 19. 已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=101,外部晶振=10MHz,参数设置表:
CLKMD1 CLKMD2 CLKMD3 CLKMD复位值 时钟方式 0 0 0 E007H PLL×15 0 0 1 9007H PLL×10 0 1 0 4007H PLL×5 1 0 0 1007H PLL×2 1 1 0 F007H PLL×1 1 1 1 0000H 2分频 1 0 1 F000H 4分频 STM #00H,CLKMD Status:LDM CLKMD,A AND #01H,A
第20 页(共 2 页)