第8章順序結(jié)構(gòu)程序設(shè)計_第1頁
第8章順序結(jié)構(gòu)程序設(shè)計_第2頁
第8章順序結(jié)構(gòu)程序設(shè)計_第3頁
第8章順序結(jié)構(gòu)程序設(shè)計_第4頁
第8章順序結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 第第8章章 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計 8.1 匯編語言程序設(shè)計的基本方法匯編語言程序設(shè)計的基本方法 8.2 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計 第第8章章 順序結(jié)構(gòu)程序設(shè)順序結(jié)構(gòu)程序設(shè) 8.1 匯編語言程序設(shè)計的基本方法匯編語言程序設(shè)計的基本方法程序的設(shè)計重在“語法”和“算法”,語法有錯得不到可執(zhí)行程序,算法出錯其結(jié)果不正確。所以掌握“語法”和“算法”是缺一不可的,一個好的程序應(yīng)該滿足設(shè)計的要求。在實(shí)現(xiàn)正常運(yùn)行和預(yù)定的功能以外,還應(yīng)該充分考慮: (1)程序要結(jié)構(gòu)化,簡明、可讀性好和易調(diào)試; (2)執(zhí)行速度快; (3)占用存儲空間小。 在早期的計算機(jī)中,由于存儲設(shè)備昂貴,容量很有限,一般

2、應(yīng)盡可能少占用存儲空間,8086cpu只有20根地址線,對內(nèi)存尋址才1mb空間,所以內(nèi)存空間就顯得很珍貴。隨著科學(xué)技術(shù)和生產(chǎn)技術(shù)的發(fā)展,半導(dǎo)體存儲器的芯片容量不斷增大;磁盤的密度不斷提高,而其相應(yīng)的價格也在逐漸下降,因此,有時候也就不那么特別注重程序是否多占用了一些存儲空間,而偏重于程序的可讀性強(qiáng)等方面的問題。但對計算機(jī)的某些應(yīng)用場合,如智能化的儀器儀表,電腦化的家用電器等設(shè)備中的監(jiān)控程序,通常采用匯編語言編寫的程序,所以要求它的功能要強(qiáng),程序要短,維護(hù)方便等,存儲容量不能太大,才能達(dá)到微型化及價格低的目的。 程序執(zhí)行速度問題,在某些實(shí)時控制系統(tǒng),跟蹤等程序中就顯得特別突出。例如,在生產(chǎn)過程中

3、,需要對一些對象中的某些參數(shù)進(jìn)行實(shí)時控制,如果參數(shù)變化速度特快,程序執(zhí)行速度又太慢,就可能發(fā)生失控現(xiàn)象。對處理其它問題時,因目前主頻永遠(yuǎn)高于原先計算機(jī)的主頻,速度越來越快。所以速度與占用內(nèi)存已不是主要矛盾,編程者要把主要精力放在“程序要結(jié)構(gòu)化,簡明、可讀性好和易調(diào)試”的方面。 需要說明,本書后面講到的匯編語言程序設(shè)計都只在實(shí)模式下進(jìn)行的,從80286開始系統(tǒng)已經(jīng)為用戶提供了實(shí)模式和保護(hù)模式;而從80386開始,又有虛86模式,這模式可在一臺計算機(jī)上可以同時運(yùn)行幾個8086程序。就編程者而言,面對的是實(shí)模式和保護(hù)模式兩種工作方式,這兩種方式并無本質(zhì)的區(qū)別,只是所處環(huán)境和實(shí)現(xiàn)恢復(fù)存在一些差別,只要

