DSP程序题(3)

2018-12-05 13:39

.bss x,1 .bss y,1 .bss w,1 .bss z,1 .def start

Table: .word 6, 7,9 .text

Start: STM #0,SWWSR STM #STACK+10H,SP STM #x,AR1 RPT #2

MVPD table,*AR1+ LD @x,A ADD @y,A SUB @w,A STL A,@z End: B end .end

●阅读下列汇编源程序,在每条语句后写出注释,并叙述程序的功能。 .title \.mmregs

STACK .usect \.bss a,4 ;为a分配4个存储单元 .bss x,4 ;为x分配4个存储单元 .bss y,1 ;为结果y分配1个存储单元 .def start

.data ;定义数据代码段

table: .word 1*32768/10 ;在table开始的8个 .word 2*32768/10 ;地址放数据 .word -3*32768/10 .word 4*32768/10 .word 8*32768/10 .word 6*32768/10 .word -4*32768/10 .word -2*32768/10

.text ;定义可执行程序代码段

start:SSBX FRCT ;设置FRCT位,表示进行小数乘 STM #x,AR1 ;将x的首地址传给AR1 RPT #7 ;重复8次下条指令

MVPD table,*AR1+ ;将程序空间8个数传给数据存储器 STM #x,AR2 ;将数据存储器第一个数x1的地址传给AR2 STM #a,AR3 ;将数据存储器第五个数a1的地址传给AR3 RPTZ A,#3 ;将A清零,重复4次下条指令

MAC *AR2+,*AR3+,A ;执行乘法累加和,结果放在A中

STH A,@y ;将A的高端字存入结果y,低端字省去 end: B end ;原处循环等待 .end

●阅读下列汇编源程序,在每条语句后写出注释,并叙述程序的功能。 .title “cjy1.asm” ;为汇编源程序取名 .mmregs ;定义存储器映象寄存器

STACK .usect “STACK”,30H;设置堆栈 .bss x,10 ;为数组x分配10个存储单元 .bss y,10 ;为数组y分配10个存储单元 .data

table:.word 1,2,3,4,5,6,7,8,9,10 .def start ;定义标号start .text

start:STM #0,SWWSR ;复位SWWSR STM #STACK+30H,SP;初始化堆指针 STM #x,AR1 ;将目的地首地址赋给AR1 RPT #19 ;设定重复传送的次数为20次

MVPD table,*AR1+ ;程序存储器传送到数据存储器 STM #x,AR2 ;将x的首地址存入AR2 STM #y,AR3 ;将y的首地址存入AR3 RPT #19 ;设置重复执行20次下条指令

MVDD *AR2+,*AR3+;将地址x开始的20个值复制到地址y开始的20个单元 end: B end .end

程序功能:将数据存储器中的数组x[10]复制到数组y[10]。 ●阅读下面的程序,回答问题。 .bss x, 8

LD #0001H,16,B STM #7,BRC STM #x,AR4 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; ● 阅读下面的程序:

.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 ●阅读下面的程序片断,写出运行结果 .mmregs DAT0 .SET 60H

LD #004h,DP

ST #0345h,DAT0

STM #0002h,T MPY DAT0,A NOP

问题:(1)寄存器T的作用是什么?寄存器T的作用是暂存被乘数(2)执行“MPY DAT0,A”后,累加器A的内容是什么?累加器A的内容为0x68A或68Ah ●阅读程序,回答后面的问题 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次 ●阅读下面的程序片断,写出运行结果 .mmregs bei_hua .set 18

LD # bei_hua,A

问题:(1)“.mmregs”的作用是什么?定义存储器映像寄存器的符号名称(2) 运行此段程序后,累加器A的结果是多少?A的结果是18 ●阅读下面的程序,回答问题。

.sect \

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

.space 18*4*16

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

问: (1) “.sect”伪指令的作用是什么?定义一个自定义段名的程序段

(2) 标号“rst”的地址为6000H,请问标号“tint”的地址是多少?604Ch

●阅读下面的命令连接文件(简称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(数据空间) ●阅读下面的程序片断,回答下面的问题

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 STH A,DAT3 问:在CPL=0的情况下,(1) 语句“STL A,DAT2”,其中DAT2所指的地址是多少?0262h (2) 存储单元(DAT2)和(DAT3)的内容是多少?(DAT2)=02H (DAT3)=01H ●阅读下面的程序,回答问题。 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)这段代码的功能是什么? (3) y??axii?14i

● 阅读下面的程序,回答问题。 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”的作用是什么?定义一个未初始化段,段名为”STACK”,目的是为变量stack保留size个单元的存储空间。(2)标号“stack”的存储器地址是多少?stack的存储空间为0x4000;(3)执行这段代码之后,SP寄存器的内容是多少? SP=0x4120; ● 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


DSP程序题(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版小学二年级下册语文期末复习计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: