DSP程序題參考模板_第1頁(yè)
DSP程序題參考模板_第2頁(yè)
DSP程序題參考模板_第3頁(yè)
DSP程序題參考模板_第4頁(yè)
DSP程序題參考模板_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1、已知(80H)=50H,AR2=84H,AR3=86H,AR4=88H。MVKD 80H,*AR2MVDD *AR2,*AR3MVDM 86H, AR4運(yùn)行以上程序后,(80H)、(84H)、*AR3和AR4的值分別等于多少?解:(80H)=50H,(84H)=50H,*AR3=50H,AR4=50H2、已知,(80H)=20H、(81H)=30H。LD #0,DPLD 80H,16,BADD 81H,B運(yùn)行以上程序,B等于多少?答:(B)=00 0000 0000H3、閱讀以下程序,分別寫(xiě)出運(yùn)行結(jié)果。.bss x,4.data table:.word 4,8,16,32STM #x,AR

2、1RPT #2MVPD table,*AR1+解:數(shù)據(jù)表table中的常量4傳送到以變量x 的地址為地址的存儲(chǔ)單元中;數(shù)據(jù)表table中的常量8傳送到以變量x+1 的地址為地址的存儲(chǔ)單元中;數(shù)據(jù)表table中的常量16傳送到以變量x+2 的地址為地址的存儲(chǔ)單元中;.bss x,4.datatable: .word 4,8,16,32STM #x,AR1RPT #2MVPD table,*+AR2解:數(shù)據(jù)表table中的常量4傳送到以變量x+1 的地址為地址的存儲(chǔ)單元中;數(shù)據(jù)表table中的常量8傳送到以變量x+2 的地址為地址的存儲(chǔ)單元中;數(shù)據(jù)表table中的常量16傳送到以變量x+3 的地址

3、為地址的存儲(chǔ)單元中;4、 指令A(yù)DD #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存到長(zhǎng)字單元AR1中,且AR減1。LDM AR1,A /存儲(chǔ)器映像寄存器尋址方式,將映像寄存器加載累加器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、 /數(shù)據(jù)存儲(chǔ)器內(nèi)部傳送數(shù)據(jù)AR3AR5,且指令結(jié)束后AR3與AR5加1。2 / 22MPYA TEMP2/B<=A.Temp2,T=Temp2。PPT #99NOP/重復(fù)NOP100次。STL A,quot/將累加器A的低16位字存放在quot的存儲(chǔ)單元中。STL B,*AR3+/將累加器的低位移位后加載到AR3所指地址。WRITA SMEM /將A的內(nèi)容寫(xiě)入SMEM中。LD #0032H,4,A/立即數(shù)0032H先左移4位后,再加載累加器A.STM #1000H,*AR2/立即數(shù)1000H存儲(chǔ)到AR2指向的地址單元MAC #345,A,B/立即數(shù)345與T寄存器內(nèi)值相乘后與累加器A值相

5、加,結(jié)果加載累加器B.MVDD *AR3-,100H /AR3指向的地址單元的值傳送給地址100H單元, AR3中地址減一。LDM *AR1,A/AR1指向的地址單元的值加載到累加器A.SYM1 .set 2 ;符號(hào)SYM1=2Begin: LD #SYM1, AR1 ;將2裝入AR1Label:ADD #123,B ;表示將操作數(shù)123(十進(jìn)制)和累加器B中的內(nèi)容相加Label:LD *AR4,A ;操作數(shù)*AR4為間接地址,將AR4中的內(nèi)容作為地址,然后將該地址的內(nèi)容裝入到指定的累加器ARPT #99 ;將下一條指令循環(huán)100次LD #0h,DP ;將0裝入數(shù)據(jù)頁(yè)指針ADD #0ffh,A

6、 ;將0ffh加給AccAADD #1234h,A ;將#1234h加給AccAMVKD sample,*AR5 ;sample所代表的就是一個(gè)dmadMVKD 1000h,*AR5 ;將數(shù)據(jù)存儲(chǔ)器1000h單元的數(shù)據(jù)傳送到由AR5所指的存儲(chǔ)單元中 。 1000h代表的是一個(gè)dmad (數(shù)據(jù)存儲(chǔ)器地址(dmad)尋址)MVPD table,*AR5 table 所代表的就是一個(gè)pmad(程序存儲(chǔ)器地址(pmad)尋址)PORTR PA, Smem ;從PA單元端口讀入一個(gè)數(shù)據(jù),傳送到Smem所指的數(shù)據(jù)單元中去PORTW Smem, PA ;從Smem所指的數(shù)據(jù)單元取出一個(gè)數(shù)據(jù),傳送到PA單元端

