DSP 匯編語言程序設(shè)計_第1頁
DSP 匯編語言程序設(shè)計_第2頁
DSP 匯編語言程序設(shè)計_第3頁
DSP 匯編語言程序設(shè)計_第4頁
DSP 匯編語言程序設(shè)計_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

會計學(xué)1DSP匯編語言程序設(shè)計2內(nèi)容提要匯編語言源程序的概述堆棧的使用方法控制程序算術(shù)運(yùn)算1234第1頁/共58頁33-1匯編語言源程序概述

.asm為擴(kuò)展名助記符指令語法格式[標(biāo)號][:]助記符[操作數(shù)][;注釋]第2頁/共58頁43-1匯編語言源程序概述標(biāo)號冒號可選;由字母、數(shù)字、下劃線等組成;分大小寫供本程序或其它程序調(diào)用,標(biāo)號的值是段程序計數(shù)器SPC的當(dāng)前值(局部的符號地址)。例如,若使用.word偽指令初始化幾個字,則標(biāo)號將指到第一個字。

標(biāo)號也可獨(dú)立成行第3頁/共58頁53-1匯編語言源程序概述可作為.global,.ref,.def或.bss等匯編偽指令的操作數(shù)如:.def:在當(dāng)前模塊中定義,并可在別的模塊中使用的符號。.ref:在當(dāng)前模塊中使用,但在別的模塊中定義的符號。.global:可以是上面的任何一種情況。

第4頁/共58頁63-1匯編語言源程序概述操作數(shù)指令中參與操作的數(shù)值或匯編偽指令定義的內(nèi)容,緊跟在助記符的后面,由一個或多個空格分開。操作數(shù)前綴

“#”:作為立即數(shù)

例如:Label:ADD#99,B

“*”:間接地址,即把操作數(shù)的內(nèi)容作為地址例如:Label:LD*AR3,B“@”:作為直接地址,即操作數(shù)由直接地址碼賦值。例如:Label:LD@x,A第5頁/共58頁73-1匯編語言源程序概述匯編語言中的數(shù)據(jù)類型數(shù)據(jù)類型舉例說明二進(jìn)制1110001b

或1110001B

八進(jìn)制226q

或572Q

十進(jìn)制1234或+1234或-11234缺省型十六進(jìn)制0A40h

或0A40H

或0xA40浮點(diǎn)數(shù)1.623e-23僅用于C語言字符

‘D’字符串

“thisisastring”第6頁/共58頁83-1匯編語言源程序概述匯編時間常數(shù).set使用.set偽指令給一個符號賦值,該符號就成為一個匯編時間常數(shù),等效于一個常數(shù)。將符號常數(shù)賦給寄存器名。此時,該符號變成了寄存器的替代名。第7頁/共58頁93-1匯編語言源程序概述局部標(biāo)號局部標(biāo)號是一種特殊的標(biāo)號,使用的范圍和影響是臨時性的定義方式:

用$n來定義。n是0~9的十進(jìn)制數(shù)第8頁/共58頁103-1匯編語言源程序概述局部標(biāo)號舉例:

假設(shè)符號ADDRA,ADDRB,ADDRC已經(jīng)在前面作了定義。

第9頁/共58頁113-1匯編語言源程序概述符號:由A~Z,a~z,0~9,_和$組成;第一位不能為數(shù)字;不能含空格;符號也可被設(shè)置成常數(shù)值。為了提高程序的可讀性,可以用有意義的名稱來代表一些重要的常數(shù)值。如:第10頁/共58頁123-1匯編語言源程序概述匯編源程序中的表達(dá)式序號符號運(yùn)算操作求值順序1+-~!取正、取負(fù)、按位求補(bǔ)、邏輯負(fù)

從右至左2*/%乘法、除法、求模從左至右3+-加法、減法從左至右4^指數(shù)

從左到右

5<<>>左移、右移從左至右6<<=小于、小于等于從左至右7>>=大于、大于等于從左至右8!==不等于、等于從左至右9&按位與運(yùn)算從左至右10∧

