DSP程序题参考模板_第1页
DSP程序题参考模板_第2页
DSP程序题参考模板_第3页
DSP程序题参考模板_第4页
DSP程序题参考模板_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、已知(80H)=50H,AR2=84H,AR3=86H,AR4=88H。MVKD 80H,*AR2MVDD *AR2,*AR3MVDM 86H, AR4运行以上程序后,(80H)、(84H)、*AR3和AR4的值分别等于多少?解:(80H)=50H,(84H)=50H,*AR3=50H,AR4=50H2、已知,(80H)=20H、(81H)=30H。LD #0,DPLD 80H,16,BADD 81H,B运行以上程序,B等于多少?答:(B)=00 0000 0000H3、阅读以下程序,分别写出运行结果。.bss x,4.data table:.word 4,8,16,32STM #x,AR

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

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/SAMPLEAR5中。MVDD *AR3+,*AR5+

4、 /数据存储器内部传送数据AR3AR5,且指令结束后AR3与AR5加1。2 / 22MPYA 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/立即数345与T寄存器内值相乘后与累加器A值相

5、加,结果加载累加器B.MVDD *AR3-,100H /AR3指向的地址单元的值传送给地址100H单元, AR3中地址减一。LDM *AR1,A/AR1指向的地址单元的值加载到累加器A.SYM1 .set 2 ;符号SYM1=2Begin: LD #SYM1, AR1 ;将2装入AR1Label:ADD #123,B ;表示将操作数123(十进制)和累加器B中的内容相加Label:LD *AR4,A ;操作数*AR4为间接地址,将AR4中的内容作为地址,然后将该地址的内容装入到指定的累加器ARPT #99 ;将下一条指令循环100次LD #0h,DP ;将0装入数据页指针ADD #0ffh,A

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

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

8、+,8,A ;执行加法后,将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*#345hMAC *AR5+,*AR6+,A,B; B=A+(*AR5)*(*AR6) T=(*AR5)MACR *AR

9、5+,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+1AND *AR3+,A; A=A&(*AR3) AR3=AR3+1ANDM #00FFh,*AR4+; (*AR4)=(*AR4)&(#00FF) AR4=AR4+1SFTA A, 5, B; SHIFT<0,指令执行算术右移;SXM=1,移出的高位用符号位填。BIT *AR5+,15-12;指令中的(1512)表示测试第12

10、位,TC=(*AR5)(15-12),AR5=AR5+1BITF 5,#00FFh;测试Smem中指定的某些位,lk常数在测试一位或多位时起屏蔽作用。假如指定的一位或多位为0,状态寄存器ST0的TC位清0,否则该位置1。CMPM *AR4+,0404h;比较16位单数据存储器操作数Smem和16位常数lk是否相等。若相等,ST0寄存器的TC位置1,否则该位清0。CMPR 2,AR4; 测试AR4是否大于AR0BD 1000h;程序指针指向指定的程序存储器地址(pmad),该地址可以是符号或一个数字。如果是延迟转移(指令带有后缀D),紧接着该指令的两条单字指令或一条双字指令从程序存储器中取出先执

11、行。BACC A;程序指针指向src的低16位所确定的地址。如果是延迟转移(指令带有后缀D),紧跟着该指令的两条单字或一条双字指令从程序存储器中取出先执行。CALA A;程序指针转移到src的低位所确定的地址单元,返回地址压入栈顶。如果是延迟调用,紧接着该指令的两条单字指令或一条双字指令从程序存储器中取出来先执行。RPT DATA127;该指令实现对下一条指令的自动循环执行。在循环执行期间,所有外部的中断都不会响应,如果有较长时间的循环,一定保证循环期间没有中断产生。ST #99,BRC;执行循环块100次RPTB end_block1;循环执行一段指令块,循环的次数由存储器映射的块循环计数器