4、掌握在實(shí)模式下的匯編語言編程的基本方法,再了解保護(hù)模式的編程環(huán)境,則在保護(hù)模式下編程也并非難事。 隨著計算機(jī)應(yīng)用領(lǐng)域的擴(kuò)展和計算機(jī)技術(shù)的迅速發(fā)展,程序?qū)⑷遮咠嫶蠛蛷?fù)雜。尤其是一些系統(tǒng)程序,不斷增強(qiáng)功能和更換版本,一般要求后面的版本往前是兼容的。因此目前的程序都形成模塊化結(jié)構(gòu)。8.1.1 匯編語言程序設(shè)計的基本過程匯編語言程序設(shè)計的基本過程 匯編語言程序設(shè)計的基本過程,大體上可以分為以下幾個步驟: 1分析問題,明確要求分析問題就是按給定的課題進(jìn)行認(rèn)真而深入研究,對所要解決的問題進(jìn)行全面了解和分析。一個實(shí)際的問題由于環(huán)境條件等原因,往往都是比較復(fù)雜的,只有在深入分析問題的基礎(chǔ)上,善于抓住主要矛盾,

5、剔除次要矛盾,才能抽取問題的本質(zhì),顯露解決問題的思路或解題的大體方案。所謂明確要求就是明確用戶的要求,依據(jù)給出的條件和數(shù)據(jù),應(yīng)該需要進(jìn)行哪些處理,輸出什么樣的結(jié)果,針對實(shí)際需求進(jìn)行可行性分析。建立數(shù)學(xué)模型 在分析問題和明確要求的基礎(chǔ)上,要建立面向?qū)嶋H問題的數(shù)學(xué)模型,將一個物理過程或工作狀態(tài),用數(shù)學(xué)形式表達(dá)出來,這個形式可能是一些公式、表格等等。確定算法和處理方案 數(shù)學(xué)模型建立后,必須研究和確定算法,以便選擇較好的方案。所謂算法是指解決某些問題的計算方法,不同類型的問題有不同的計算方法。根據(jù)問題的特點(diǎn),對計算方法進(jìn)行優(yōu)化。如果沒有現(xiàn)成的方法可以選用,必須通過實(shí)踐探索,并總結(jié)出算法思想和規(guī)律性。有

6、了好的正確的算法,才能得到正確的結(jié)果,這才是我們工作的方向和目標(biāo)。編制程序流程圖 把解題的方法、步驟用框圖(流程圖)形式表示。如果要解決的問題比較復(fù)雜,那么可以自上而下逐步求精,直到每一個框都能很容易用指令或程序段表示為止。流程圖是程序算法的圖形描述,它以圖形方式把要解決的問題先后次序和程序的邏輯結(jié)構(gòu)直觀、形象地描述出來,使得解題的思路更加清晰,有利于理解、閱讀和編制程序,還有利于調(diào)試、修改程序和減少錯誤等。 (1)處理框:如圖81(a)所示。在處理框內(nèi)可以寫明某一段程序或某一模塊的功能或某一條指令所完成的功能。其特點(diǎn)是有一個入口,一個出口。 (2)判斷框:見圖81(b)所示??捎昧庑位蚣饨切?/p>

7、框表示??騼?nèi)寫明比較、判斷的條件。條件較長時,用尖角框表示較合適。它可有一個入口和安排兩個出口,在每個出口處都要寫明條件判斷的結(jié)果。若條件成立,一般寫“是”或“y”,也有寫明具體條件的內(nèi)容,如判開關(guān)的狀態(tài),如果判斷框內(nèi)寫的是:“開關(guān)處于開通狀態(tài)否?”,若條件成立可寫為“開”或“y”;若條件不成立,則寫成“否”或“n”等均可,因?yàn)樗菍懡o人看的,明白其意就可以。它們表達(dá)的意思是為編程方便或提供給閱讀的人看的圖形。 (3)起止框:如圖81(c)所示。表示一個程序或一個程序模塊的開始和結(jié)束。起始框內(nèi)通常用模塊名(如過程名)、標(biāo)號或“開始”字符表示,它僅有一個出口。終止框內(nèi)通常用“結(jié)束”、“暫?!被颉?/p>