按位異或運(yùn)算從左至右11|按位或運(yùn)算從左至右第11頁/共58頁133-2堆棧的使用當(dāng)程序調(diào)用中斷服務(wù)程序或子程序時,需要將程序計數(shù)器PC的值和一些重要的寄存器值進(jìn)行壓棧保護(hù),以便程序返回時能從間斷處繼續(xù)執(zhí)行?!疌54x提供一個用16位堆棧指針SP尋址的軟件堆棧。當(dāng)向堆棧中壓入數(shù)據(jù)時,堆棧是從高地址向低地址方向填入,堆棧指針SP先減1,然后將數(shù)據(jù)壓入堆棧。當(dāng)從堆棧中彈出數(shù)據(jù)時。數(shù)據(jù)先從堆棧中彈出,然后堆棧指針SP加1。第12頁/共58頁143-2

堆棧的使用方法堆棧的設(shè)置使用堆棧如:CALLpmad;(SP)-1→SP,(PC)+2→TOS,pmad→PCRET;(TOS)→PC,(SP)+1→SP

第13頁/共58頁153-2

堆棧的使用方法堆棧大小的確定先開辟一個較大的堆棧區(qū),用已知數(shù)填充如:

LD#-9224,BSTM#length,AR1MVMMSP,AR4loop:STLB,*AR4-

BANZloop,*AR1-

;堆棧區(qū)要充填的數(shù)0DBF8h加載B;設(shè)置循環(huán)次數(shù);設(shè)置數(shù)據(jù)指針AR4,SP→AR4;循環(huán),填充數(shù)據(jù)

運(yùn)行程序,執(zhí)行所有堆棧操作檢查堆棧中的數(shù)值用過的堆棧區(qū)就是實(shí)際需要的堆??臻g。數(shù)據(jù)RAMAR4→DBF8DBF8DBF8……DBF8DBF8SP→DBF86B140013…SP→7AB3用過的棧區(qū)第14頁/共58頁163-3控制程序’C54x具有豐富的程序控制指令,利用這些指令可以執(zhí)行分支轉(zhuǎn)移、子程序調(diào)用、子程序返回,條件執(zhí)行以及循環(huán)等控制操作分支操作:分支轉(zhuǎn)移程序子程序調(diào)用子程序返回條件操作程序比較轉(zhuǎn)移循環(huán)操作第15頁/共58頁173-3控制程序分支操作-分支轉(zhuǎn)移程序改寫PC值,使程序改變流向

分支轉(zhuǎn)移指令分類

指令

說明

無條件分支轉(zhuǎn)移

B[D]

用該指令指定的地址加載PC

BACC[D]

用累加器的低16位指定的地址加載PC條件分支轉(zhuǎn)移

BC[D]

若滿足指令給定條件,用該指令指定的地址加載PC

BANZ[D]若當(dāng)前選擇輔助寄存器不等于0,用該指令指定的地址加載PC遠(yuǎn)程分支轉(zhuǎn)移

FB[D]

用該指令指定的地址加載PC和XPC

FBACC[D]

用累加器的低23位指定的地址加載PC和XPC第16頁/共58頁183-3控制程序例:STM#88H,AR0LD#1000H,ALoop1:ADDAR0,A

BCLoop1,AGT,AOV;若累加器A>0且溢出則轉(zhuǎn)至Loop1,否則往下執(zhí)行

例:第17頁/共58頁193-3控制程序BCLoop1,AGT,AOV第18頁/共58頁203-3控制程序分支操作-子程序調(diào)用當(dāng)子程序被調(diào)用時,緊跟在調(diào)用后的下一條指令的地址保存在堆棧中。該地址用于返回時能繼續(xù)執(zhí)行調(diào)用前的程序分類

指令

說明

無條件調(diào)用

CALL[D]將返回的地址壓入堆棧,并用該指令指定的地址加載PC

CALA[D]將返回的地址壓入堆棧,用累加器A或B指定的地址加載PC條件調(diào)用

CC[D]