7、口PORTR FIFO, *AR5 ;把一個(gè)數(shù)從端口為FIFO的I/O口傳送到AR5所指向的數(shù)據(jù)單元LD *(BUFFER),A ;把地址為BUFFER的數(shù)據(jù)單元中的數(shù)據(jù)裝到AccA中LD #4,DP ;指向頁(yè)4(0200h-027Fh)ADD 9h,A ;將數(shù)據(jù)頁(yè)4中地址9h的數(shù)據(jù)加給AccAADD *,8,A ;將當(dāng)前輔助寄存器所指的地址里的數(shù)據(jù),左移8-bit后加給AccAADD *+,8,A ;將當(dāng)前輔助寄存器所指的地址里的數(shù)據(jù),左移8-bit后加給AccA,當(dāng)前輔助寄存器加1.ADD *+,8,A,AR4 ;數(shù)據(jù)左移加給AccA后,當(dāng)前輔助寄存器加1,選擇輔助寄存器AR4ADD *0

8、+,8,A ;執(zhí)行加法后,將AR0的值加給當(dāng)前輔助寄存器ADD *AR0+,8,A ;執(zhí)行加法后,將AR0的值加給當(dāng)前輔助寄存器,但反向進(jìn)位ADD *AR3+,14,A;將AR3指向的地址單元0100h的內(nèi)容1500h左移14位,得到5400000h加上1200h,將結(jié)果5401200h存在累加器A中ADDC *+AR2(5),A;將AR2加上5后指向的地址單元內(nèi)容,并進(jìn)位加到累加器A中,此指令計(jì)算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,指令執(zhí)行算術(shù)右移;SXM=1,移出的高位用符號(hào)位填。BIT *AR5+,15-12;指令中的(1512)表示測(cè)試第12

10、位,TC=(*AR5)(15-12),AR5=AR5+1BITF 5,#00FFh;測(cè)試Smem中指定的某些位,lk常數(shù)在測(cè)試一位或多位時(shí)起屏蔽作用。假如指定的一位或多位為0,狀態(tài)寄存器ST0的TC位清0,否則該位置1。CMPM *AR4+,0404h;比較16位單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem和16位常數(shù)lk是否相等。若相等,ST0寄存器的TC位置1,否則該位清0。CMPR 2,AR4; 測(cè)試AR4是否大于AR0BD 1000h;程序指針指向指定的程序存儲(chǔ)器地址(pmad),該地址可以是符號(hào)或一個(gè)數(shù)字。如果是延遲轉(zhuǎn)移(指令帶有后綴D),緊接著該指令的兩條單字指令或一條雙字指令從程序存儲(chǔ)器中取出先執(zhí)

11、行。BACC A;程序指針指向src的低16位所確定的地址。如果是延遲轉(zhuǎn)移(指令帶有后綴D),緊跟著該指令的兩條單字或一條雙字指令從程序存儲(chǔ)器中取出先執(zhí)行。CALA A;程序指針轉(zhuǎn)移到src的低位所確定的地址單元,返回地址壓入棧頂。如果是延遲調(diào)用,緊接著該指令的兩條單字指令或一條雙字指令從程序存儲(chǔ)器中取出來(lái)先執(zhí)行。RPT DATA127;該指令實(shí)現(xiàn)對(duì)下一條指令的自動(dòng)循環(huán)執(zhí)行。在循環(huán)執(zhí)行期間,所有外部的中斷都不會(huì)響應(yīng),如果有較長(zhǎng)時(shí)間的循環(huán),一定保證循環(huán)期間沒(méi)有中斷產(chǎn)生。ST #99,BRC;執(zhí)行循環(huán)塊100次RPTB end_block1;循環(huán)執(zhí)行一段指令塊,循環(huán)的次數(shù)由存儲(chǔ)器映射的塊循環(huán)計(jì)數(shù)器

