課設參考之二:圖形與發(fā)聲系統(tǒng)的程序設計課件_第1頁
課設參考之二:圖形與發(fā)聲系統(tǒng)的程序設計課件_第2頁
課設參考之二:圖形與發(fā)聲系統(tǒng)的程序設計課件_第3頁
課設參考之二:圖形與發(fā)聲系統(tǒng)的程序設計課件_第4頁
課設參考之二:圖形與發(fā)聲系統(tǒng)的程序設計課件_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課設參考之二:圖形與發(fā)聲系統(tǒng)的程序設計課件課設參考之二:圖形與發(fā)聲系統(tǒng)的程序設計課件2022/9/142.1.1 字符圖形顯示字符圖形既可以在顯示器上以簡單的黑白圖形字符顯示,也可以在彩色顯示器上以彩色的圖形字符顯示。通過調用INT 10H的AH=0,AL=07可設置不同的顯示方式,調用INT10H的AH=09H,AH=0AH等可顯示字符。返回本節(jié)2022/9/104.1.1 字符圖形顯示字符圖形既可2022/9/1431動畫顯示的基礎2程序舉例.1.2 動畫程序的開發(fā) 2022/9/1051動畫顯示的基礎.1.2 動畫2022/9/144在屏幕上顯示出動畫的效果,可分5步進行:在屏幕上顯示圖

2、形(單字符或多字符圖形) 延遲一個時間周期,這樣圖形更清晰 清除圖形 改變圖形的行列坐標 返回第一步,重復上述過程。1動畫顯示的基礎2022/9/106在屏幕上顯示出動畫的效果,可分5步進2022/9/145圖.1 “汽車”各字符的相對位移量(2,1)(0,1)(0,0)(0,3)(0,1)(0,1)(1,0)上 一 頁R2022/9/107圖.1 “汽車”各字符的相對位移量2022/9/1462程序舉例例10.1 在屏幕上顯示一個開動的汽車如圖10.1所示。車體由7個字符組成:R(ASC碼52H) 1/2陰影符(ASC碼B1H) 實心方塊( ASC碼DBH) 字母O( ASC碼4FH ) 笑

3、臉符( ASC碼02H )R和陰影反相顯示,其它正常屬性顯示。2022/9/1082程序舉例例10.1 在屏幕上顯示一個2022/9/147源程序如下:DATA SEGMENTCAR DB 7;字符圖形表 DB 52H,70H,0,0 DB 0B1H,70H,0,1 DB 0DBH,7,0,1 DB 0DBH,7,0,1 DB4FH,7,1,0 DB4FH,7,0,-3 DB2,7,-2,1CHAR_CNTDW ? POINTER DW ?LINE_ON DB ? COL_ON DB ?DATAENDS字符的ASCII碼顯示屬性行相對位移列相對位移2022/9/109源程序如下:字符的ASCI

4、I碼2022/9/148; 程序部分CODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROCFAR PUSH DS SUB AX,AX PUSHAX MOV AX,DATA MOVDS,AX ;初始化DS 上 一 頁2022/9/1010; 程序部分 上 一 頁2022/9/149CALL CLEAR_SCREENLEA DI,CARMOV DH,10 ;車身起始位置(10,10)MOV DL,10CALL MOVE_SHAPERETMAIN ENDP2022/9/1011CALL CLEAR_SCREEN2022/9/1410CLEAR_SCREEN PROC

5、 NEAR PUSH AX;保護現(xiàn)場 PUSH BX PUSH CX PUSH DX MOV AH,6 MOV AL,0 MOV CH,0 MOV CL,0 MOVDH,24 MOVDL,79 MOVBH,7 INT10H上 一 頁BIOS功能調用:AH=6屏幕初始化AL=上卷行數,0表示窗口空白BH=卷入行屬性CH=左上角行號CL=左上角列號DH=右下角行號DL=右下角列號2022/9/1012CLEAR_SCREEN PROC 2022/9/1411 POP DX ;恢復現(xiàn)場 POP CX POP BX POP AX RET ;返回主程序CLEAR_SCREEN ENDP上 一 頁2022