12、(BRC)确定。BRC的值必须在指令执行之前设置。程序执行时,块循环起始地址寄存器(RSA)中装入程序指针PC+2(如果是采用了延迟就是PC+4);块循环尾地址寄存器(REA)中装入程序存储器地址(pmad)。RPTZ A,#1023;对目的累加器dst清0,并且循环执行下一条指令n+1次。FRAME 10h;把一个短立即数K加到堆栈指针SP中。POPD 10;把由堆栈指针SP寻址的数据存储器单元的内容转移到由Smem确定的数据存储器单元中,然后堆栈指针SP执行加1操作。POPM AR5;把由堆栈指针SP寻址的数据存储器单元的内容转移到指定的存储器映射寄存器MMR中,然后堆栈指针SP执行加1操

13、作。PSHD *AR3+;SP减1后将数据压入堆栈。PSHM BRC;BRC:存储器映射的块循环计数器。SP减1后,将MMR压入堆栈。MAR *AR3+;修改由Smem所确定的辅助寄存器的内容。在兼容方式下(CMPT=1),并且ARxAR0,指令会修改ARx的内容以及辅助寄存器指针(ARP)的值;在非兼容方式下(CMPT=0),指令只修改辅助寄存器的值,而不改变ARP。XC 1,ALEQ MAR *AR1+该指令的运行情况由n和所选择的条件决定。如果n1并且满足条件,就执行该指令的下一条单字指令;如果n2并且满足条件,就执行该指令的下两条单字指令或者一条双字指令;如果不满足条件,执行n次nop

14、操作。DLD *AR3+,B;把一个32位的长操作数Lmem装入目的累加器dst中。LD *AR4,DP;把一个数据存储器的值或一个短立即数装入T寄存器或状态寄存器中的DP、ASM和ARP位。LDM AR4,A;把存储器映射寄存器MMR中的值装入到目的累加器的低位字中,累加器的高位字和保护位清0 。不论DP的当前内容或ARx的高9位是多少,有效地址的高9位清0,将数据页指针设置为0。LDR *AR1,A;把单数据存储器操作数Smem左移16位后装入目的累加器DST的高端(位3116)。Smem通过对累加器的位140清0进行四舍五入运算,累加器的第15位设置为1。LDU *AR1,A;把单数据存

15、储器Smem的值装入目的累加器dst的低端(位150),dst的保护位和高端(位3916)清0。因此,数据被看成是一个无符号的16位数,不管SXM位的状态如何都不进行符号扩展。DST B,*AR3+;把源累加器的内容存放在一个32位的长数据储存器单元中Lmem中。STH A,10;把源累加器src的高端(位3116)存放到数据存储器单元Smem中.STH B,8,*AR7;把源累加器移位后位3116存放到数据存储器单元(Smem或Xmem)中。STLM A,BRC;把源累加器src的低端(位150)存放到存储器映射寄存器MMR中。无论DP的当前值或ARx的高9位是多少,有效地址的高9位清0。L

16、D *AR4+,16,A|MAC *AR5+,B16位双数据存储器操作数Xmem左移16位后装入目的累加器的高端。同时并行执行一个双数据操作数Ymem与T寄存器的值相乘再把乘积加到dst_中的操作。LD *AR4+,16,A|MACR *AR5+,B指令带有R后缀,则对乘积和累加器操作的结果进行四舍五入,再存在dst中。四舍五入的方法是:给该值加上215,然后将结果的低端(位150)清0。MVDD *AR3+,*AR5+;将Xmem寻址的数据存储器单元的内容复制到Ymem寻址的数据存储器单元中。若辅助寄存器AR0的值为0x0005H,AR3的值为0x030FH,请分别给出下列寻址方式修改后的辅