12、(BRC)確定。BRC的值必須在指令執(zhí)行之前設(shè)置。程序執(zhí)行時(shí),塊循環(huán)起始地址寄存器(RSA)中裝入程序指針PC+2(如果是采用了延遲就是PC+4);塊循環(huán)尾地址寄存器(REA)中裝入程序存儲(chǔ)器地址(pmad)。RPTZ A,#1023;對(duì)目的累加器dst清0,并且循環(huán)執(zhí)行下一條指令n+1次。FRAME 10h;把一個(gè)短立即數(shù)K加到堆棧指針SP中。POPD 10;把由堆棧指針SP尋址的數(shù)據(jù)存儲(chǔ)器單元的內(nèi)容轉(zhuǎn)移到由Smem確定的數(shù)據(jù)存儲(chǔ)器單元中,然后堆棧指針SP執(zhí)行加1操作。POPM AR5;把由堆棧指針SP尋址的數(shù)據(jù)存儲(chǔ)器單元的內(nèi)容轉(zhuǎn)移到指定的存儲(chǔ)器映射寄存器MMR中,然后堆棧指針SP執(zhí)行加1操

13、作。PSHD *AR3+;SP減1后將數(shù)據(jù)壓入堆棧。PSHM BRC;BRC:存儲(chǔ)器映射的塊循環(huán)計(jì)數(shù)器。SP減1后,將MMR壓入堆棧。MAR *AR3+;修改由Smem所確定的輔助寄存器的內(nèi)容。在兼容方式下(CMPT=1),并且ARxAR0,指令會(huì)修改ARx的內(nèi)容以及輔助寄存器指針(ARP)的值;在非兼容方式下(CMPT=0),指令只修改輔助寄存器的值,而不改變ARP。XC 1,ALEQ MAR *AR1+該指令的運(yùn)行情況由n和所選擇的條件決定。如果n1并且滿(mǎn)足條件,就執(zhí)行該指令的下一條單字指令;如果n2并且滿(mǎn)足條件,就執(zhí)行該指令的下兩條單字指令或者一條雙字指令;如果不滿(mǎn)足條件,執(zhí)行n次nop

14、操作。DLD *AR3+,B;把一個(gè)32位的長(zhǎng)操作數(shù)Lmem裝入目的累加器dst中。LD *AR4,DP;把一個(gè)數(shù)據(jù)存儲(chǔ)器的值或一個(gè)短立即數(shù)裝入T寄存器或狀態(tài)寄存器中的DP、ASM和ARP位。LDM AR4,A;把存儲(chǔ)器映射寄存器MMR中的值裝入到目的累加器的低位字中,累加器的高位字和保護(hù)位清0 。不論DP的當(dāng)前內(nèi)容或ARx的高9位是多少,有效地址的高9位清0,將數(shù)據(jù)頁(yè)指針設(shè)置為0。LDR *AR1,A;把單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem左移16位后裝入目的累加器DST的高端(位3116)。Smem通過(guò)對(duì)累加器的位140清0進(jìn)行四舍五入運(yùn)算,累加器的第15位設(shè)置為1。LDU *AR1,A;把單數(shù)據(jù)存

15、儲(chǔ)器Smem的值裝入目的累加器dst的低端(位150),dst的保護(hù)位和高端(位3916)清0。因此,數(shù)據(jù)被看成是一個(gè)無(wú)符號(hào)的16位數(shù),不管SXM位的狀態(tài)如何都不進(jìn)行符號(hào)擴(kuò)展。DST B,*AR3+;把源累加器的內(nèi)容存放在一個(gè)32位的長(zhǎng)數(shù)據(jù)儲(chǔ)存器單元中Lmem中。STH A,10;把源累加器src的高端(位3116)存放到數(shù)據(jù)存儲(chǔ)器單元Smem中.STH B,8,*AR7;把源累加器移位后位3116存放到數(shù)據(jù)存儲(chǔ)器單元(Smem或Xmem)中。STLM A,BRC;把源累加器src的低端(位150)存放到存儲(chǔ)器映射寄存器MMR中。無(wú)論DP的當(dāng)前值或ARx的高9位是多少,有效地址的高9位清0。L

