《單片機原理與應用》-胡輝-電子教案-4917第4章.ppt_第1頁
《單片機原理與應用》-胡輝-電子教案-4917第4章.ppt_第2頁
《單片機原理與應用》-胡輝-電子教案-4917第4章.ppt_第3頁
《單片機原理與應用》-胡輝-電子教案-4917第4章.ppt_第4頁
《單片機原理與應用》-胡輝-電子教案-4917第4章.ppt_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第章 程序設計,雖然單片機的每條指令能使計算機完成一種特定的操作。但要完成某一特定的任務還需要將這些指令按工作要求有序組合為一段完整的程序。程序實際上是一系列計算機指令的有序集合。我們把利用計算機的指令系統(tǒng)來合理地編寫出解決某個問題的程序的過程,稱之為程序設計。,4.1 簡單匯編語言程序設計,編制程序的步驟,1.任務分析(硬件、軟件系統(tǒng)分析) 2.確定算法和工作步驟; 3.程序總體設計和流程圖繪制,關于流程圖符號: 開始、結束-圓角矩形 工作任務-矩形 判斷分支-菱形 程序流向- 程序連接-,開始,結束,4. 分配內存,確定程序與數(shù)據區(qū)存放地址; 5. 編寫源程序; 6. 調試、修改,最終確定

2、程序。,方法技巧,1. 模塊化設計(按功能分:顯示、打印、輸入、發(fā)送等) 2. 盡量采用循環(huán)及子程序結構(節(jié)省內存),匯編語言的規(guī)范,匯編語言源程序由以下兩種指令構成 匯編語句(指令語句) 偽指令(指示性語句) 匯編語句的格式: 標號:操作碼操作數(shù);注釋 數(shù)據表示形式: 二進制(B)、十六進制(H)、十進制(D或省略)、ASCII碼(以單引號標識),3.偽指令:控制匯編用的特殊指令,這些指令不屬 于指令系統(tǒng),不產生機器代碼。,4.1.1 分支程序,分支程序可根據要求無條件或條件地改變程序執(zhí)行流向。編寫分支程序主要在于正確使用轉移指令。分支程序有:單分支結構、雙分支結構、多分支結構(散轉),分支

3、程序,分支程序可根據要求無條件或條件地改變程序執(zhí)行流向。編寫分支程序主要在于正確使用轉移指令。分支程序有:單分支結構、雙分支結構、多分支結構(散轉),1比較數(shù)的大小,入口條件:兩個帶符號數(shù)分別存在內部RAM 30H和31H單元中,試比較它們的大小,將較大的數(shù)存入32H單元中。,XY為正: OV0,則XY OV=1,則XY XY為負: OV0,則XY OV1,則XY,ORG0100H MOVA,30H;取初值 CLRC SUBBA,31H;XY JZDZ1;X=Y? JC EBB JBOV,EB1;XY0, OV=1,XY AJMPDZ1;XY0, OV=0,XY EBB:JBOV,DZ1;XY

4、0, OV=1,XY EB1:MOVA,31H;XY AJMPJS0 DZ1:MOVA,30H;XY JS0:MOV32H,A END,例:設變量x以補碼形式存放在片內RAM 30H單元中,變量y與x的關系是:,編程根據x的值求y值并放回原單元。,2函數(shù)運算,ORG 0000H START:MOV A,30H JZ NEXT ;x=0,轉移 ANL A,#80H ;保留符號位 JZ ED ;x0,轉移 MOV A,#05H ;x0,不轉移 ADD A,30H MOV 30H,A SJMP ED NEXT:MOV 30H,#20H ED:SJMP $,START:MOV DPTR,#TAB MO

5、V A,R7 ADD A,R7 ;R72A MOV R3,A ;暫存R3 MOVC A,A+DPTR ;取高位地址 XCH A ,R3 INC A MOVC A,A+DPTR ;取低位地址 MOV DPL,A MOV DPH,R3 ;轉移地址送入DPTR CLR A JMP A+DPTR TAB: DW P0 DW P1 DW PN,例:根據R7的內容,轉至對應的分支程序。設R7的內容為0N,對應的處理程序地址分別為P0P7,4.3.3 循環(huán)程序,循環(huán)程序一般由: 初始化部分 循環(huán)體部分-處理部分、修改部分、控制部分 結束部分 其結構一般有兩種: 先進入處理部分,再控制循環(huán) 至少執(zhí)行一次循環(huán)體