6、/9/1013 POP 2022/9/1412MOVE_SHAPE PROC NEAR PUSHAX;保護現(xiàn)場 PUSHBX PUSHCX PUSHDX PUSHDI MOVAH,0FH INT10H SUBCH,CH MOVCL,DI;CL=7 INCDI MOVCHAR_CNT,CX;存字符個數 MOV POINTER,DI;指針指向首字符MOVLINE_ON,DH;車起始位置 MOVCOL_ON,DL上 一 頁BIOS中斷:AH=0FH取當前顯示方式:返回參數:BH=頁號 AH=字符列數 AL=顯示方式2022/9/1014MOVE_SHAPE PROC NE2022/9/1413PLO

7、T_NEXT: ADDDH,DI+2;改變行列位置 ADDDL,DI+3 CMPDL,80;出屏否? JBMOV_CRSR CALLERASE ;擦除屏幕 POP DI ;恢復現(xiàn)場 POP DX POP CX POPBX POP AX RET ;中斷返回上 一 頁2022/9/1015PLOT_NEXT:上 一 頁2022/9/1414MOV_CRSR:MOV AH,2 ;移動光標位置 INT 10H MOV AL,DI ;取字符 MOV BL,DI+1;取字符屬性 PUSH CX MOV CX,1 ;顯示次數 MOV AH,09 INT 10H ;顯示字符 POP CX ADD DI,4 ;

8、DI指向下一個字符 LOOP PLOT_NEXT CALL DLY_QRTR;調用延時子程序BIOS中斷:AH=9在光標位置顯示字符和屬性2022/9/1016MOV_CRSR:MOV AH,2 2022/9/1415 CALLERASE;調用擦除子程序 JMPSHORT PLOT_NEXTMOVE_SHAPE ENDP上 一 頁2022/9/1017 CALLE2022/9/1416ERASE PROC NEAR MOV CX,CHAR_CNT ;字符個數 MOV DI,POINTER ;字符R地址送DI MOV DH,LINE_ON ;車起始位置 MOV DL,COL_ONERASE_NE

9、XT: ADD DH,DI+2 ;計算顯示字符的行列值 ADD DL,DI+3 MOV AH,2 INT 10H ;設置光標位置DH行,DL列上 一 頁2022/9/1018ERASE PROC NEAR上2022/9/1417MOVAL,DI MOVBL,0 ;黑底黑字PUSHCX MOVCX,1MOVAH,9 INT10HPOPCX ADDDI,4 ;指向下一個字符LOOP ERASE_NEXT ;擦除顯示痕跡MOVCX,CHAR_CNT ;重新初始化MOVDI,POINTERMOVDH,LINE_ONINCCOL_ON ;指向下一行MOVDL,COL_ONRETERASEENDP BIO

10、S中斷:AH=9在光標位置顯示字符和屬性入口參數:BH=顯示頁 AL/BL=字符/屬性 CX=重復次數2022/9/1019MOVAL,DI BIOS中斷2022/9/1418DLY_QRTR PROC NEAR;延時子程序 PUSHCX PUSHDX MOVDX,5000D11: MOVCX,2801D12: LOOPD12 DECDX JNZD11 POPDX POPCX RETDLY_QRTR ENDPCODE ENDS END MAIN返回本節(jié)上 一 頁2022/9/1020DLY_QRTR PROC NEAR2022/9/141910.2 發(fā)聲系統(tǒng)程序開發(fā) 10.2.1 系統(tǒng)發(fā)聲途徑

11、 10.2.2 發(fā)聲應用程序舉例返回本章首頁2022/9/102110.2 發(fā)聲系統(tǒng)程序開發(fā) 12022/9/142010.2.1 系統(tǒng)發(fā)聲途徑18254(8253)定時器作為發(fā)聲源28255端口B(PB1位)作為發(fā)聲源返回本章首頁2022/9/102210.2.1 系統(tǒng)發(fā)聲途徑18252022/9/142118254定時器作為發(fā)聲源 將定時器產生的方波信號同8255的端口B相與來控制揚聲器發(fā)聲的(如圖10.2所示),因此當PB1=1時,才能控制揚聲器的音調。在系統(tǒng)中8255的B口地址為61H,用指令: INAL,61H ORAL,3 OUT61H,AL2022/9/102318254定時器作