8、返回”等文字表示,它僅有一個入口。 (4)連接框:如圖81(d)所示。當(dāng)一個程序框圖比較復(fù)雜,需要分布在幾張紙上,或者雖然在一張紙上就能給出一個程序框圖,但在流程圖中連線較多且常常縱橫交錯,這時可用連接框表示兩根流向線的連接關(guān)系。所以連接框內(nèi)常用字母或數(shù)字來表示??騼?nèi)有相同字母或數(shù)字就表示它們有連線關(guān)系。它只有一個出口或入口。 (5)指向線:如圖81(e)所示。指向線是由帶箭頭的線段表示的,它表示程序的流向以及程序執(zhí)行的順序和去向,如程序的流向是從上往下或從左往右等。當(dāng)然,對于那些簡單的較小的程序,它的流程并不復(fù)雜,一般也可以不需要畫出流程圖。但對于一個比較復(fù)雜的問題,程序比較大,先著手畫出解

9、決問題思路和編程方向的流程圖,很有意義。從流程圖上可以直觀地檢查出程序的總體結(jié)構(gòu)是否正確合理,再根據(jù)流程圖來編制程序,可以說方向明確,心中有數(shù),不會陷入盲目性。這樣,可編寫出比較良好的程序。流程圖的確定,可以說任務(wù)已經(jīng)完成了大半,因?yàn)?,只要熟悉指令系統(tǒng),編程就比較快捷了。流程圖在調(diào)試程序的過程中,對檢查程序功能或流程方面存在的錯誤,也較為方便,方便于確定在何處設(shè)置斷點(diǎn)。合理分配存儲空間和寄存器 匯編語言程序直接面向的資源之一是存儲器。程序運(yùn)行時,程序目標(biāo)代碼、大量數(shù)據(jù)都是從指定的存儲單元中取出,而中間結(jié)果或最后結(jié)果要送入指定存儲單元,因此,為了充分利用存儲空間,根據(jù)需要分別定義數(shù)據(jù)段,堆棧段,

10、代碼段以及附加段。工作單元可設(shè)置在數(shù)據(jù)段或附加段中的某些存儲單元。 寄存器也是匯編語言程序直接面向的資源,在程序中,無論是對數(shù)據(jù)進(jìn)行操作或傳送,還是從存儲器中尋找操作數(shù),8086cpu常使用寄存器,而且有的操作要求使用特定的寄存器,如堆棧操作就要求使用ss或sp,循環(huán)指令loop必與cx寄存器配合等等。cpu中寄存器的數(shù)量有限,編程中必須合理分配各寄存器的用途。 6編制程序:根據(jù)程序流程圖編制源程序。正確使用指令、宏指令、偽指令編寫匯編語言程序,這個階段就是與寫文章一樣,體現(xiàn)出自己的編程風(fēng)格。7調(diào)試程序:以上步驟僅僅是完成了源程序的編寫,對于一個程序設(shè)計人員,尤其是程序設(shè)計的初學(xué)者,很難做到所

11、編制的程序能夠一次成功,而沒有一點(diǎn)錯誤。若有錯誤,問題在哪里呢?如何修改?這一切都可以在計算機(jī)上運(yùn)行調(diào)試來完成。也只有在計算機(jī)上執(zhí)行結(jié)果正確的程序,才能算是通過的程序。特別是對于復(fù)雜的問題,往往要分解成若干個子模塊,分別由幾個人編寫,而形成若干個程序模塊,把它們連接在一起,才能形成總體程序。一般來說,總會有這樣或那樣的錯誤存在,在調(diào)試程序過程中這些錯誤都可以被發(fā)現(xiàn),然后進(jìn)行修改,再調(diào)試,再修改,直到所有的錯誤糾正為止。試運(yùn)行和分析結(jié)果 試運(yùn)行和分析結(jié)果是為了檢驗(yàn)程序是否達(dá)到了設(shè)計要求,是否滿足用戶提出的需求,所確定的方案是否可行。若沒有達(dá)到事先的設(shè)計要求,不滿足用戶的需求,就必須從分析問題開始