6、 先控制循環(huán),再進入處理部分 循環(huán)體是否執(zhí)行,取決于判斷結果。,開始,設置循環(huán)初值,循環(huán)處理,循環(huán)修改,結束處理,結束,循環(huán)結束?,N,Y,Y,N,循環(huán)控制的一般方法: 循環(huán)次數(shù)已知 利用循環(huán)次數(shù)控制 循環(huán)次數(shù)未知 利用關鍵字控制 利用“邏輯尺” 根據“邏輯尺”的內容,進行控制。,例:統(tǒng)計數(shù)據塊的長度,入口條件:內部RAM 30H開始的存儲區(qū)有若干個數(shù)據,最后一個數(shù)據為字符FFH,結果存入40H單元。 ORG 0100H MAIN:MOV R1,#30H;R1作為地址指針 CLRA;累加器A作為計數(shù)器 LOOP:CJNER1,#0FFH,NEXT;與數(shù)據FF比較,不等轉移 SJMPJSH1;找

7、到結束符號,結束循環(huán) NEXT:INC A;計數(shù)器加1 INCR1;指針加l SJMP L00P;循環(huán) JSHl:INCA ;再加入l個字符 MOV40H,A;存結果 END,4.1.3 延時程序,10.1s延時程序(晶振為12M) ORG 0100H MOV R2,#200 LOOP: MOVR3,#250 DJNZR3,$ DJNZR2,LOOP RET 由于采用12M晶振,機器周期為1s,DJNZ的指令周期為2,整個程序的執(zhí)行時間為25020021s100000s0.1s,21s延時程序(晶振為12M),ORG0100H MOVR1,#10 LOOP1:MOVR2,#200 LOOP:M

8、OV R3,#250 DJNZR3,$ DJNZR2,LOOP DJNZR1,LOOP1 RET,例: 50ms延時子程序。設晶振頻率為12MHz,則機器周期為1us。,DEL: MOV R7,#200 ;1MC DEL1:MOV R6,#123 ;1MC NOP ;1MC DJNZ R6,$ ;2MC DJNZ R7,DEL1 ;2MC RET ;2MC,延時時間:t=1+200(1+1+2*123)+2+2 50000us=50ms,4.2 MCS-51常用子程序,4.2.1 代碼轉換類程序設計 4.2.2 查表程序設計 4.2.3 定點數(shù)運算子程序 4.2.4 浮點數(shù)運算子程序,子程序問

9、題,子程序設計時注意事項: 1. 給子程序賦一個名字。實際為入口地址代號。 2. 要能正確傳遞參數(shù): 入口條件:子程序中要處理的數(shù)據如何給予。 出口條件:子程序處理結果如何存放。 (寄存器、存儲器、堆棧方式) 3. 保護與恢復現(xiàn)場: 保護現(xiàn)場:壓棧指令PUSH 恢復現(xiàn)場:彈出指令POP 4. 子程序可以嵌套,4.2.1 代碼轉換類程序設計,1單字節(jié)十六進制數(shù)轉換成雙字節(jié)ASCII碼,表4-1 十六進制數(shù)與ASCII碼之間的關系,入口條件:待轉換的單字節(jié)十六進制數(shù)在寄存器R2中。 出口:高四位的ASCII碼在A中,低四位的ASCII碼在B中。,ORG0100H MOVA,R2 MOVB,A ;暫