12、為發(fā)聲源 2022/9/1422圖10.2 控制揚聲器發(fā)聲原理圖2022/9/1024圖10.2 控制揚聲器發(fā)聲原理圖2022/9/1423ROM BIOS中的發(fā)聲子程序如下:BEEPPROC NEAR MOVAL,10110110B OUT43H,AL ;給8253送控制字 MOVAX,533H OUT42H,AL MOVAL,AH OUT42H,AL ;給8253B口送計數值 INAL,PORT_B ;讀8255PB口 MOVAH,AL2022/9/1025ROM BIOS中的發(fā)聲子程序如下:2022/9/1424 ORAL,03 OUTPORT_B,AL ;置8255PB1PB0=11,

13、發(fā)聲 SUBCX,CXG7:LOOPG7 ;延時DECBLJNZG7MOVAL,AHOUTPORT_B,AL ;恢復8255PB口原數據RETBEEPENDP返回本節(jié)2022/9/1026 ORAL,03返回本節(jié)2022/9/142528255端口B(PB1位)作為發(fā)聲源 使8255端口B(或相應的等效電路)最低位PB0=0,關閉定時器聲源的輸出,OUT2為常高電位(方式3所致)。又通過使8255端口B(或相應等效電路)的PB1位置1或置0(按指定的頻率來編程),便能讓“與”門輸出一周期性變化的方波,使揚聲器發(fā)聲。返回本節(jié)2022/9/102728255端口B(PB1位)作為發(fā)聲2022/9/

14、142610.2.2 發(fā)聲應用程序舉例1揚聲器發(fā)聲通用子程序2演奏樂曲程序3定時報警程序2022/9/102810.2.2 發(fā)聲應用程序舉例1揚2022/9/14271揚聲器發(fā)聲通用子程序【例10.2】通用發(fā)聲程序GENSOUND。 PUBLICGENSOUND CODE SEGMENT PARA CODE ASSUME CS:CODE GENSOUND PROC FAR PUSH AX;保存將要用到的寄存器 PUSH BX PUSH CX PUSH DX PUSH DI2022/9/10291揚聲器發(fā)聲通用子程序【例10.2】2022/9/1428MOVAL,0B6HOUT43H,AL MO

15、VDX,12HMOVAX,348CHDIVDI ;DI為給定頻率,商AX為預置計數值OUT42H,AL MOVAL,AH OUT42H,AL 向8253/8254計數器2寫控制字,方式3、雙字節(jié)寫和二進制計數方式設置被除數給8253/8254的計數器2送計數值,先送低位,后送高位2022/9/1030MOVAL,0B6H向8253/82022/9/1429 INAL,61H MOVAH,AL ORAL,3 OUT61H,ALWAIT1:MOV CX,2800HDELAY:LOOP DELAY DECBX ;循環(huán)持續(xù)BX次,延時為10ms的BX倍 JNZWAIT1 MOV AL,AH ;寫回61

16、H口原值,關閉揚聲器 OUT61H,AL8255PB1PB0=11接通揚聲器發(fā)聲8086/8088延時10ms2022/9/1031 INAL,61H8255PB1P2022/9/1430 POPDI ;恢復寄存器 POPDX POPCX POPBX POPAX RETGENSOUNDENDPCODE ENDS END返回本節(jié)2022/9/1032 POPDI 2022/9/1431和CPU無關延時程序:產生N*15.08s延時:waitf proc near push axwaitf1: in al , 61h and al , 10h cmp al , ah ;判斷61H的PB4=1否?

17、je waitf1 (15.08s延時到,PB4=1) mov ah , al loop waitf1 ; CX初始值為15.08s的倍數N pop ax retwaitf endp要產生10ms 延時,Cx=10ms/15.08s=10*103/15.08s=6632022/9/1033和CPU無關延時程序:產生N*15.02022/9/1432通用發(fā)聲程序Sounf :發(fā)聲10ms的BX倍:將GENSOUND程序中的:WAIT1:MOV CX,2800HDELAY:LOOP DELAY 修改為:WAIT1 : MOV , 663 CALL WAITF2022/9/1034通用發(fā)聲程序Sou