16、D *AR4+,16,A|MAC *AR5+,B16位雙數(shù)據(jù)存儲(chǔ)器操作數(shù)Xmem左移16位后裝入目的累加器的高端。同時(shí)并行執(zhí)行一個(gè)雙數(shù)據(jù)操作數(shù)Ymem與T寄存器的值相乘再把乘積加到dst_中的操作。LD *AR4+,16,A|MACR *AR5+,B指令帶有R后綴,則對(duì)乘積和累加器操作的結(jié)果進(jìn)行四舍五入,再存在dst中。四舍五入的方法是:給該值加上215,然后將結(jié)果的低端(位150)清0。MVDD *AR3+,*AR5+;將Xmem尋址的數(shù)據(jù)存儲(chǔ)器單元的內(nèi)容復(fù)制到Y(jié)mem尋址的數(shù)據(jù)存儲(chǔ)器單元中。若輔助寄存器AR0的值為0x0005H,AR3的值為0x030FH,請(qǐng)分別給出下列尋址方式修改后的輔

17、助寄存器的值。(6分)*AR3+ ; AR3=0310H*AR3+0 ; AR3=0314H*AR3(15) ; AR3=0324H分別解釋以下指令的功能。(6分)LD #80h, A; 把立即數(shù)80H裝入累加器ALD 80h, A; 把80H為地址的數(shù)據(jù)裝如累加器ALD #80h,16, A; 把立即數(shù)80H左移16位后裝如累加器A5、MAC X0,Y0,A X:(R0)+,X0 Y:(R4)+N4,Y0這條指令命令DSP56300將寄存器X0和Y0中的數(shù)相乘,結(jié)果加到Acc A中,將寄存器R0所指的X存儲(chǔ)器地址中的值裝入寄存器X0,將寄存器R4所指的Y存儲(chǔ)器地址中的值裝入寄存器Y0,R0的

18、值加1,寄存器N4的值加給R4。6、 定點(diǎn)加法 temp3=temp1+temp2ldtemp1,a;變量temp1裝入累加器Aadd temp2,a;變量temp2與累加器A相加,結(jié)果放入A中stla,temp3;結(jié)果(低16位)存入變量temp3中。(沒(méi)有特意考慮temp1和temp2是整數(shù)還是小數(shù))編程實(shí)現(xiàn)小數(shù)乘法,要求將變量temp1裝入累加器高16位與temp2相乘,結(jié)果存入temp3。SSBX FRCT ;置FRCT標(biāo)志位,準(zhǔn)備小數(shù)乘法LD temp1,16,A ;將變量temp1裝入累加器A的高16位MPYA temp2 ;完成temp2與累加器A的高16位相乘,結(jié)果放入B累加器

19、,并將temp2裝入T寄存器STH temp3 ;將乘積結(jié)果的高16位存入變量temp37、定點(diǎn)減法stm #temp1,ar3;變量temp1的地址裝入ar3寄存器 stm #temp2,ar2;變量temp2的地址裝入ar2寄存器 sub *ar2, *ar3,b ;變量temp2和temp1都左移16位,然后相減,結(jié)果放入 累加器B中(高16位) sth b,temp3; 相減的結(jié)果(累加器B的高16位)存入變量temp3。8、 定點(diǎn)整數(shù)乘法rsbxFRCT ;清FRCT標(biāo)志,準(zhǔn)備整數(shù)乘ld temp1,T;變量temp1裝入T寄存器mpytemp2,a;temp2*temp1,結(jié)果放入

20、累加器A(32位)stha,temp3;結(jié)果的高16位存入temp3stla,temp4;結(jié)果的低16位存入temp49、 定點(diǎn)小數(shù)乘法ssbx FRCT;FRCT=1,準(zhǔn)備小數(shù)乘法ld temp1,16,a ;temp1裝入A的高16位mpya temp2;temp2乘A的高16位,結(jié)果在B中,同時(shí)將temp2裝入T寄存器sthb,temp3;將乘積的高16位存temp310、使用C54X匯編語(yǔ)言編程計(jì)算z1=x1+y1;z2=x1-y1;z3=x1*y1;z4=x2*y2。其中,x1=20,y1=54,x2=0.5,y2=-0.5837編寫(xiě)匯編源程序如下: .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 ;準(zhǔn)備整數(shù)乘法,F(xiàn)RCT=0 LD X1,T MPY Y1,A ; x1*y1 A STH A,z3_h ;乘法結(jié)果高16位在z3_h 單元 STL A,z3_l ;乘法結(jié)果低16位在z3_l單元 ST #v3,x2 ST #v4,y2 SSBX FRCT ;準(zhǔn)備小數(shù)乘法,F(xiàn)RCT=1 LD x2,16,A ; 將x2加載到AH MPYA y2 ;x2*y2 B,and y2 TSTH B,z4 ;結(jié)果放到z4單元 11、 對(duì)數(shù)組x8=0,1,2,3,4,5,6,7進(jìn)行初始化 .bss x,8 .dataTable: .word 0,1,2,3,4