10、存待轉換的單字節(jié)十六進制數(shù) LCALLMS1 ;轉換低四位 XCHA,B;存放低四位的ASCII碼 SWAPA ;準備轉換高四位 LCALLMS1 ;轉換高四位 SJMP$ MS1:ANLA,#0FH;將累加器的低四位轉換成 ASCII 碼 ADDA,#90H DA A ADDCA,#40H DA A RET,將多位十六進制數(shù)轉換成ASCII碼,設R0指向十六進制數(shù)低位, R2存放字節(jié)數(shù),轉換后R1指向ASCII碼高位。,HTASC: MOV A,R0 ;取十六進制數(shù) ANL A,#0FH ;取低四位 ADD A,#15 ;偏移修正 MOVC A,A+PC ;查表得ASCII碼 MOV R1,

11、A ;保存 INC R1 MOV A,R0 ;取十六進制數(shù)高四位 SWAP A ; ANL A,#0F0H ADD A,#06H ;偏移修正 MOVC A,A+PC ;查表 MOV R1,A ;保存 INC R0 ;指向下一單元 INC R1 DJNZ R2,HTASC RET ASCTAB:DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H,2.ASCII碼轉換成十六進制數(shù),入口條件:待轉換的 ASCII 碼在R2中。 出口:轉換后的十六進制數(shù)在R3中。 ORG 0100H MOV A,R2 SUBB A

12、,#30H CLR C JNB ACC.4,M1 SUBB A,#7 M1:MOV R3,A SJMP $ END,3.十六進制整數(shù)轉換成單字節(jié)碼整數(shù),入口條件:待轉換的單字節(jié)十六進制整數(shù)在R2中。 出口:轉換后的碼整數(shù)(十位和個位)在R5中,百位在R3中。 MOVA,R2 HBCD:MOVB,#100;分離出百位,存放在 R3中 DIVAB MOVR3,A MOVA,#10;余數(shù)繼續(xù)分離十位和個位 XCHA,B DIVAB SWAPA ORLA,B ;將十位和個位拼裝成碼 MOVR5,A SJMP$ END,4雙字節(jié)十六進制整數(shù)轉換成雙字節(jié)碼整數(shù),入口條件:待轉換的雙字節(jié)十六進制整數(shù)在R6、

13、R7中。出口:轉換后的三字節(jié)碼整數(shù)在R3、R4、R5中。 ORG0100HHB2:CLRA;碼初始化 MOVR3,A MOVR4,A MOVR5,A MOV R2,#10H;轉換雙字節(jié)十六進制整數(shù)HB3:MOVA,R7 ;從高端移出待轉換數(shù)的一位到 CY 中 RLCA MOV R7,A MOVA,R6 RLCA,MOVR6,A MOVA,R5;碼帶進位自身相加,相當于乘 ADDCA,R5 DAA ;十進制調整 MOVR5,A MOVA,R4 ADDC A,R4 DAA MOVR4,A MOVA,R3 ADDCA,R3 MOVR3,A;雙字節(jié)十六進制數(shù)的萬位數(shù)不超過,不用調整 DJNZR2,HB

14、3;判斷16位處理完? SJMP$ END,5雙字節(jié)碼整數(shù)轉換成雙字節(jié)十六進制整數(shù),入口條件:待轉換的雙字節(jié)碼整數(shù)在R2、R3中。 出口:轉換后的雙字節(jié)十六進制整數(shù)仍在R2、R3中。 ORG 0100H BH2:MOV A,R3;將低字節(jié)轉換成十六進制 LCALL BCD1 MOV R3,A MOV A,R2;將高字節(jié)轉換成十六進制 LCALL BCD1 MOV B,#100;擴大一百倍 MUL AB ADD A,R3;和低字節(jié)按十六進制相加 MOV R3,A CLR A,ADDCA,B MOV R2,A SJMP $ BCD1:MOVB,#10H;分離十位和個位 DIV AB MOV R4,

15、B;暫存?zhèn)€位 MOV B,#10;將十位轉換成十六進制 MUL AB ADDA,R4;十六進制加上個位 RET END,4.2.2 查表程序設計,MOVCA,A+DPTR MOVCA,A+PC 1查表求ASCII碼 入口條件:R0低四位有一個十六進制數(shù)(0F)。 出口:將查表找出的相應ASCII碼并送回R0中。,ORG0100H MOVA,R0 ANLA,#0FH;屏蔽高4位 ADDA,#03H;查表指令PC值與表格PC值相差3字節(jié) MOVCA,A+PC;查表 MOVR0,A;存結果 SJMP$ ASCTAB:DB0,1,2,3,4,5,6,7 DB8,9,A,B,C,D,E,F(xiàn),4.2.3