18、nf :發(fā)聲10ms2022/9/14332演奏樂曲程序表10.1 音律與頻率對應表(HZ)音名CDEFGAB音符1234567頻率131147165175196220247音名CDEFGAB音符1234567頻率2622943303493924404942022/9/10352演奏樂曲程序表10.1 音律與頻2022/9/1434 音符的持續(xù)時間是根據樂曲的速度及每個音符的節(jié)拍數來確定的。在4/4拍中,每小節(jié)4拍,全音符持續(xù)4拍,二分音符持續(xù)二拍,四分音符持續(xù)一拍,八分音符持續(xù)半拍.如果給全音符分配1s(100*10ms),則二分音符持續(xù)時間為0.5s,四分音符持續(xù)時間為0.25s,等等。2

19、022/9/1036 音符的持續(xù)時間是根據樂曲的速度2022/9/1435樂曲程序的編寫步驟:為樂曲定義一個頻率表MUS_FREQ和一個節(jié)拍時間表MUS_TIME;節(jié)拍時間表中的數據是各音符的節(jié)拍持續(xù)時間相對10ms的倍數,頻率表最后定義0FFFFH或-1作為結束。將MUS_FREQ的偏移地址送SI,將MUS_TIME的偏移地址送BP,指令如下:LEA SI, MUS_FREQ LEA BP,DS: MUS_TIME從表中取出音符的頻率送入DI,取出音符的持續(xù)時間送入BX指令為:MOV DI,SI MOV BX,DS:BP調用SOUNDF或GENSOUND子程序發(fā)出音調 2022/9/1037

20、樂曲程序的編寫步驟:為樂曲定義一個頻率2022/9/1436程序如下:TITLE MUSIC 樂曲“瑪麗有只小羊羔”EXTRN GENSOUND:FAR ;定義外部調用程序STACK SEGMENT PARA STACK STACK DB 64 DUP(STACK)STACK ENDS 【例10.3】以樂譜“瑪麗有只小羊羔”為例編寫演奏程序2022/9/1038程序如下:【例10.3】以樂譜“瑪麗有2022/9/1437DATA SEGMENT PARA DATA;為演奏的樂曲定義一個頻率表MUS_FREQDW 330, 294, 262, 294, 3 DUP(330) DW 3 DUP(2

21、94), 330, 392, 392 ; DW 330, 294, 262, 294, 4 DUP(330) DW 294, 294, 330, 294, 262, -1;為演奏的樂曲定義一個節(jié)拍時間表MUS_TIME DW 6 DUP(25), 50 DW 2 DUP(25,25,50) DW 12 DUP(25),100 DATA ENDS2022/9/1039DATA SEGMENT P2022/9/1438 CODESEGMENTPARA CODE ASSUME CS:CODE,SS:STACK,DS:DATAMUSICPROCFAR PUSHDS SUBAX,AX PUSHAX MO

22、VAX,DATA MOVDS,AX LEASI,MUS_FREQ LEABP,DS:MUS_TIME2022/9/1040 2022/9/1439FREQ: MOVDI,SI ;取音符頻率 CMPDI,-1 ;結束? JE END_MUS ;是,退出 MOVBX,DS:BP;取音符持續(xù)時間 CALL GENSOUND;調用GENSOUND發(fā)音子程序 ADDSI,2 ;頻率表指針增2 ADDBP,2 ;時間表指針增2 JMPFREQ ;繼續(xù)演奏END_MUS:RET ;返回DOSMUSIC ENDPCODE ENDS ENDMUSIC2022/9/1041FREQ: MOVDI,SI 2022/

23、9/14403定時報警程序圖10.3 實時鐘中斷處理流程圖2022/9/10423定時報警程序圖10.3 實時鐘中2022/9/1441;利用INT 1AH中斷實現(xiàn)定時報警,本程序在執(zhí)行后,若設置成功則首先顯示;字符串“Set up all right ”并使揚聲器發(fā)聲,這表明設置成功;1分鐘(為定時時間,;讀者也可自己設定)后屏幕顯示“!”并發(fā)聲,以示報警。;匯編過程:MASM:ALARM.ASM;連接過程:LINK :ALARM+GENSOUNDEXTRN GENSOUND:FAR;定義外部調用程序【例10.4】TITLE ALARM定時報警程序2022/9/1043;利用INT 1AH中

