DSP程序题.docx

上传人:小飞机 文档编号:3155933 上传时间:2023-03-11 格式:DOCX 页数:24 大小:47.53KB
返回 下载 相关 举报
DSP程序题.docx_第1页
第1页 / 共24页
DSP程序题.docx_第2页
第2页 / 共24页
DSP程序题.docx_第3页
第3页 / 共24页
DSP程序题.docx_第4页
第4页 / 共24页
DSP程序题.docx_第5页
第5页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《DSP程序题.docx》由会员分享,可在线阅读,更多相关《DSP程序题.docx(24页珍藏版)》请在三一办公上搜索。

1、DSP程序题1、已知(80H)=50H,AR2=84H,AR3=86H,AR4=88H。 MVKD 80H,*AR2 MVDD *AR2,*AR3 MVDM 86H, AR4 运行以上程序后,(80H)、*AR3和AR4的值分别等于多少? 解:(80H)=50H,(84H)=50H,*AR3=50H,AR4=50H 2、已知,(80H)=20H、=30H。 LD #0,DP LD 80H,16,B ADD 81H,B 运行以上程序,B等于多少? 答:=00 0000 0000H 3、阅读以下程序,分别写出运行结果。 .bss x,4 .data table:.word 4,8,16,32 ST

2、M #x,AR1 RPT #2 MVPD table,*AR1+ 解:数据表table中的常量4传送到以变量x 的地址为地址的存储单元中;数据表table中的常量8传送到以变量x+1 的地址为地址的存储单元中;数据表table中的常量16传送到以变量x+2 的地址为地址的存储单元中; .bss x,4 .data table: .word 4,8,16,32 STM #x,AR1 RPT #2 MVPD table,*+AR2 解:数据表table中的常量4传送到以变量x+1 的地址为地址的存储单元中;数据表table中的常量8传送到以变量x+2 的地址为地址的存储单元中;数据表table中的

3、常量16传送到以变量x+3 的地址为地址的存储单元中; 4、指令 ADD #4568H,8,A,B /将4568H左移8位与A相加,赋给B。 ADD A,-8,B/将A右移8位加上B,保存于B。 ADD *AR3+,14,A/将AR3左移4加上AA。 DST B,*AR1-/B存到长字单元AR1中,且AR减1。 LDM AR1,A /存储器映像寄存器寻址方式,将映像寄存器加载累加器AR1A的低位,其余位置0。 LD #10H,4,A/将10H左移4位加载到累加器A中。 MAC *AR3+,*AR4+,A,B/AR3.AR44+AB,AR3与AR3都加1。 MVKD SAMPLE,*AR5/SA

4、MPLEAR5中。 MVDD *AR3+,*AR5+ /数据存储器内部传送数据AR3AR5,且指令结束后AR3与AR5加1。 MPYA TEMP2/B=A.Temp2,T=Temp2。 PPT #99NOP/重复NOP100次。 STL A,quot/将累加器A的低16位字存放在quot的存储单元中。 STL B,*AR3+/将累加器的低位移位后加载到AR3所指地址。 WRITA SMEM /将A的内容写入SMEM中。 LD #0032H,4,A/立即数0032H先左移4位后,再加载累加器A. STM #1000H,*AR2/立即数1000H存储到AR2指向的地址单元 MAC #345,A,B

5、/立即数345与T寄存器内值相乘后与累加器A值相加,结果加载累加器B. MVDD *AR3-,100H /AR3指向的地址单元的值传送给地址100H单元, AR3中地址减一。 LDM *AR1,A/AR1指向的地址单元的值加载到累加器A. SYM1 .set 2 ;符号SYM1=2 Begin: LD #SYM1, AR1 ;将2装入AR1 Label:ADD #123,B ;表示将操作数123和累加器B中的内容相加 Label:LD *AR4,A ;操作数*AR4为间接地址,将AR4中的内容作为地址,然后将该地址的内容装入到指定的累加器A RPT #99 ;将下一条指令循环100次 LD #