16、定點數(shù)運算子程序,1多字節(jié)碼加法 入口條件:字節(jié)數(shù)在R7中,被加數(shù)在30H起始單元中,加數(shù)在40H起始單元中。 出口:和在30H起始單元中,最高位進位在CY中。 ORG 0100H MOV R7,#03H MOV R0,#30H MOV R1,#40H MOV A,R7 ;取字節(jié)數(shù)至 R2 中 MOV R2,A ADD A,R0;初始化數(shù)據指針,MOVR0,A MOVA,R2 ADDA,R1 MOVR1,A CLR C BB1:DECR0;調整數(shù)據指針 DECR1 MOV A,R0 ADDC A,R1;按字節(jié)相加 DAA;十進制調整 MOV R0,A;和存回 R0 中 DJNZ R2,BB1;

17、處理完所有字節(jié) END,2多字節(jié)碼減法,入口條件:字節(jié)數(shù)在 R7 中,被減數(shù)在R0 中,減數(shù)在 R1 中。 出口:差在 R0 中,最高位借位在CY中。 ORG 0100H BCDB:LCALL MN1 ;減數(shù) R1 十進制取補 LCALL BCDA ;按多字節(jié)碼加法處理 CPL C;將補碼加法的進位標志轉換成借位標志 MOV F0,C LCALL MN1 ;恢復減數(shù) R1 的原始值 MOV C,F(xiàn)0;恢復借位標志 RET,MN1:MOVA,R0 ;R1 十進制取補子程序入口 XCHA,R1;交換指針 XCHA,R0 LCALLNEG;通過 R0 實現(xiàn) R1 取補 MOVA,R0 XCHA,R1

18、 ;換回指針 XCHA,R0 RET BCDA:MOV A,R7 ;取字節(jié)數(shù)至 R2 中 MOVR2,A ADDA,R0 ;初始化數(shù)據指針 MOVR0,A MOVA,R2,ADDA,R1 MOVR1,A CLRC BCD1:DECR0;調整數(shù)據指針 DECR1 MOVA,R0 ADDCA,R1 ;按字節(jié)相加 DAA;十進制調整 MOVR0,A;和存回 R0 中 DJNZR2,BCD1;處理完所有字節(jié) RET NEG:MOVA,R7;BCD碼取補子程序 DECA,MOVR2,A MOVA,R0 MOVR3,A NEG0: CLRC MOVA,#99H SUBBA,R0 ;按字節(jié)十進制取補 MOV

19、R0,A;存回 R0 中 INCR0 ;調整數(shù)據指針 DJNZR2,NEG0 ;處理完( R2 )字節(jié) MOVA,#9AH ;最低字節(jié)單獨取補 SUBB A,R0 MOVR0,A MOVA,R3 ;恢復指針 MOV R0,A RET,4雙字節(jié)二進制無符號數(shù)乘法子程序 入口條件:被乘數(shù)在R2、R3 中,乘數(shù)在R6、R7中。 出口:乘積在 R2 、 R3 、 R4 、 R5 中。 ORG0100H MULD:MOVA,R3;計算 R3 乘 R7 MOVB,R7 MULAB MOVR4,B ;暫存部分積 MOVR5,A MOVA,R3;計算 R3 乘 R6 MOVB,R6 MULAB ADDA,R4

20、;累加部分積 MOVR4,A,CLRA ADDCA,B MOVR3,A MOVA,R2 ;計算 R2 乘 R7 MOVB,R7 MULAB ADDA,R4;累加部分積 MOVR4,A MOVA,R3 ADDCA,B MOVR3,A CLRA RLCA,XCHA,R2 ;計算 R2 乘 R6 MOVB,R6 MULAB ADDA,R3 ;累加部分積 MOVR3,A MOVA,R2 ADDCA,B MOVR2,A RET,6雙字節(jié)二進制無符號數(shù)除法子程序 入口條件:被除數(shù)在 R2 、 R3 、 R4 、 R5 中,除數(shù)在 R6 、 R7 中。 出口: OV=0 時,雙字節(jié)商在 R2 、 R3 中,