12、檢查并修正原有的設(shè)計方案,直到符合設(shè)計要求和滿足用戶需求為止。整理資料,投入運(yùn)行在試運(yùn)行滿足各種需求之后,應(yīng)當(dāng)系統(tǒng)地整理材料,有關(guān)資料要及時歸檔或提交給用戶,以便正常投入運(yùn)行。以上8與9兩項(xiàng)是面向科研設(shè)計人員的問題。 8.1.2 程序結(jié)構(gòu)化的概念程序結(jié)構(gòu)化的概念在計算機(jī)發(fā)展的初期,由于計算機(jī)硬件貴,內(nèi)存容量小和運(yùn)算速度慢,當(dāng)時衡量程序質(zhì)量好壞的主要標(biāo)準(zhǔn)看其占用內(nèi)存的大小和運(yùn)算時間的長短。為達(dá)到此目的,編程者挖空心思尋找技巧,這種程序往往使人難以理解和消化,造成人力和時間的嚴(yán)重浪費(fèi),而且使程序設(shè)計沒有統(tǒng)一的規(guī)范。 隨著計算機(jī)的迅速發(fā)展,特別是大規(guī)模和超大規(guī)模集成電路技術(shù)的興起,使計算機(jī)硬件價格大

13、大下降,內(nèi)存容量不斷擴(kuò)大,如從8086的1mb的內(nèi)存,現(xiàn)在內(nèi)存最大可以設(shè)置為4gb=4096mb,由于主頻的不斷提高,使運(yùn)算速度也大幅度加快。因此,要求運(yùn)行時間短和節(jié)省內(nèi)存已不是主要矛盾,而應(yīng)使程序具有良好的結(jié)構(gòu),清晰的層次,容易閱讀和理解,容易修改和查錯,這是對以前的傳統(tǒng)設(shè)計方法提出了挑戰(zhàn),從而產(chǎn)生了結(jié)構(gòu)化程序設(shè)計方法。結(jié)構(gòu)化程序設(shè)計是1969年由荷蘭學(xué)者ewdijkstra等人提出的。這種新的程序設(shè)計方法包括以下三個方面的內(nèi)容: 1程序由一些基本結(jié)構(gòu)組成:包括順序結(jié)構(gòu)、選擇(分支)結(jié)構(gòu)和循環(huán)結(jié)構(gòu),由這些基本結(jié)構(gòu)組成一個結(jié)構(gòu)化程序。 2一個大型的復(fù)雜程序應(yīng)按其功能分解成若干個功能模塊,并把這

14、些模塊按層次關(guān)系進(jìn)行組裝。每個模塊內(nèi)的執(zhí)行步驟都應(yīng)該很清楚,整個程序的算法和每個模塊算法,都用標(biāo)準(zhǔn)的結(jié)構(gòu)來表示。每個結(jié)構(gòu)內(nèi)還可以包含有和自己同樣形式的結(jié)構(gòu)或是其它形式的結(jié)構(gòu),而且每個結(jié)構(gòu)只有一個入口點(diǎn)和一個出口點(diǎn),以結(jié)構(gòu)化的方式編寫的程序容易理解,也容易修改錯誤。3在程序設(shè)計時,應(yīng)采用“自頂而下,逐步求精”的實(shí)施方法,又稱為“系統(tǒng)化程序設(shè)計”方法。采用此法,首先要把一個大型程序分解成幾個主要的模塊。其中主模塊用來說明這些主要模塊之間的關(guān)系以及它們的功能,而每個主要模塊可再分解幾個較小的模塊,然后繼續(xù)分解成更小的模塊,直到每個模塊內(nèi)的操作步驟都很清楚,很容易理解為止,最后把一個模塊或幾個模塊分配