23、,5,6,7 .textStart: STM #x,AR5 RPT #7 MVPD table,*AR5+ 將數(shù)組x5 初始化為1,2,3,4,5。.data;定義初始化數(shù)據(jù)段起始地址TBL:.word 1,2,3,4,5 ;為標(biāo)號(hào)地址TBL;開(kāi)始的5個(gè)單元賦初值.sect “.vectors” ;定義自定義段,并獲得該段起始地址B START ;無(wú)條件轉(zhuǎn)移到標(biāo)號(hào)為START的地址.bss x,5 ;為數(shù)組x分配5個(gè)存儲(chǔ)單元.text ;定義代碼段起始地址START:STM #x,AR5 ;將x的首地址存入AR5RPT #4 ;設(shè)置重復(fù)執(zhí)行5次下條指令MVPD TBL,*AR5+ end: B

24、 end.end實(shí)現(xiàn)對(duì)數(shù)組X5=1,2,3,4,5的初始化,然后將數(shù)據(jù)存儲(chǔ)器中的數(shù)組X5復(fù)制到數(shù)組Y5。最后實(shí)現(xiàn)數(shù)組X和數(shù)組Y中對(duì)應(yīng)元素相乘并累加,即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+ ;從程序存儲(chǔ)器傳送到數(shù)據(jù)存儲(chǔ)器數(shù)組X5 STM # x, AR2STM # y, AR3 RPT 4 MVDD *AR1,*AR3 ;從數(shù)據(jù)存儲(chǔ)器數(shù)組X5傳送到Y(jié)5 SSBX FRCT

25、;準(zhǔn)備整數(shù)乘法 STM # x, AR2 STM # y, AR3STM # z, AR4RPTZ 4 MAC *AR2+,*AR3+,A STL A,*AR4 End: B end end12、對(duì)數(shù)據(jù)x8中的每個(gè)元素加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、 求解 .其中數(shù)據(jù)均為小數(shù),且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、 計(jì)算 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當(dāng)前地址為4020H,SP當(dāng)前地址為1013H,運(yùn)行PSHM AR7后,PC和SP的值分別是多少?解:SP=1012H; PC=4021H16、試編寫(xiě)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、 將定點(diǎn)數(shù)0.00125用浮點(diǎn)數(shù)表示。解:A=28H;T=19H18、試寫(xiě)出以下兩條指令的運(yùn)行結(jié)果:EXP AA=FFFD876624 T=0000則以上指令執(zhí)行后,B、T的值各是多少?解: A=0xF

29、FFD876624;T=5NORM BB=420D0D0D0D, T=FFF9則以上指令執(zhí)行后,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的初始化,并將數(shù)據(jù)存儲(chǔ)器中的數(shù)組x20復(fù)制到數(shù)組y20,將數(shù)據(jù)存儲(chǔ)器中的a20寫(xiě)入到程序存儲(chǔ)器PROM(2000H-2013H),再將程序存儲(chǔ)器PROM中的20個(gè)數(shù)據(jù)存入數(shù)據(jù)存儲(chǔ)器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、設(shè)計(jì)一存儲(chǔ)空間為100個(gè)單元的堆棧。將棧底地址指針?biāo)蚐P,對(duì)其初始化。Size .set 100;設(shè)置堆??臻g的大小為100Stack .usect "STK",size ;設(shè)置堆棧段的首地址和堆??臻gSTM #stack+size,SP 利用SUBC完成整