17、助寄存器的值。(6分)*AR3+ ; AR3=0310H*AR3+0 ; AR3=0314H*AR3(15) ; AR3=0324H分别解释以下指令的功能。(6分)LD #80h, A; 把立即数80H装入累加器ALD 80h, A; 把80H为地址的数据装如累加器ALD #80h,16, A; 把立即数80H左移16位后装如累加器A5、MAC X0,Y0,A X:(R0)+,X0 Y:(R4)+N4,Y0这条指令命令DSP56300将寄存器X0和Y0中的数相乘,结果加到Acc A中,将寄存器R0所指的X存储器地址中的值装入寄存器X0,将寄存器R4所指的Y存储器地址中的值装入寄存器Y0,R0的

18、值加1,寄存器N4的值加给R4。6、 定点加法 temp3=temp1+temp2ldtemp1,a;变量temp1装入累加器Aadd temp2,a;变量temp2与累加器A相加,结果放入A中stla,temp3;结果(低16位)存入变量temp3中。(没有特意考虑temp1和temp2是整数还是小数)编程实现小数乘法,要求将变量temp1装入累加器高16位与temp2相乘,结果存入temp3。SSBX FRCT ;置FRCT标志位,准备小数乘法LD temp1,16,A ;将变量temp1装入累加器A的高16位MPYA temp2 ;完成temp2与累加器A的高16位相乘,结果放入B累加器

19、,并将temp2装入T寄存器STH temp3 ;将乘积结果的高16位存入变量temp37、定点减法stm #temp1,ar3;变量temp1的地址装入ar3寄存器 stm #temp2,ar2;变量temp2的地址装入ar2寄存器 sub *ar2, *ar3,b ;变量temp2和temp1都左移16位,然后相减,结果放入 累加器B中(高16位) sth b,temp3; 相减的结果(累加器B的高16位)存入变量temp3。8、 定点整数乘法rsbxFRCT ;清FRCT标志,准备整数乘ld temp1,T;变量temp1装入T寄存器mpytemp2,a;temp2*temp1,结果放入

20、累加器A(32位)stha,temp3;结果的高16位存入temp3stla,temp4;结果的低16位存入temp49、 定点小数乘法ssbx FRCT;FRCT=1,准备小数乘法ld temp1,16,a ;temp1装入A的高16位mpya temp2;temp2乘A的高16位,结果在B中,同时将temp2装入T寄存器sthb,temp3;将乘积的高16位存temp310、使用C54X汇编语言编程计算z1=x1+y1;z2=x1-y1;z3=x1*y1;z4=x2*y2。其中,x1=20,y1=54,x2=0.5,y2=-0.5837编写汇编源程序如下: .title “suanshu.

21、asm” .mmregs .bss x1,1 .bss x2,1 .bss y1,1 .bss y2,1 .bss z1,1 .bss z2,1 .bss z3_h,1 .bss z3_l,1 .bss z4,1 v1 .set 014h ; v1 =20 v2 .set 036h ; v2=54 v3 .set 04000h ; v3=0.5 v4 .set 0b548h ; v4=-0.5837start: LD #x1,DP ST #v1,x1 ST #v2,y1 LD x1,A ;x1 A ADD y1,A ;A+Y1 A STL A,z1 ;保存AL z1 LD x1,A SUB y

22、1,A STL A,z2 RSBX FRCT ;准备整数乘法,FRCT=0 LD X1,T MPY Y1,A ; x1*y1 A STH A,z3_h ;乘法结果高16位在z3_h 单元 STL A,z3_l ;乘法结果低16位在z3_l单元 ST #v3,x2 ST #v4,y2 SSBX FRCT ;准备小数乘法,FRCT=1 LD x2,16,A ; 将x2加载到AH MPYA y2 ;x2*y2 B,and y2 TSTH B,z4 ;结果放到z4单元 11、 对数组x8=0,1,2,3,4,5,6,7进行初始化 .bss x,8 .dataTable: .word 0,1,2,3,4