如果滿足指令給定條件,將返回的地址壓入堆棧,并用該指令指定的地址加載PC遠(yuǎn)程調(diào)用

FCALL[D]將XPC和PC壓入堆棧,并用該指令指定的地址加載PC和XPC

FCALA[D]將XPC和PC壓入堆棧,用累加器的低23位指定的地址加載PC和XPC第19頁/共58頁213-3控制程序分支操作-子程序返回子程序返回可使程序重新在被中斷的連續(xù)指令處繼續(xù)執(zhí)行。返回指令通過將彈出堆棧的值(包含將要執(zhí)行的下一條指令的地址),送到程序計數(shù)器PC來實(shí)現(xiàn)返回功能。分類

指令

說明

無條件返回

RET[D]將堆棧頂部的返回地址加載到PC。

RETE[D]

將堆棧頂部的返回地址加載到PC,并使能可屏蔽中斷。

RETF[D]

將RTN寄存器中的返回地址加載到PC,并使能可屏蔽中斷。條件返回

RC[D]如果滿足指令給定條件,將堆棧頂部的返回地址加載到PC。遠(yuǎn)程返回

FCALL[D]

FCALA[D]第20頁/共58頁223-3控制程序例:STM#123H,AR0LD#456H,AR1CALLnew LDAR1,16,Anew:MPYAR0,AR1,ARET;將操作數(shù)#123H裝入AR0;將操作數(shù)#456H裝入AR1;調(diào)子程序new;將AR1的內(nèi)容左移16位后裝入A;AR0與AR1的內(nèi)容相乘,結(jié)果放入A中;子程序返回

例:第21頁/共58頁233-3控制程序分支操作-比較轉(zhuǎn)移指令:

CMPRCC,ARx

指令功能:

輔助寄存器ARx與AR0進(jìn)行比較,若比較結(jié)果使所給定的測試條件成立,則TC位置1。實(shí)現(xiàn)方法:①通過CMPR的比較結(jié)果得TC值;②根據(jù)TC值,由條件轉(zhuǎn)移指令實(shí)現(xiàn)分支轉(zhuǎn)移。

第22頁/共58頁243-3控制程序例如:比較操作后條件分支轉(zhuǎn)移

STM#5,AR1

;AR1=5

STM#10,AR0

;AR0=10

loop:……*AR1+;AR1=AR1+1

……CMPRLT,AR1

;若AR1<AR0,則TC=1,否則為0

BCloop,TC

;若AR1<AR0,則循環(huán);若AR1≥AR0,則順序執(zhí)行第23頁/共58頁253-3控制程序循環(huán)操作指令:

BANZ轉(zhuǎn)移地址,*ARx

指令功能:當(dāng)輔助寄存器不為0時,則轉(zhuǎn)至轉(zhuǎn)移地址,否則順序執(zhí)行。第24頁/共58頁263-3控制程序例:.bssx,10;給x保留10個空間.bssy,1;給y保留1個空間STM#x,AR1;設(shè)置數(shù)據(jù)段的首地址

STM#9,AR2;設(shè)置循環(huán)計數(shù)值LD#0,A;累加器清0loop:ADD*AR1+,A;累加運(yùn)算,并修改地址BANZloop,*AR2-;若計數(shù)值不為0,則循環(huán),并計數(shù)值減1

;若計數(shù)值為0,則結(jié)束循環(huán)STLA,@y;累加和存入y中注意:

BANZloop,*AR2-;先判斷,再修正AR2=AR2-1用AR2作為循環(huán)計數(shù)器,由BANZ實(shí)現(xiàn)程序的循環(huán)控制。第25頁/共58頁273-4算術(shù)運(yùn)算加減法和乘法運(yùn)算在數(shù)字信號處理中,加法和乘法運(yùn)算是最常見的算術(shù)運(yùn)算。例:計算y=ax+b

LD@a,T

;取a值,T=a

MPY@x,

B

;完成ax乘積,B=ax

ADD@b,B

;完成ax+b運(yùn)算,B=ax+b

STLB,@y