33、除法,41H/7H=9H,余數(shù)是2H。LD #0041H, BSTM #0100H, AR2STM #0110H, AR3ST #0007H, *AR2RPT #15SUBC *AR2,BSTL B,*AR3+STH B,*AR3編寫(xiě)求解加、減法的程序,計(jì)算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閱讀下列匯編源程序,在每條語(yǔ)句后寫(xiě)出注釋,并敘述程序的功能。.title "cjy4.asm".mmregsSTACK .usect "STACK",10H.bss a,4 ;為a分配4個(gè)存儲(chǔ)單元.bss x,4 ;為x分配4個(gè)存儲(chǔ)單元.bss y,1 ;為結(jié)果y分配1個(gè)存儲(chǔ)單元.def start.data ;定義數(shù)據(jù)代碼段table: .word 1*32768/10 ;在table開(kāi)始的8個(gè).word 2*32

35、768/10 ;地址放數(shù)據(jù).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 ;定義可執(zhí)行程序代碼段start:SSBX FRCT ;設(shè)置FRCT位,表示進(jìn)行小數(shù)乘STM #x,AR1 ;將x的首地址傳給AR1RPT #7 ;重復(fù)8次下條指令MVPD table,*AR1+ ;將程序空間8個(gè)數(shù)傳給數(shù)據(jù)存儲(chǔ)器STM #x,AR2 ;將數(shù)據(jù)存儲(chǔ)器第一個(gè)數(shù)x1的地址傳給AR2STM #a,AR3 ;將數(shù)據(jù)存儲(chǔ)器第五個(gè)數(shù)a1的地址傳給AR3RPT

36、Z A,#3 ;將A清零,重復(fù)4次下條指令MAC *AR2+,*AR3+,A ;執(zhí)行乘法累加和,結(jié)果放在A中 STH A,y ;將A的高端字存入結(jié)果y,低端字省去end: B end ;原處循環(huán)等待.end閱讀下列匯編源程序,在每條語(yǔ)句后寫(xiě)出注釋?zhuān)⑹龀绦虻墓δ堋?title “cjy1.asm” ;為匯編源程序取名 .mmregs ;定義存儲(chǔ)器映象寄存器STACK .usect “STACK”,30H;設(shè)置堆棧.bss x,10 ;為數(shù)組x分配10個(gè)存儲(chǔ)單元.bss y,10 ;為數(shù)組y分配10個(gè)存儲(chǔ)單元.datatable:.word 1,2,3,4,5,6,7,8,9,10.def s

37、tart ;定義標(biāo)號(hào)start.textstart:STM #0,SWWSR ;復(fù)位SWWSRSTM #STACK+30H,SP;初始化堆指針STM #x,AR1 ;將目的地首地址賦給AR1RPT #19 ;設(shè)定重復(fù)傳送的次數(shù)為20次MVPD table,*AR1+ ;程序存儲(chǔ)器傳送到數(shù)據(jù)存儲(chǔ)器STM #x,AR2 ;將x的首地址存入AR2STM #y,AR3 ;將y的首地址存入AR3RPT #19 ;設(shè)置重復(fù)執(zhí)行20次下條指令MVDD *AR2+,*AR3+;將地址x開(kāi)始的20個(gè)值復(fù)制到地址y開(kāi)始的20個(gè)單元end: B end.end程序功能:將數(shù)據(jù)存儲(chǔ)器中的數(shù)組x10復(fù)制到數(shù)組y10。閱

38、讀下面的程序,回答問(wèn)題。 .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問(wèn)題:(1)寄存器“BRC”的功能是什么?寄存器“BRC”的功能是暫存塊循環(huán)的次數(shù)(2)匯編語(yǔ)句“ADD *AR4,16,B,A”執(zhí)行了多少次?)8次(3)執(zhí)行語(yǔ)句“LD #0001H,16,B”后,累加器B的內(nèi)容是多少? 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 問(wèn)題:(1)語(yǔ)句“.mmregs”的含義。定義存儲(chǔ)器映像寄存器的符號(hào)名稱(chēng)。(2)語(yǔ)句“ADD3 DAT0,DAT1,DAT2,DAT3”是一條什么類(lèi)型的語(yǔ)句?作用是什么? 宏調(diào)用。執(zhí)行三個(gè)數(shù)相加。(3)執(zhí)行此段程序后,存儲(chǔ)單元(DAT3)的運(yùn)行結(jié)果多少? 14a7H閱讀下面的程序片斷,寫(xiě)出運(yùn)行結(jié)果 .mmregsDAT0.SET60H