23、,5,6,7 .textStart: STM #x,AR5 RPT #7 MVPD table,*AR5+ 将数组x5 初始化为1,2,3,4,5。.data;定义初始化数据段起始地址TBL:.word 1,2,3,4,5 ;为标号地址TBL;开始的5个单元赋初值.sect “.vectors” ;定义自定义段,并获得该段起始地址B START ;无条件转移到标号为START的地址.bss x,5 ;为数组x分配5个存储单元.text ;定义代码段起始地址START:STM #x,AR5 ;将x的首地址存入AR5RPT #4 ;设置重复执行5次下条指令MVPD TBL,*AR5+ end: B

24、 end.end实现对数组X5=1,2,3,4,5的初始化,然后将数据存储器中的数组X5复制到数组Y5。最后实现数组X和数组Y中对应元素相乘并累加,即z=1*1+2*2+3*3+4*4+5*5 mmregs bss x, 5 bss y, 5 bss z, def starttable: word 1,2,3,4,5 text start: STM #x, AR1 RPT 4 MVPD table,*AR1+ ;从程序存储器传送到数据存储器数组X5 STM # x, AR2STM # y, AR3 RPT 4 MVDD *AR1,*AR3 ;从数据存储器数组X5传送到Y5 SSBX FRCT

25、;准备整数乘法 STM # x, AR2 STM # y, AR3STM # z, AR4RPTZ 4 MAC *AR2+,*AR3+,A STL A,*AR4 End: B end end12、对数据x8中的每个元素加1 .bss x,8Begin: LD #1,16,B STM #7,BRC STM #x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+next: LD #0,B 12、 求解 .其中数据均为小数,且a1=0.3 a2=0.2 a3= -0.4 a4=0.1x1=0.6 x2=0.5 x3=-0.1 x4=-0.2.bss a,4 .b

26、ss x,4 .datatable: .word 3*32768/10 .word 2*32768/10 .word -4*32768/10 .word 1*32768/10 .word 6*32768/10 .word 5*32768/10 .word -1*32768/10 .word -2*32768/10 .textStart: SSBX FRCT STM #a,AR4 RPT #7 MVPD table,*AR4+ STM #x,AR5 STM #a,AR6 RPTZ A,#3 MAC *AR5+,*AR6+,A13、 计算 y =.bss x, 4, 1a0.word 012ha1

27、.word 3211ha2.word fe11ha3.word ff03h.sect “program”LD #X, AR1LD #0, A,AR1LD #a0, T MAC *+,ALD #a1,TMAC *+,ALD #a2,TMAC *+,A LD #a3,TMAC *,A14、 在堆栈操作中,PC当前地址为4020H,SP当前地址为1013H,运行PSHM AR7后,PC和SP的值分别是多少?解:SP=1012H; PC=4021H16、试编写0.25×(-0.1)的程序代码。.title "FracAmp.asm".mmregs .global _c_i

28、nt00.bss x,1.bss y,1.bss z,1.dataAmpCoef:.word 25*32768/100.word -1*32768/10.text_c_int00:ssbx FRCTstm #x,ar1rpt #0x1mvpd #AmpCoef,*ar1+stm #x,ar2stm #y,ar3mpy *ar2,*ar3,Asth A,*ar1Wait:b Wait.end17、 将定点数0.00125用浮点数表示。解:A=28H;T=19H18、试写出以下两条指令的运行结果:EXP AA=FFFD876624 T=0000则以上指令执行后,B、T的值各是多少?解: A=0xF

29、FFD876624;T=5NORM BB=420D0D0D0D, T=FFF9则以上指令执行后,B、T的值各是多少?解:B=0x841A1A1A, T=FFF919a20=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,x20=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1的初始化,并将数据存储器中的数组x20复制到数组y20,将数据存储器中的a20写入到程序存储器PROM(2000H-2013H),再将程序存储器PROM中的20个数据存入数据存储器DATA(0200H-0213H).mmregs .dat

30、aTBL: .word 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 .word 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1PROM : .usect “PROM”,20 .bss a,20 .bss x,20 .bss y,20DATA .usect “DATA”,20 .textStart: STM #a,AR1 RPT #39 MVPD TBL,*AR1+ STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+ STM #a,AR1 LD #PROM,A S