21、 OV=1 時溢出。 ORG 0100H DIVD: CLR C;比較被除數(shù)和除數(shù) MOV A,R3 SUBB A,R7 MOV A,R2 SUBB A,R6 JC DVD1 SETB OV ;溢出 RET,DVD1:MOVB,#10H;計算雙字節(jié)商 DVD2:CLRC;部分商和余數(shù)同時左移一位 MOVA,R5 RLCA MOVR5,A MOVA,R4 RLCA MOVR4,A MOVA,R3 RLCA MOVR3,A XCHA,R2 RLCA,XCHA,R2 MOVF0,C ;保存溢出位 CLRC SUBBA,R7;計算( R2R3 R6R7 ) MOVR1,A MOVA,R2 SUBBA,

22、R6 ANLC,/F0;結果判斷 JCDVD3 MOVR2,A;夠減,存放新的余數(shù) MOVA,R1 MOVR3,A INCR5;商的低位置一,DVD3:DJNZB,DVD2 ;計算完十六位商( R4R5 ) MOVA,R4;將商移到 R2R3 中 MOVR2,A MOVA,R5 MOVR3,A CLROV;設立成功標志 RET,4.2.4 浮點數(shù)運算子程序,1浮點數(shù)的表示 (1)二進制浮點操作數(shù) 用三個字節(jié)表示,第一個字節(jié)的最高位為數(shù)符,其余七位為階碼(補碼形式),第二字節(jié)為尾數(shù)的高字節(jié),第三字節(jié)為尾數(shù)的低字節(jié),尾數(shù)用雙字節(jié)純小數(shù)(原碼)來表示。當尾數(shù)的最高位為時,便稱為規(guī)格化浮點數(shù),簡稱操作

23、數(shù),(2)十進制浮點操作數(shù) 用三個字節(jié)表示,第一個字節(jié)的最高位為數(shù)符,用來表示正負數(shù)(0表示正數(shù),1表示負數(shù))其余七位為階碼(二進制補碼形式),第二字節(jié)為尾數(shù)的高字節(jié),第三字節(jié)為尾數(shù)的低字節(jié),尾數(shù)用雙字節(jié)BCD碼純小數(shù)(原碼)來表示。當十進制數(shù)的絕對值大于時,階碼就等于整數(shù)部分的位數(shù)。 例如:156.6 的階碼是03H,156.6 的階碼是 83H ; 當十進制數(shù)的絕對值小于 1 時,階碼就等于 80H 減去小數(shù)點后面零的個數(shù)。 例如 :0.00362的階碼是 7EH ,0.00362 的階碼是 0FEH 。 例如:有一個十進制浮點操作數(shù)存放在30H、31H、32H中,數(shù)值是0.07315,即

24、0.7315 乘以10 的1 次方,則階碼為7FH,若加上數(shù)符(30H)=0FFH,31H=73H,(32H)=15H 。,(3)運算精度 單次定點運算精度為結果最低位的當量值;單次二進制浮點算術運算的精度優(yōu)于十萬分之三;單次二進制浮點超越函數(shù)運算的精度優(yōu)于萬分之一;BCD碼浮點數(shù)本身的精度比較低(萬分之一到千分之一),不宜作為運算的操作數(shù),僅用于輸入或輸出時的數(shù)制轉換。不管那種數(shù)據格式,隨著連續(xù)運算的次數(shù)增加,精度都會下降。,2浮點數(shù)加減法子程序 入口條件:被加數(shù)在 R0 中,加數(shù)在 R1 中。被減數(shù)在 R0 中,減數(shù)在 R1 中。 當F0=0時,程序作浮點數(shù)加法運算;當F0=1時,程序作浮