40、 LD #004h,DPST #0345h,DAT0STM #0002h,TMPY DAT0,ANOP問(wèn)題:(1)寄存器T的作用是什么?寄存器T的作用是暫存被乘數(shù)(2)執(zhí)行“MPY DAT0,A”后,累加器A的內(nèi)容是什么?累加器A的內(nèi)容為0x68A或68Ah閱讀程序,回答后面的問(wèn)題 STM #6,AR4begin: STM #9,BRC RPTB next-1 nopnext: LD #0,B banz begin,*AR4問(wèn)題:(1) BRC寄存器是做什么用途?BRC保存著RPTB指令的循環(huán)次數(shù)(2)語(yǔ)句“banz begin,*AR4”的作用是什么? 判斷AR4的內(nèi)容是否為零,若不為零,跳

41、轉(zhuǎn)到標(biāo)號(hào)begin。(3)其中的“nop”語(yǔ)句被執(zhí)行了多少次?70次閱讀下面的程序片斷,寫(xiě)出運(yùn)行結(jié)果 .mmregsbei_hua .set 18 LD # bei_hua,A問(wèn)題:(1)“.mmregs”的作用是什么?定義存儲(chǔ)器映像寄存器的符號(hào)名稱(chēng)(2) 運(yùn)行此段程序后,累加器A的結(jié)果是多少?A的結(jié)果是18閱讀下面的程序,回答問(wèn)題。.sect ".vectors"rst:B _c_int00 ;復(fù)位中斷向量的入口NOPNOP .space 18*4*16tint:B timeout ;定時(shí)器0的中斷向量的入口NOPNOP問(wèn): (1) “.sect”偽指令的作用是什么?定義

42、一個(gè)自定義段名的程序段(2) 標(biāo)號(hào)“rst”的地址為6000H,請(qǐng)問(wèn)標(biāo)號(hào)“tint”的地址是多少?604Ch閱讀下面的命令連接文件(簡(jiǎn)稱(chēng)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個(gè)等待狀態(tài)問(wèn)

43、:(1)MEMORY和SECTIONS的作用各是什么?MEMORY和SECTIONS鏈接偽指令,用來(lái)指定目標(biāo)存儲(chǔ)器結(jié)構(gòu)和地址分配。(2)標(biāo)號(hào)“table”和“start”的地址分別是什么,分別位于程序空間還是數(shù)據(jù)空間?標(biāo)號(hào)table:1000h(程序空間);標(biāo)號(hào)start:2000h(數(shù)據(jù)空間)閱讀下面的程序片斷,回答下面的問(wèn)題DAT0.SET60HDAT1.SET61HDAT2.SET62HDAT3.SET63HLD #004h,DPST #83h,DAT0ST #0041h,DAT1RSBX SXMLD DAT0,ARPT #15SUBC DAT1,ASTL A,DAT2STH A,DAT

44、3問(wèn):在CPL=0的情況下,(1) 語(yǔ)句“STL A,DAT2”,其中DAT2所指的地址是多少?0262h(2) 存儲(chǔ)單元(DAT2)和(DAT3)的內(nèi)容是多少?(DAT2)=02H (DAT3)=01H閱讀下面的程序,回答問(wèn)題。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)問(wèn)題:(1)指令“STM #a, AR3”的作用是什么?執(zhí)行此句指令后,寄存器AR3的內(nèi)容是多少?將標(biāo)號(hào)a的地址賦給輔助工作寄存器AR3,AR3=3000h。(2)指令“MAC *AR3+,*AR4+,A”執(zhí)行了幾次?每執(zhí)行一次寄存器AR3和AR4的內(nèi)容如何變化?執(zhí)行了4次,每執(zhí)行一次輔助工作寄存器AR3和AR4的內(nèi)容增一。(3)這段代碼的功能是什么? (3) 閱讀下面的程序,回答問(wèn)題。 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 問(wèn)題:(1)指令“stack .usect “STACK”,size”的作用是什么?定義一個(gè)未初始化段,段名為”STACK”,目的是為變量stack保留size個(gè)單元的存儲(chǔ)空間。(2)標(biāo)號(hào)“stack”的存儲(chǔ)器地址是多少?stack的存儲(chǔ)空間為0x4000;(3)執(zhí)行

47、這段代碼之后,SP寄存器的內(nèi)容是多少? 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論