6、0h,DP ;将0装入数据页指针 ADD #0ffh,A ;将0ffh加给AccA ADD #1234h,A ;将#1234h加给AccA MVKD sample,*AR5 ;sample所代表的就是一个dmad MVKD 1000h,*AR5 ;将数据存储器1000h单元的数据传送到由AR5所指的存储单元中 。 1000h代表的是一个dmad 寻址) MVPD table,*AR5 table 所代表的就是一个pmad寻址) PORTR PA, Smem ;从PA单元端口读入一个数据,传送到Smem所指的数据单元中去 PORTW Smem, PA ;从Smem所指的数据单元取出一个数据,传送

7、到PA单元端口 PORTR FIFO, *AR5 ;把一个数从端口为FIFO的I/O口传送到AR5所指向的数据单元 LD *,A ;把地址为BUFFER的数据单元中的数据装到AccA中 LD #4,DP ;指向页4 ADD 9h,A ;将数据页4中地址9h的数据加给AccA ADD *,8,A ;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA ADD *+,8,A ;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,当前辅助寄存器加1. ADD *+,8,A,AR4 ;数据左移加给AccA后,当前辅助寄存器加1,选择辅助寄存器AR4 ADD *0+,8,A ;

8、执行加法后,将AR0的值加给当前辅助寄存器 ADD *AR0+,8,A ;执行加法后,将AR0的值加给当前辅助寄存器,但反向进位 ADD *AR3+,14,A;将AR3指向的地址单元0100h的内容1500h左移14位,得到5400000h加上1200h,将结果5401200h存在累加器A中 ADDC *+AR2(5),A;将AR2加上5后指向的地址单元内容,并进位加到累加器A中,此指令计算0013h0004h1h0018h。 MAC #345h,A,B ;B=A+T*#345h MAC *AR5+,*AR6+,A,B; B=A+(*AR5)*(*AR6) T=(*AR5) MACR *AR5

9、+,A; A=rnd(A+T*(*AR5) MACR *AR5+,*AR6+,A,B ; B=rnd(A+(*AR5)*(*AR6) T=(*AR5) MACA *AR5+ ; B=B+(*AR5)*A(3116) T=(*AR5) AR5=AR5+1 AND *AR3+,A; A=A&(*AR3) AR3=AR3+1 ANDM #00FFh,*AR4+; (*AR4)=(*AR4)&(#00FF) AR4=AR4+1 SFTA A, 5, B; SHIFTRAM PAGE 0 .text :RAM PAGE 0 PROM:RAM1 PAGE 0 .bss :DARAM1 PAGE1 DATA

10、 :DARAM2 PAGE1 21、设计一存储空间为100个单元的堆栈。将栈底地址指针送SP,对其初始化。 Size .set 100;设置堆栈空间的大小为100 Stack .usect STK,size ;设置堆栈段的首地址和堆栈空间 STM #stack+size,SP 利用SUBC完成整除法,41H/7H=9H,余数是2H。 LD #0041H, B STM #0100H, AR2 STM #0110H, AR3 ST #0007H, *AR2 RPT #15 SUBC *AR2,B STL B,*AR3+ STH B,*AR3 编写求解加、减法的程序,计算z=x+y-w。 .titl

11、e ex41.asm .mmregs STACK .usect “STACK”,10H .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 cjy4.asm .mmregs STACK .u

12、sect STACK,10H .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

13、 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 阅读下列汇编源程序,在每条语句后写出注释,并叙述程序

14、的功能。 .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次

15、 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 程序功能:将数据存储器中的数组x10复制到数组y10。 阅读下面的程序,回答问题。 .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

16、 #0,B 问题:寄存器“BRC”的功能是什么?寄存器“BRC”的功能是暂存块循环的次数 汇编语句“ADD *AR4,16,B,A”执行了多少次?)8次执行语句“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 #1

17、230h,DAT2 ADD3 DAT0,DAT1,DAT2,DAT3 问题:(1)语句“.mmregs”的含义。定义存储器映像寄存器的符号名称。(2)语句“ADD3 DAT0,DAT1,DAT2,DAT3”是一条什么类型的语句?作用是什么? 宏调用。执行三个数相加。(3)执行此段程序后,存储单元的运行结果多少? 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次 阅读下面的

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号