25、點數(shù)減法運算。 出口: OV=0 時,和(差)仍在 R0 中, OV=1 時,溢出。,ORG0100H FADD:CLRF0 ;設立加法標志 SJMPAS ;計算代數(shù)和 FSUB:SETBF0 ;設立減法標志 AS: LCALLMVR1 ;計算代數(shù)和。先將 R1 傳送到第二工作區(qū) MOVC,F(xiàn)0 ;用加減標志來校正第二操作數(shù)的有效符號 RRCA XRLA,R1 MOVC,ACC.7ASN:MOV1EH,C ;將第二操作數(shù)的有效符號存入位 1EH 中 XRLA,R0 ;與第一操作數(shù)的符號比較 RLCAMOVF0,C ;保存比較結果 LCALLMVR0;將 R0 傳送到第一工作區(qū)中 LCALLAS

26、1 ;在工作寄存器中完成代數(shù)運算MOV0:INCR0 ;將結果傳回到 R0 中的子程序入口 INCR0,MOV A,R4 ;傳回尾數(shù)的低字節(jié) MOVR0,A DECR0 MOVA,R3 ;傳回尾數(shù)的高字節(jié) MOVR0,A DECR0 MOVA,R2 ;取結果的階碼 MOVC,1FH ;取結果的數(shù)符 MOVACC.7,C ;拼入階碼中 MOVR0,A CLRACC.7 ;不考慮數(shù)符 CLROV ;清除溢出標志 CJNEA,#3FH,MV01 ;階碼是否上溢? SETBOV ;設立溢出標志MV01:MOVA,R0 ;取出帶數(shù)符的階碼 RETMVR0:MOVA,R0 ;將 R0 傳送到第一工作區(qū)中的

27、子程序 MOVC,ACC.7 ;將數(shù)符保存在位 1FH 中 MOV 1FH,C,MOVC,ACC.6 ;將階碼擴充為補碼 MOVACC.7,C MOV R2,A ;存放在 R2 中 INC R0 MOV A,R0 ;將尾數(shù)高字節(jié)存放在 R3 中 MOV R3,A INC R0 MOV A,R0 ;將尾數(shù)低字節(jié)存放在 R4 中 MOV R4,A DEC R0 ;恢復數(shù)據指針 DEC R0 RETMVR1: MOV A,R1 ;將 R1 傳送到第二工作區(qū)中的子程序 MOV C,ACC.7 ;將數(shù)符保存在位 1EH 中 MOV 1EH,C MOV C,ACC.6 ;將階碼擴充為補碼 MOV ACC.

28、7,C MOV R5,A ;存放在 R5 中 INC R1,MOV A,R1 ;將尾數(shù)高字節(jié)存放在 R6 中MOV R6,A INC R1 MOV A,R1 ;將尾數(shù)低字節(jié)存放在 R7 中 MOV R7,A DEC R1 ;恢復數(shù)據指針 DEC R1 RETAS1: MOV A,R6 ;讀取第二操作數(shù)尾數(shù)高字節(jié) ORL A,R7 JZ AS2 ;第二操作數(shù)為零,不必運算 MOV A,R3 ;讀取第一操作數(shù)尾數(shù)高字節(jié) ORL A,R4 JNZ EQ MOV A,R6 ;第一操作數(shù)為零,結果以第二操 作數(shù)為準,MOV R3,A MOV A,R7 MOVR4,A MOV A,R5 MOV R2,A MOV C,1EH MOV 1FH,C AS2: RETEQ: MOV A,R2 ;對階,比較兩個操作數(shù)的階碼 XRL A,R5 JZ AS4 ;階碼相同,對階結束 JB ACC.7,EQ3 ;階符互異 MOV A,R2 ;階符相同,比較大小 CLR C SUBB A,R5 JC EQ4EQ2: CLRC ;第二操作數(shù)右規(guī)一次 MOVA,R6 ;尾數(shù)縮小一半,RRCA MOVR6,A MOVA,R7 RRCA MOVR7,A INCR5 ;階碼加一 ORLA,R6 ;尾數(shù)為零否? JNZEQ ;尾數(shù)不為零,繼續(xù)對

溫馨提示

  • 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

提交評論