;計算結(jié)果存入y中第26頁/共58頁28;T=x1;B=x1a1;T=x2;乘法累加,B=x1a1+x2a2;計算結(jié)果的低字BL存入y中;計算結(jié)果的高字BH存入y+1中3-4算術(shù)運(yùn)算例:計算y=xlal+x2a2

LD@x1,TMPY@a1,BLD@x2,TMAC@a2,BSTLB,@ySTHB,@y+1第27頁/共58頁29

例:計算

y=

3-4算術(shù)運(yùn)算Test1.asm第28頁/共58頁303-4算術(shù)運(yùn)算例:

求4項(xiàng)乘積aixi(i=1,2,3,4,5)中的最大值,并存放累加器A中。

STM#a,AR1STM#x,AR2STM#2,AR3LD*AR1+,TMPY*AR2+,Aloop1:LD*AR1+,TMPY*AR2+,BMAXABANZloop1,*AR3-;乘法運(yùn)算A=aixi,并修改AR2

;乘法運(yùn)算B=aixi,并修改AR2

;求A和B中的最大值;若AR3≠0,則循環(huán),并修改AR3第29頁/共58頁313-5重復(fù)操作指令RPT:重復(fù)下條指令RPTZ:累加器清0,并重復(fù)下條指令RPTB:塊重復(fù).bssx,8STM#x,AR1LD#0,ARPT#7STL

A,*AR1+.bssx,8STM#x,AR1RPTZA,#7STL

A,*AR1+【例】對數(shù)組進(jìn)行初始化,使x[8]={0,0,0,0,0,0,0,0}第30頁/共58頁323-5重復(fù)操作【例】對數(shù)組x[8]中的每一元素加1。.bssx,8begin:LD#1,16,BSTM#7,BRCSTM#x,AR4RPTBnext-1ADD*AR4,16,B,ASTHA,*AR4+next:LD#0,B

…;設(shè)置重復(fù)次數(shù),BRC=7,循環(huán)8次;設(shè)置循環(huán)結(jié)束地址;數(shù)組數(shù)據(jù)左移16位與BH相加;存入數(shù)組結(jié)果,并修改地址注意①塊結(jié)束地址REA②重復(fù)次數(shù)③RPTB指令可以響應(yīng)中斷

第31頁/共58頁333-6數(shù)據(jù)塊傳送指令數(shù)據(jù)存儲器之間

MVDKSmem,dmadMVKDdmad,SmemMVDDXmem,Ymem

數(shù)據(jù)存儲器與MMR之間

MVDMdmad,MMRMVMDMMR,dmadMVMMMMRx,MMRy

程序存儲器和數(shù)據(jù)存儲器之間

MVPDpmad,SmemMVDPSmem,pmadREADASmemWRITASmem

從PA口讀/寫數(shù)據(jù)

PORTRPA,SmemPORTWSmem,PA

第32頁/共58頁343-6數(shù)據(jù)塊傳送第33頁/共58頁353-6數(shù)據(jù)塊傳送【例】初始化數(shù)組x[8]={0,1,2,3,4,5,6,7}。.bssx,8.dataTBL:.word0,1,2,3,4,5,6,7.textSTART:STM#x,AR5RPT#7MVPDTBL,*AR5+……第34頁/共58頁363-7雙操作數(shù)乘法課后自習(xí)雙操作數(shù)乘法的編程方法、特點(diǎn)第35頁/共58頁373-8小數(shù)運(yùn)算定標(biāo)設(shè)定小數(shù)點(diǎn)在16位中的位置。位置不同,可以表示不同大小和不同精度的小數(shù)。Q表示法如Q0,Q1,…,Q15。Q越大,可以表示的數(shù)的范圍越小,但精度越高。小數(shù)表示方法基于2的補(bǔ)碼小數(shù)(Q15格式),其位權(quán)值:MSB…………LSB-1.2-12-22-3……2-15

00000010.10100000——21+2-1+2-3=2.625第36頁/共58頁38

0.5——4000H

0.25——2000H

0——0000H