24、斷實現(xiàn)定時報警,2022/9/1442STACKSEGMENT PARA STACK STACKDB 64 DUP(STACKSTACKENDS;DATASEGMENT PARA PUBLIC DATABJDB Set up all right .DB 13,10,$DATA ENDS; 2022/9/1044STACKSEGMENT PARA 2022/9/1443CODE SEGMENT PARA PUBLIC CODEASSUME CS:CODE,SS:STACK,DS:DATAENTRYPROC FARPUSHDS;保存舊的數據段SUBAX,AXPUSHAXMOVAX,DATAMOVD

25、S,AXMOVAL,4AH;讀取INT 4AH中斷向量上 一 頁2022/9/1045CODE SEGME2022/9/1444MOVAH,35H INT 21HPUSHES;入棧保護 PUSHBXSTEP1:MOV AH,7;清除實時鐘報警INT1AHJCSTEP1;進位位為1則轉移(成功則轉移); MOVAL,4AH;設置新的INT 4AH中斷向量MOVDX,SEG ALARMMOVDS,DX上 一 頁2022/9/1046MOVAH,35H 2022/9/1445LEADX,ALARM MOVAH,25HINT21H CLI;關中斷STEP2:MOVAH,2;利用INT 1AH讀當前實時

26、鐘時間INT1AH;時、分、秒分別置入CH、CL、DHJCSTEP2;不成功再讀MOVAL,CLADDAL,1;增1分鐘DAA;調整為BCD碼格式CMPAL,60H;是60分嗎(BCD數)?上 一 頁2022/9/1047LEADX,ALARM 2022/9/1446JLSTEP3;不是,則轉移MOVAL,00H;是,改為0分STEP3:MOV CL,AL;得到報警時刻的分值MOVAH,6;CH、DH仍為原值INT1AH;設置報警時刻JCSTEP2;不成功重做STI;開中斷MOVCX,12SETUP:MOV AH,2;設置成功發(fā)出“嘟嘟”聲上 一 頁2022/9/1048JLSTEP3;不是,

27、則轉移上 一2022/9/1447MOVDL,07H;07H是振鈴控制碼INT21H;用INT 21H 的2號功能實現(xiàn)LOOPSETUP;循環(huán)發(fā)聲MOVAX,DATAMOVDS,AXMOVDX,OFFSET BJ;顯示“Set up all right .”字符串MOVAH,9INT21H;上 一 頁2022/9/1049MOVDL,07H;07H是振鈴控制2022/9/1448MOVDX,32000MAINP1:MOV CX,25500;延時程序段,等待報警MAINP2:LOOPMAINP2DECDXJNEMAINP1RES:POPDX;恢復INT 4AH 原中斷向量POPDSMOVAL,4

28、AHMOVAH,35H上 一 頁2022/9/1050MOVDX,32000上 一 頁2022/9/1449INT21H RET ENTRYENDP;ALARMPROC;報警中斷服務程序 PUSHAX PUAHBXPUSHDI STIMOVAH,2;顯示字符!MOVDL,!INT21H上 一 頁2022/9/1051INT21H R2022/9/1450MOVDI,300;發(fā)音頻率MOVBX,1400;發(fā)音延遲時間CALLGENSOUND;調用通用發(fā)聲子程序POPDI POPBXPOPAX IRETALARMENDPCODEENDS;ENDENTRY;程序結束上 一 頁2022/9/1052M

29、OVDI,300;發(fā)音頻率上 一2022/9/1451【例10.5】用軟中斷INT 60H、發(fā)聲中斷服務程序INT 61H以及軟中斷INT 62H、 INT 63H ,實現(xiàn)字符串“intel 80486 DX2/66 CPU”顯示、揚聲器發(fā)聲和變色三角形的顯示功能,定時器ICH中斷作為計數器使用。DATASEGMENT PARA DATA;數據段D1DB 0DH,intel 80486 DX2/66 CPU $D3DW 0D20DB ? DATAENDS;2022/9/1053【例10.5】用軟中斷INT 60H、2022/9/1452STACSEGMENT PARA STACK STAC;堆

30、棧段STA1DW 100 DUP(?)STACENDS;CODESEGMENT PARA CODE;代碼段ASSUME CS:CODE,DS:DATAASSUME SS:STAC,ES:DATASTARPROCFAR;主程序開始上 一 頁2022/9/1054STACSEGMENT PARA 2022/9/1453PUSHDS XOR AX,AXPUSHAX MOV AX,DATAMOVDS,AX MOVES,AXCLI;關中斷MOVAL,1CH;保存定時器時鐘中斷向量MOVAH,35HINT21HPUSHES上 一 頁2022/9/1055PUSHDS 2022/9/1454PUSHBX P

31、USHDSMOVDX,OFFSET RING;設置定時器時鐘中斷向量MOVAX,SEG RINGMOVDS,AXMOVAL,1CH MOVAH,25HINT21HPOPDS INAL,21H;讀IMR中的屏蔽碼上 一 頁2022/9/1056PUSHBX 2022/9/1455ANDAL,1111110B;開放中斷0并保留中斷屏蔽設置OUT21H,AL;將新屏蔽碼寫入IMR中PUSHDS;入棧保護DS寄存器MOVDX,OFFSET I60;取I60的偏移地址MOVAX,SEG I60;取I60的段基地址MOVDS,AXMOVAH,25HMOVAL,60HINT21H上 一 頁2022/9/10

32、57ANDAL,1111110B;開放中2022/9/1456LEADX,I61;設置61H軟中斷向量MOVAX,SEG I61MOVDS,AXMOVAH, 25HMOVAL,61HINT21HLEADX,I62;設置62H軟中斷向量MOVAX,SEG I62MOVDS,AX上 一 頁2022/9/1058LEADX,I61;設置61H軟2022/9/1457MOVAH,25H MOVAL,62HINT21HLEADX,I63;設置63H軟中斷向量MOVAX,SEG I63 MOVDS,AXMOVAH,25H MOVAL,63HINT21H POPDS;DS出棧STI;開中斷MOVDI,800

33、0上 一 頁2022/9/1059MOVAH,25H 2022/9/1458DELAY:MOVSI,150INT60H;調用60H中斷,使程序進入DELAY1:DECSI;循環(huán)狀態(tài)JNZDELAY1 DECDIJNZDELAYPOPDX;恢復定時器控制(ICH)中斷向量POPDS MOVAL,1CHMOVAH,25H INT21HMOVAH, 0;顯示器恢復文本狀態(tài)上 一 頁2022/9/1060DELAY:MOVSI,150上 2022/9/1459MIVAL,3 INT 10HRET STARENDP;RINGPROCFAR;定時器中斷服務程序PUSHDS PUSHAXMOVAX,DATA

34、MOVDS,AX STIINCD20;計數單元加1上 一 頁2022/9/1061MIVAL,3 2022/9/1460B11:POP AXPOPDSIRET;中斷服務結束返回RINGENDP;I60PROCFAR;60H中斷服務程序完成對PUSHAX;61H和62H中斷的調用PUSHDXLEADX,D1;顯示intel 80486 DX上 一 頁2022/9/1062B11:POP AX上 一 頁2022/9/14612/66 CPU MOVAH,9INT21HCMPD20,2;中斷延時到否?JNEC11;到,則轉置C11MOVD20,0;否則使D20清0INT61H;用發(fā)聲中斷INT 61HINT62H;用延時繪圖中斷INT 62HC11:POPDXPOPAX上 一 頁2022/9/10632/66 CPU 2022/9/1462IRET;中斷服務結束返回I60ENDP;I61PROCFAR;聲中斷:INT 61HPUSHAX PUSHCXPUSHDXMOVDX,140H;置發(fā)音持續(xù)時間INAL,61H;8255A PB 口內容到ALANDAL,11111100B;L的D1D0位置0上 一 頁2022/9/1064IRET;中斷服

溫馨提示

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

最新文檔

評論

0/150

提交評論