15、給不同的編程人員進(jìn)行編寫。與“自頂而下”的程序設(shè)計方法相對應(yīng),還有“自下而上”的程序設(shè)計方法,此法是程序員先開始編寫低層次的模塊并且期望這些模塊最后能組成在一起。如果組合完成了,那么和“自頂向下”的設(shè)計方法產(chǎn)生相同結(jié)果。目前許多程序設(shè)計都是混合使用這兩種方法,由上而下開始設(shè)計,然后由最小的模塊開始編寫,測試連接,再一直往上做,直到最終完成為止。程序結(jié)構(gòu)化的首要問題是程序的模塊化。一個大型復(fù)雜的程序可以劃分為若干個功能模塊,其中有一個為主模塊,由它選擇和調(diào)用其它各個功能模塊,被調(diào)用的各個模塊稱為子模塊。這種將一個復(fù)雜的大型程序按其功能劃分為若干個相對獨(dú)立的模塊進(jìn)行程序設(shè)計的方法稱為程序的模塊化。

16、按結(jié)構(gòu)化程序設(shè)計方法編寫出的程序,具有風(fēng)格優(yōu)美、結(jié)構(gòu)優(yōu)良、層次分明、可讀性強(qiáng)、易于理解、便于修改等優(yōu)點(diǎn)。 在匯編語言程序設(shè)計中,程序模塊通常是利用編寫子程序(或過程)的手段來實(shí)現(xiàn)。 data segmentdatb db 63h,74h,5ah,79h,6ah,7ch,86h,3fhdata endsstak segment stack dw 20h dup(?)stak endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax lea si,datb mov ax,si ;寄存器間址類型隨同ax add si,2

17、;地址調(diào)整,因是字操作則加2 mov bx,si add si,2 mov cx,si add si,2 mov dx,si mov ah,4ch int 21h code ends end start 【例82】 對兩個無符號數(shù)求其平均值。它們分別存放在x和y字節(jié)存儲單元中,而平均值存放在z字節(jié)存儲單元內(nèi),試編寫完整的源程序。data segmentx db 88hy db 8chz db ?stak segment stack dw 10h dup(?)stak endsdata endscode segment assume cs:code ,ds:datastart: mov ax,d

18、ata mov ds,ax ;設(shè)置數(shù)據(jù)段的段基值 mov al,x ;取第一個數(shù) add al,y ;兩數(shù)相加 mov ah,0 ; adc ah,0 ;回收進(jìn)位值 mov bl,2 ;除數(shù)為2 div bl ;ax/bl有al商,ah余數(shù) mov z ,al ;僅處理商存入z單元中 mov ah,4ch ; int 21h ;返回doscode ends end start注:可用shr ax,1代替mov bl,2與div bl兩條指令。 【例83】 以字節(jié)變量table為首址的16個單元中,連續(xù)存放015的平方值(平方表),今任意給一個存放在xx字節(jié)單元中的數(shù)x(0x15),例如x為12

19、,查表求x的平方值,并把結(jié)果存入y字節(jié)單元中。 分析:根據(jù)給定的平方表的存放規(guī)律,可知表的起始地址與數(shù)x之和,正是x的平方值所在單元的偏移地址,編程如下:data segmenttable db 0,1,4,9,16,25,36,49 db 64,81,100,121,144,169,196,225 xx db 12 y db ?data endsstaksegment stack dw 30h dup(?)stak endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax lea bx,table ;bx取平方表的

20、首地址偏移量 mov al,x ;al取待查單元的位移量 mov ah,0 add bx,ax ;形成x單元的偏移量 mov al,bxmov y,almov ah,4chint 21hcode ends end start可直接用查表指令xlat來編寫,主要程序部分如下:lea bx,tablemov al,xxlatmov y,almov ah,4chint 21h 注:查表指令xlat只能是字節(jié)操作?!纠?4】 把一個字節(jié)的8421bcd碼轉(zhuǎn)換成asc11碼。 編寫一個完整的源程序,將dat字節(jié)單元存放的兩位bcd碼,轉(zhuǎn)換成2個字節(jié)的asc11碼,并分別存放在asc和asc1字節(jié)單元中(

21、存低位bcd碼的asc11碼)。 例如:(dat字節(jié)單元)=86h,那么(asc字節(jié)單元)=38h,(asc1字節(jié)單元)=36h,程序如下: data segment dat db 86h asc db ?,? data ends stak segment stack db 100 dup(?) stak ends code segment assume cs:code,ds:data,ss:stak start: mov ax,data mov ds,ax mov al,dat mov cl,4 shr al,cl or al,30h mov asc,al mov al,dat and al