-0.25——E000H-0.5——C000H-1——8000H0.5×32768=4000H0.25×32768=2000H0×32768=0000H(0.25×32768)補(bǔ)=E000H(0.5×32768)補(bǔ)=C000H(1×32768)補(bǔ)=8000H注意:匯編時,不能直接寫成十進(jìn)制小數(shù)

如:0.907.word32768*907/10003-8小數(shù)運(yùn)算2的補(bǔ)碼小數(shù):正數(shù):乘以32768(215),整數(shù)轉(zhuǎn)換成16進(jìn)制數(shù)(Q15格式)

負(fù)數(shù):其絕對值乘以32768,整數(shù)取反加1(Q15格式)第37頁/共58頁393-8小數(shù)運(yùn)算小數(shù)乘法與冗余符號位小數(shù)乘法實(shí)例0.5(-0.375)=-0.1875假設(shè)字長4位,累加器8位(Q3格式)

0100

(0.5)1101

(-0.375)×0100000001001100

(-0100)

1110100(-0.1875)

第38頁/共58頁403-8小數(shù)運(yùn)算乘積:

-0.1875=11101007位二進(jìn)制

擴(kuò)展8位后,乘積:11110100=-0.09375出錯原因:兩帶符號數(shù)相乘,其結(jié)果帶有2個符號位。

解決辦法:運(yùn)算結(jié)果左移一位,消去多余符號位??赏ㄟ^對FRCT位置1,乘法器自動將乘積結(jié)果左移一位,自動消去冗余符號位

第39頁/共58頁413-8小數(shù)運(yùn)算【例】

編制程序段計算

a1=0.3a2=0.2a3=-0.4a4=0.1

x1=0.6x2=0.5x3=-0.1x4=-0.2

floatMAC.asm第40頁/共58頁423-9FIR濾波器的設(shè)計FIR濾波器的差分方程:FIR濾波器的傳遞函數(shù):FIR濾波器的結(jié)構(gòu)

z-1z-1+x(n)y(n)x(n-1)x(n-N+1)b0b1bN-2bN-1z-1第41頁/共58頁433-9FIR濾波器的設(shè)計FIR濾波器的輸出表達(dá)式y(tǒng)(n)=b0x(n)+b1x(n-1)+…

+bn-1x(n-N+1)

bi為濾波器系數(shù),x(n)為濾波器在n時刻的輸入,y(n)為n時刻的輸出。

基本算法:采用乘法累加運(yùn)算。即不斷輸入樣本x(n),經(jīng)過z-1延時后,再進(jìn)行乘法-累加,最后輸出濾波結(jié)果y(n)。z-1算法的實(shí)現(xiàn)

線性緩沖區(qū)法循環(huán)緩沖區(qū)法第42頁/共58頁443-9FIR濾波器的設(shè)計線性緩沖區(qū)法在數(shù)據(jù)存儲器中開辟一個N單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本;從最老樣本開始取數(shù),每取一個數(shù)后,樣本向下移位;讀完最后一個樣本后,輸入最新樣本并存入緩沖區(qū)的頂部。緩沖區(qū):頂部為低地址單元,存放最新樣本;底部為高地址單元,存放最老樣本;指針ARx指向緩沖區(qū)底部。數(shù)據(jù)存儲器緩沖區(qū)頂部最新樣本緩沖區(qū)底部最老樣本←ARx高地址第43頁/共58頁453-9FIR濾波器的設(shè)計求y(n)的過程:算法最新樣本數(shù)據(jù)存儲器最老樣本ARx→x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)x(n-7)取數(shù)、移位和運(yùn)算:①以ARx為指針,按x(n-7)……x(n)的順序取數(shù),每取一次數(shù)后,數(shù)據(jù)向下移一位,并完成一次乘法累加運(yùn)算;

②當(dāng)經(jīng)過8次取數(shù)、移位和運(yùn)算后,得y(n);

③求得y(n)后,輸入新樣本x(n+1),存入緩沖區(qū)頂部單元;

④修改指針ARx,指向緩沖區(qū)的底部。