31、TM #19,AR3LOOP: WRITA *AR1+ ADD #1,A,A BANZ LOOP,*AR3- LD #PROM-1,A STM #DATA,AR1 ST #19,BRC RPTB LOOP1 ADD #1,A,ALOOP1: READA *AR1+WAIT: NOP B WAIT20、 建立链接命令文件 _o mymove.out _m mymove.map MEMORY PAGE 0: RAM: origin=1000h,length=800h RAM1:origin=2000h,length=300h PAGE 1: DARAM1: origin=0100h,length=

32、100h DARAM2: origin=0200h,length=100h SECTIONS .data :>RAM PAGE 0 .text :>RAM PAGE 0 PROM:>RAM1 PAGE 0 .bss :>DARAM1 PAGE1 DATA :>DARAM2 PAGE1 21、设计一存储空间为100个单元的堆栈。将栈底地址指针送SP,对其初始化。Size .set 100;设置堆栈空间的大小为100Stack .usect "STK",size ;设置堆栈段的首地址和堆栈空间STM #stack+size,SP 利用SUBC完成整

33、除法,41H/7H=9H,余数是2H。LD #0041H, BSTM #0100H, AR2STM #0110H, AR3ST #0007H, *AR2RPT #15SUBC *AR2,BSTL B,*AR3+STH B,*AR3编写求解加、减法的程序,计算z=x+y-w。.title "ex41.asm".mmregsSTACK .usect “STACK”,10H.bss x,1.bss y,1.bss w,1.bss z,1.def startTable: .word 6, 7,9.textStart: STM #0,SWWSRSTM #STACK+10H,SPSTM

34、 #x,AR1RPT #2MVPD table,*AR1+LD x,AADD y,ASUB w,ASTL A,zEnd: B end.end阅读下列汇编源程序,在每条语句后写出注释,并叙述程序的功能。.title "cjy4.asm".mmregsSTACK .usect "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*32

35、768/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的首地址传给AR1RPT #7 ;重复8次下条指令MVPD table,*AR1+ ;将程序空间8个数传给数据存储器STM #x,AR2 ;将数据存储器第一个数x1的地址传给AR2STM #a,AR3 ;将数据存储器第五个数a1的地址传给AR3RPT

36、Z 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个存储单元.datatable:.word 1,2,3,4,5,6,7,8,9,10.def s

37、tart ;定义标号start.textstart:STM #0,SWWSR ;复位SWWSRSTM #STACK+30H,SP;初始化堆指针STM #x,AR1 ;将目的地首地址赋给AR1RPT #19 ;设定重复传送的次数为20次MVPD table,*AR1+ ;程序存储器传送到数据存储器STM #x,AR2 ;将x的首地址存入AR2STM #y,AR3 ;将y的首地址存入AR3RPT #19 ;设置重复执行20次下条指令MVDD *AR2+,*AR3+;将地址x开始的20个值复制到地址y开始的20个单元end: B end.end程序功能:将数据存储器中的数组x10复制到数组y10。阅

38、读下面的程序,回答问题。 .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; 阅读下面的程序: .mmregsDAT0.SET60HDAT1.SET61HDAT2.SET62HDAT3.SET63Hadd3

39、.macro P1,P2,P3,ADDRP LD P1,A ADD P2,A ADD P3,A STL A,ADDRP .endmST #0034h,DAT0ST #0243h,DAT1ST #1230h,DAT2ADD3 DAT0,DAT1,DAT2,DAT3 问题:(1)语句“.mmregs”的含义。定义存储器映像寄存器的符号名称。(2)语句“ADD3 DAT0,DAT1,DAT2,DAT3”是一条什么类型的语句?作用是什么? 宏调用。执行三个数相加。(3)执行此段程序后,存储单元(DAT3)的运行结果多少? 14a7H阅读下面的程序片断,写出运行结果 .mmregsDAT0.SET60H