22、,0fh or al,30h mov asc+1,al mov ah,4ch int 21hcode ends end start 這種轉(zhuǎn)換也可用下列程序段:mov al,datmov asc,almov asc+1,almov cl,4shr asc,clor asc,30h and asc+1,0fhor asc+1,30h 【例85】已知16位帶符號數(shù)的字變量w、x、y、z,試按下列給定的公式編寫程序:(w(xy+z800)/y,計算結(jié)果的商存在ax中,余數(shù)存放在dx中。 data segment w dw 3678h x dw 8866h y dw 0abcdh z dw 98efh

23、data ends stak segment stack dw 20h dup(?) stak ends code segment assune cs:code,ds:data strat: mov ax,data mov ds,ax mov ax,x imul y ;計算x*y mov cx,ax ;暫存低16位乘積 mov bx,dx ;暫存高16位乘積,讓出ax,dx mov ax,z cwd ;進(jìn)行符號位擴(kuò)展 add cx,ax adc bx,dx ;計算x*y+z sub cx,800 sbb bx,0 ;計算x*y+z800 mov ax,w cwd sub ax,cx sbb d

24、x,bx ;計算w(x*y+z300) idiv y ;計算(w(x*y+z300))/y mov ah,4ch int 21h code ends end start 本例是一個帶符號數(shù)的加、減、乘、除運(yùn)算的綜合題?!纠?6】 不使用乘法指令,計算y=10*x算法分析:y=10*x=x*8+x*2x*(82),可借助算術(shù)左移或邏輯左移指令來實(shí)現(xiàn)。編寫程序如下: ;使用簡化段模式編程: dosseg.model small.stack 100h.data x db 22h y db ?.code start:mov ax,data mov ds,ax mov al,x sal al,1 ;x*

25、2 mov bl,al sal al,1 ;x*4 sal al,1 ;x*8 add al,bl ;x*10 mov y,al mov ah,4ch int 21h end start 又如:17*xx*(16+1)的方法進(jìn)行;15842+1按二進(jìn)制的權(quán)分解。 【例87】 用not指令對123求補(bǔ);使用簡化段模式,編程如下:dosseg.model small.stack 100h.codestart:mov al,123 not al ;求反 add al,1 ;加1即為補(bǔ) mov ah,4ch int 21h end start這是使用“求反加1”的方法對一個數(shù)求補(bǔ),回顧求補(bǔ)指令其主要程

26、序段為: mov al,123 neg al 【例88】 輸入09之間任意兩個數(shù)值,分別進(jìn)行加法與乘法運(yùn)算,輸出結(jié)果。采用非壓縮的8421bcd碼處理較為方便。程序中的數(shù)據(jù)并不多,直接選擇寄存器來存放數(shù)據(jù)。 dosseg .model small .stack 100h .code start:mov ah,1 int 21h ;1號功能,輸入一個數(shù)字 mov ch,al ;從al回收按下所在鍵的ascii碼 int 21h ;輸入另一個數(shù)字 mov cl,al ;第二個數(shù)字的ascii碼存入cl中 mov ah ,0 ; add al,ch ;求和 aaa ;調(diào)整后的十位數(shù)在ah中,個位數(shù)在al中 or ax,3030h ;把數(shù)字轉(zhuǎn)換成asc11碼 mov dh,al ;保存和的個位數(shù) mov dl,ah ;十位數(shù)送顯示 mov ah,2 ; int 21h ;輸出和的十位數(shù) mov dl,dh ;取個位數(shù) int 21h ;個位數(shù)顯示 mov dl,20h ;20h為空格的ascii碼 int 21h int 21h ;輸出兩個空格后再顯示乘積 sub cx

溫馨提示

  • 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

提交評論