第44頁/共58頁463-9FIR濾波器的設(shè)計求y(n)的過程:算法最新樣本數(shù)據(jù)存儲器最老樣本ARx→x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)x(n-7)ARx→x(n-7)↑ARx→x(n-6)y(n)=y7=b7x(n-7)+0x(n-6)↑ARx→x(n-5)y(n)=y6=b6x(n-6)+y7x(n-5)↑ARx→x(n-4)y(n)=y5=b5x(n-5)+y6x(n-4)↑ARx→x(n-3)y(n)=y4=b4x(n-4)+y5x(n-3)↑ARx→x(n-2)y(n)=y3=b3x(n-3)+y4x(n-2)↑ARx→x(n-1)y(n)=y2=b2x(n-2)+y3x(n-1)↑ARx→x(n)y(n)=y1=b1x(n-1)+y2x(n)y(n)=b0x(n)+y1←PORTRx(n+1)ARx→第45頁/共58頁473-9FIR濾波器的設(shè)計求y(n+1)的過程:算法數(shù)據(jù)存儲器ARx→x(n+1)x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)結(jié)果:①y(n)取數(shù)順序:

x(n-6)……x(n+1)x(n-5)x(n-4)x(n-3)x(n-2)x(n-1)x(n)x(n+1)最新樣本:

x(n+2)

x(n+2)②y(n+1)⑦y(n+6)⑧

y(n+7)數(shù)據(jù)存儲器x(n+8)x(n+7)x(n+6)x(n+5)x(n+4)x(n+3)x(n+2)x(n+1)ARx→第46頁/共58頁483-9FIR濾波器的設(shè)計Z-1的運(yùn)算是通過執(zhí)行存儲器延時指令來實(shí)現(xiàn)的。即將數(shù)據(jù)存儲器中的數(shù)據(jù)向較高地址單元移位來進(jìn)行延時。注意:用線性緩沖區(qū)實(shí)現(xiàn)z-1運(yùn)算時,緩沖區(qū)的數(shù)據(jù)需要移動,這樣在一個機(jī)器周期內(nèi)需要一次讀和一次寫操作。因此,線性緩沖區(qū)只能定位在DARAM中。

第47頁/共58頁493-9FIR濾波器的設(shè)計可與其他指令結(jié)合,可在同樣的機(jī)器周期內(nèi)完成這些操作。如:LD+DELAY→LTDMAC+DELAY→MACD

例:雙操作數(shù)尋址指令:MACD*AR1-,b,A功能:A=A+(AR1)×(b),AR1-1→AR1,(AR1)→(AR1+1)第48頁/共58頁503-9FIR濾波器的設(shè)計FIR濾波器的實(shí)現(xiàn)設(shè)N=7,F(xiàn)IR濾波器的算法:

y(n)=b0x(n)+b1x(n-1)+…+b5x(n-5)+b6x(n-6)數(shù)據(jù)存儲器暫存y(n)x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)程序存儲器b6b5b4b3b2b1b0使用線性緩沖區(qū)的FIR1.asmMACD*AR1-,b,A第49頁/共58頁513-9FIR濾波器的設(shè)計Z-1的另外一種實(shí)現(xiàn):循環(huán)緩沖區(qū)法特點(diǎn):在數(shù)據(jù)存儲器中開辟一個N個單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本;從最新樣本開始取數(shù);讀完最老樣本后,輸入最新樣本來代替最老樣本,而其他數(shù)據(jù)位置不變;用BK寄存器對緩沖區(qū)進(jìn)行間接尋址,使緩沖區(qū)地址首尾相鄰。第50頁/共58頁523-9FIR濾波器的設(shè)計求y(n)的過程:ARx→ARx→

計算過程:以ARx為指針,按順序取數(shù),并修改指針;每取1次數(shù)后,完成1次乘法累加計算;求得y(n)后,輸入新樣本替代最老樣本;修改指針ARx,指向最新樣本單元。數(shù)據(jù)存儲器x(n)x(n-7)x(n-1)x(n-2)x(n-3)x

溫馨提示

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

評論

0/150

提交評論