40、 LD #004h,DPST #0345h,DAT0STM #0002h,TMPY DAT0,ANOP问题:(1)寄存器T的作用是什么?寄存器T的作用是暂存被乘数(2)执行“MPY DAT0,A”后,累加器A的内容是什么?累加器A的内容为0x68A或68Ah阅读程序,回答后面的问题 STM #6,AR4begin: STM #9,BRC RPTB next-1 nopnext: LD #0,B banz begin,*AR4问题:(1) BRC寄存器是做什么用途?BRC保存着RPTB指令的循环次数(2)语句“banz begin,*AR4”的作用是什么? 判断AR4的内容是否为零,若不为零,跳

41、转到标号begin。(3)其中的“nop”语句被执行了多少次?70次阅读下面的程序片断,写出运行结果 .mmregsbei_hua .set 18 LD # bei_hua,A问题:(1)“.mmregs”的作用是什么?定义存储器映像寄存器的符号名称(2) 运行此段程序后,累加器A的结果是多少?A的结果是18阅读下面的程序,回答问题。.sect ".vectors"rst:B _c_int00 ;复位中断向量的入口NOPNOP .space 18*4*16tint:B timeout ;定时器0的中断向量的入口NOPNOP问: (1) “.sect”伪指令的作用是什么?定义

42、一个自定义段名的程序段(2) 标号“rst”的地址为6000H,请问标号“tint”的地址是多少?604Ch阅读下面的命令连接文件(简称CMD文件)和程序文件: CMD文件:MEMORY PAGE 0:PROG:origin = 0x1000,length = 0x1000PAGE 1:DATA:origin = 0x2000,length = 0x1000SECTIONS.text:>PROG PAGE 0.data:>DATA PAGE 1.datatable: .word 1,2,3,4 ; 变量初始化.textstart: STM # 0,SWWSR ; 插入0个等待状态问

43、:(1)MEMORY和SECTIONS的作用各是什么?MEMORY和SECTIONS链接伪指令,用来指定目标存储器结构和地址分配。(2)标号“table”和“start”的地址分别是什么,分别位于程序空间还是数据空间?标号table:1000h(程序空间);标号start:2000h(数据空间)阅读下面的程序片断,回答下面的问题DAT0.SET60HDAT1.SET61HDAT2.SET62HDAT3.SET63HLD #004h,DPST #83h,DAT0ST #0041h,DAT1RSBX SXMLD DAT0,ARPT #15SUBC DAT1,ASTL A,DAT2STH A,DAT

44、3问:在CPL=0的情况下,(1) 语句“STL A,DAT2”,其中DAT2所指的地址是多少?0262h(2) 存储单元(DAT2)和(DAT3)的内容是多少?(DAT2)=02H (DAT3)=01H阅读下面的程序,回答问题。MEMORY PAGE 0:PROG:origin = 0x2000,length = 0x1000PAGE 1:DATA:origin = 0x3000,length = 0x1000SECTIONS.text:>PROG PAGE 0.bss: >DATA PAGE 1汇编程序: .bss a,4 .bss x,4 .bss y,1STM #a, AR

45、3 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) 阅读下面的程序,回答问题。 MEMORY PAGE 0:PROG:origin = 0x2000,length = 0x1000P

46、AGE 1:DATA:origin = 0x4000,length = 0x1000SECTIONS.text:>PROG PAGE 0STACK:>DATA PAGE 1汇编程序size .set 0x0120stack .usect “STACK”,size .text STM # stack + size,SP 问题:(1)指令“stack .usect “STACK”,size”的作用是什么?定义一个未初始化段,段名为”STACK”,目的是为变量stack保留size个单元的存储空间。(2)标号“stack”的存储器地址是多少?stack的存储空间为0x4000;(3)执行

47、这段代码之后,SP寄存器的内容是多少? SP=0x4120; MEMORYPAGE 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 1STACK    :>DARAM PAGE 1vectors   :>VE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论