第4章 語言程序設(shè)計第3講_第1頁
第4章 語言程序設(shè)計第3講_第2頁
第4章 語言程序設(shè)計第3講_第3頁
第4章 語言程序設(shè)計第3講_第4頁
第4章 語言程序設(shè)計第3講_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

匯編語言程序設(shè)計第四章匯編語言程序設(shè)計基本步驟順序程序的基本結(jié)構(gòu)和設(shè)計方法循環(huán)程序的結(jié)構(gòu)形式和程序設(shè)計

分支程序的結(jié)構(gòu)形式和程序設(shè)計2本章要點子程序的基本過程和設(shè)計方法34561匯編語言概述循環(huán)結(jié)構(gòu):由條件是否成立,確定是否重復(fù)執(zhí)行某段程序。循環(huán)程序組成:循環(huán)初值部分:為了保證循環(huán)程序能夠正常進行循環(huán)操作而必須做的準(zhǔn)備工作;循環(huán)體:需要重復(fù)執(zhí)行的程序段;修改部分:按照一定規(guī)律修改操作數(shù)地址及控制變量,以便每次執(zhí)行循環(huán)體時得到新的數(shù)據(jù);控制部分:用來保證循環(huán)程序按照規(guī)定的次數(shù)或者特定條件正常循環(huán)。3.3.4串操作類指令串操作指令:數(shù)據(jù)傳送類指令每次只能傳送一個數(shù)據(jù),若要傳送大批數(shù)據(jù)就需要重復(fù)編程,這樣就浪費了大量的時間和空間。為此8086提供了一組處理主存中連續(xù)存放數(shù)據(jù)串的指令,這就是串操作指令。

功能:傳送MOVS、比較CMPS、搜索SCAS、存STOS、取LODS。3.3.4串操作指令SI用于尋址源操作數(shù)(存于數(shù)據(jù)段),由DS提供段地址。

DI用于尋址目的操作數(shù)(存于附加段),由ES提供段地址。

重復(fù)執(zhí)行串操作指令(由CX控制次數(shù)),可實現(xiàn)串操作。SI、DI中的地址減?。―F=1)SI、DI中的地址增大(DF=0)執(zhí)行一次串操作指令后特點:串操作中“B”為字節(jié)操作,“W”為字操作。12相等重復(fù)前綴

REPE/REPZ3不相等重復(fù)前綴

REPNE/REPNZ重復(fù)操作前綴有下列三種形式:重復(fù)前綴

REP1、REP(Repeat)REP前綴用在MOVS、STOS指令前,使后面的串指令重復(fù)執(zhí)行功能:每執(zhí)行一次串指令(CX)-1,直到(CX)=0,重復(fù)執(zhí)行結(jié)束。2、REPZ/REPE相等/為零時重復(fù)操作前綴(Repeatwhileequal/zero)該指令一般用在CMP、SCAS指令前,當(dāng)(CX)不等于0且比較相等的情況下,重復(fù)執(zhí)行串指令。功能:每執(zhí)行一次串指令(CX)-1,并判斷ZF標(biāo)志是否為0,只要(CX)=0或ZF=0,則重復(fù)執(zhí)行結(jié)束。重復(fù)前綴指令REPREPZREPNZ3、REPNZ/REPNE不相等/不為零時重復(fù)操作前綴(Repeatwhilenotequal/notzero)該指令一般用在CMPS、SCAS指令前,當(dāng)(CX)不等于0且比較不相等的情況下,重復(fù)執(zhí)行串指令。

功能:每執(zhí)行一次串指令(CX)-1,并判斷ZF標(biāo)志是否為0,只要(CX)=0或ZF=1,則重復(fù)執(zhí)行結(jié)束。語句格式:MOVSDST,SRCMOVSB——字節(jié)串傳送MOVSW——字串傳送功能:將以SI為指針的源串中的一個字節(jié)(或字)存儲單元中的數(shù)據(jù)傳送至以DI為指針的目的地址中去,并自動修改指針,使之指向下一個字節(jié)(或字)存儲單元。即:1)(DS:[SI])→(ES:[DI])。2)當(dāng)DF=0時,(SI)和(DI)增量。當(dāng)DF=1時,(SI)和(DI)減量。4.傳送指令MOVSMovstring

MOVSI,OFFSETSRCMOVDI,OFFSETDSTMOVCX,100 ;CX←傳送次數(shù)CLD;DF=0,地址增加AGAIN:MOVSB;傳送一個字節(jié)DECCX;傳送次數(shù)減1JNZAGAIN;判斷CX是否為0;;0,則到AGAIN位置;1,結(jié)束【例】從源地址傳送100個字節(jié)數(shù)據(jù)到目標(biāo)地址語句格式:STOSDSTSTOSB——往字節(jié)串中存數(shù)STOSW——往字串中存數(shù)功能:將AL或AX中的數(shù)據(jù)送入DI所指的目的串中的字節(jié)(或字)存儲單元中。即:①字節(jié)操作:(AL)→(DI)字操作:(AX)→(DI)。②修改指針DI,使之指向串中的下一個元素。當(dāng)DF=0時,(DI)增量;當(dāng)DF=1時,(DI)減量。5.串存儲指令STOSStoreintostring【例】向DI指向的存儲區(qū)輸入0(把某一段存儲單元清0)

MOVAX,0MOVDI,DI,OFFSETDST;DI為目標(biāo)地址MOVCX,1000;CX←傳送次數(shù)CLD;DF=0,地址增加REPSTOSW;重復(fù)傳送字

語句格式:LODSDSTLODSB——從字節(jié)串中取數(shù)LODSW——從字串中取數(shù)功能:將SI所指的源串中的一個字節(jié)(或字)存儲單元中的數(shù)據(jù)取出來送入AL(或AX)中。即①字節(jié)操作:((SI))→AL,字操作:((SI))→AX。②修改指針SI,使它指向串中的下一個元素。當(dāng)DF=0時,(SI)增量;當(dāng)DF=1時,(SI)減量。6.從源串中取字符指令LODSLoadfromstring語句格式:CMPSDST,SRCCMPSB——字節(jié)串比較CMPSW——字串比較功能:將SI所指的源串中的一個字節(jié)(或字)存儲單元中的數(shù)據(jù)與DI所指的目的串中的一個字節(jié)(或字)存儲單元中的數(shù)據(jù)相減,并根據(jù)相減的結(jié)果設(shè)置標(biāo)志,但結(jié)果并不保存。即:①((SI))-((DI))。②修改串指針,使之指向串中的下一個元素。當(dāng)DF=0時,(SI)和(DI)增量。當(dāng)DF=1時,(SI)和(DI)減量。7.串比較指令CMPSComparestring【例4-4】:已知在內(nèi)存中有兩個字符串STR1和STR2,比較兩個字符串是否相等,相等,將FLAG單元置為1,否則送0。DATASEGMENTSTR1DB‘ASDFGHJK’CNEQU$-STR1數(shù)據(jù)段STR2DB‘ASDFGTYU’FLAGDB?DATAENDSCODESEGMENT代碼段ASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AX;初始化DS,ESMOVFLAG,1MOVSI,OFFSETSTR1MOVDI,OFFSETSTR2;偏移地址送SI、DIMOVCX,CNCLD;DF=0REPZCMPSBJZNEXT;ZF=1跳轉(zhuǎn)到NEXT處執(zhí)行MOVFLAG,0;ZF=0,不相等,FLAG置0NEXT:MOVAH,4CHINT21H;終止當(dāng)前程序并返回DOSCODEENDSENDSTART語句格式:SCASDST,SRCSCASB——字節(jié)串搜索SCASW——字串搜索功能:AL(字節(jié))或AX(字)中的內(nèi)容與DI所指的目的串中的一個字節(jié)(或字)存儲單元中的數(shù)據(jù)相減,根據(jù)相減結(jié)果設(shè)置標(biāo)志位,結(jié)果不保存。即:①字節(jié)操作:(AL)-((DI));字操作:(AX)-((DI))。②修改指針使之指向串中的下一個元素。當(dāng)DF=0時,(DI)增量。當(dāng)DF=1時,(DI)減量。8.串搜索指令SCAS9.CLD清除方向標(biāo)志指令操作:該指令使DF=0,地址自動增量。10.STD設(shè)置方向標(biāo)志指令操作:該指令使DF=1,地址自動減量。3.3.5控制轉(zhuǎn)移類指令1)無條件轉(zhuǎn)移指令(JMP)2)條件轉(zhuǎn)移指令(簡單條件轉(zhuǎn)移、無符號數(shù)、有符號數(shù)條件轉(zhuǎn)移)3)循環(huán)控制指令(LOOP、LOOPE、LOOPNE)4)子程序調(diào)用和返回指令(CALL、RET)3循環(huán)指令

(1)循環(huán)指令LOOP(2)相等/為零循環(huán)指令LOOPE(3)不相等/不為零循環(huán)指令LOOPNE(4)CX為零轉(zhuǎn)移指令JCXZ循環(huán)程序框圖:(COUNT)=循環(huán)次數(shù)循環(huán)體(COUNT)=(COUNT)-1(COUNT)=0?yesno語句格式:LOOP短標(biāo)號操作:(CX)(CX)-1功能:(CX)≠0,則程序轉(zhuǎn)移;否則,順序執(zhí)行。說明:使用LOOP指令可代替兩條指令:DECCXJNE/JNZ短標(biāo)號(1)循環(huán)指令LOOP解:XORAH,AH;累加器清零MOVCX,08H;設(shè)置循環(huán)次數(shù)START:ROLAL,1;AL循環(huán)左移1位,;AL的最高位送CFJNCLP;CF=0,轉(zhuǎn)移到LPINCAH;CF=1,AH+1→AHLP:LOOPSTART;CX-1→CX,CX≠0,;循環(huán)到START執(zhí)行HLT;程序段結(jié)束返回【例】請編寫指令序列,確定AL中“1”的個數(shù)語句格式:①LOOPE短標(biāo)號②LOOPZ短標(biāo)號操作::(CX)(CX)-1功能:(CX)≠0且ZF=1,則程序轉(zhuǎn)移;否則,順序執(zhí)行。(2)相等/為零循環(huán)指令LOOPE語句格式:①LOOPNE短標(biāo)號②LOOPNZ短標(biāo)號操作::(CX)(CX)-1功能:(CX)≠0且ZF=0,則程序轉(zhuǎn)移;否則,順序執(zhí)行。(3)不相等/不為零循環(huán)指令LOOPNE3.循環(huán)程序的結(jié)構(gòu)和程序設(shè)計根據(jù)條件重復(fù)執(zhí)行一段指令就構(gòu)成了循環(huán)程序結(jié)構(gòu)

。例:

MOVAX,0

;累加求和寄存器清0

MOVBX,OFFSETARRAY

;數(shù)組始址送BX中

MOVCX,50

;循環(huán)控制計數(shù)初始化

AGAIN:ADDAX,[BX]

ADDBX,2

;數(shù)組地址增2,BX指向下一個元素

DECCX

;循環(huán)控制計數(shù)減1

JNZAGAIN

;計數(shù)不為0時繼續(xù)循環(huán)MOVS,AX;計數(shù)為0時循環(huán)結(jié)束,和存于S中

將ARRAY數(shù)組中的50個字?jǐn)?shù)據(jù)求和,并將和存入字變量S中

保證循環(huán)正常執(zhí)行和結(jié)束的條件:正確地初始化循環(huán)控制計數(shù)和初始條件1正確地檢測循環(huán)條件2必須保證能達到循環(huán)結(jié)束條件(例如在循環(huán)體內(nèi)有修改循環(huán)控制值的指令)3

指令系統(tǒng)提供了專門用于循環(huán)結(jié)構(gòu)的循環(huán)控制指令,更加簡便的地實現(xiàn)循環(huán)結(jié)構(gòu)。1)循環(huán)程序的結(jié)構(gòu)和程序設(shè)計循環(huán)控制指令的轉(zhuǎn)移范圍為:-128~+127字節(jié)

格式:LOOP標(biāo)號

(段內(nèi)短轉(zhuǎn)移)(1)LOOP指令(2)等于繼續(xù)循環(huán)指令

格式:LOOPZ/LOOPE標(biāo)號

(3)不等于繼續(xù)循環(huán)指令格式:LOOPNZ/LOOPNE標(biāo)號

循環(huán)控制指令LOOPAGAIN

在前面的求和例子中,可用一條循環(huán)指令代替兩條指令:

DECCX JNZAGAIN例:

MOV CX,80 MOV SI,-1 MOV AL,$AGAIN:INC SICMP AL,STRS[SI]

LOOPNE

AGAINMOV LEN,SI 設(shè):STRSDBstring$

求存放在STRS存儲區(qū)中的字符串(以$結(jié)束)長度。2)循環(huán)程序設(shè)計方法

計數(shù)控制法——用于循環(huán)次數(shù)已知的情況條件控制法——用于循環(huán)次數(shù)不確定的情況控制循環(huán)的方法可分為兩類:【例4-5】:利用程序完成求1~100的累加和,結(jié)果送RESULT單元中計數(shù)控制法混合控制法——前兩種的情況的結(jié)合程序段如下:DATASEGMENTRESULTDW?CNEQU100DATAENDS

MOVAH,4CHINT21HCODEENDSENDSTART問題1:100+99+98+…+1?CODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,0MOVCX,1LP:ADDAX,CXINCCXCMPCX,CNJBELPMOVRESULT,AX【思考題】編寫程序完成求1+2+3+……N的累加和,直到累加和超過1000為止。統(tǒng)計被累加的自然數(shù)的個數(shù)送CN單元,累加和送SUM。問題2:條件控制法……

MOVSI,OFFSETSTBUFMOVCL,0LP:CMPAL,0DHJZEXITMOV[SI],ALINCSICMPAL,30HJBNEXT【例】通過鍵盤輸入一個字符串,送入數(shù)據(jù)段的存儲區(qū)中,以回車結(jié)束,統(tǒng)計字符串中數(shù)字的個數(shù).CMPAL,39HJANEXTINCCLNEXT:……JMPLP;輸入下一個字符EXIT:……;送結(jié)果,返回DOS循環(huán)次數(shù)預(yù)先不確定,在循環(huán)過程中通過測試某個特定條件是否滿足來決定循環(huán)是否繼續(xù)執(zhí)行?;旌峡刂品ā纠?-6】已知在內(nèi)存中有一字符串,長度為CN。找出這個字符中的第一個空格,若找到,將其地址送到ADDR1單元,將FLAG(字節(jié)單元)置1,否則將FLAG清0.混合控制法:前兩種控制方法的結(jié)合,結(jié)束循環(huán)的條件是已達到預(yù)定的循環(huán)次數(shù)或出現(xiàn)了某種退出循環(huán)的條件思路:這個題目是一個單循環(huán),控制循環(huán)退出的情況有兩種,一種是未找到空格,即循環(huán)計數(shù)器到達終止值;另一種是找到空格,即計數(shù)器未到終止值就退出循環(huán)。DATASSEGMENTSTR1DB'WHATISYOURNAME?',0AH,0DH,'$'CNEQU$-STR1ADDR1DW?FLAGDB?DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVES,AX;初始化

MOVCX,CN;計數(shù)器送初值MOVDI,OFFSETSTR1;DI指向字符串首單元MOVAL,20H;空格字符送ALREPNZSCASB;在字符串中尋找空格JNZNEXT;未找到,轉(zhuǎn)NEXTDECDI;找到,地址指針減1MOVADDR1,DI;空格的地址送ADDRMOVFLAG,1;FLAG標(biāo)志單元送1JMPEXIT;轉(zhuǎn)結(jié)束位置NEXT:MOVFLAG,0;FLAG標(biāo)志單元送0EXIT:MOVAH,4CHINT21H;返回DOSCODESENDSENDSTART3)循環(huán)程序設(shè)計方法【例4-7】在數(shù)據(jù)段中以BUF為首地址的區(qū)域中,存放了CN個帶符號字節(jié)數(shù)據(jù),要求將其中的正數(shù)送入PLUS開始的存儲區(qū),負(fù)數(shù)存入MINUS開始的存儲區(qū)。1.單循環(huán)程序設(shè)計思路分析:該題為一單循環(huán)結(jié)構(gòu),循環(huán)體內(nèi)嵌套分支結(jié)構(gòu)。2.多重循環(huán)程序設(shè)計例:分析下述程序的功能:多重循環(huán)程序能夠解決更復(fù)雜的實際問題。消耗時間延時功能MOVBL,20DELAY:MOVCX,9801H ;外循環(huán)開始

IDLE:LOOPIDLE ;內(nèi)循環(huán)體 DECBL JNZDELAY ;外循環(huán)結(jié)束設(shè)計多重循環(huán)程序時注意下面兩點:

(1)內(nèi)層循環(huán)必須完全包含在外層循環(huán)內(nèi)

(2)轉(zhuǎn)移指令只能從循環(huán)結(jié)構(gòu)內(nèi)轉(zhuǎn)到循環(huán)結(jié)構(gòu)外匯編語言程序設(shè)計基本步驟順序程序的基本結(jié)構(gòu)和設(shè)計方法循環(huán)程序的結(jié)構(gòu)形式和程序設(shè)計

分支程序的結(jié)構(gòu)形式和程序設(shè)計2本章要點子程序的基本過程和設(shè)計方法34561匯編語言概述3.3.5控制轉(zhuǎn)移類指令1)無條件轉(zhuǎn)移指令(JMP)2)條件轉(zhuǎn)移指令(簡單條件轉(zhuǎn)移、無符號數(shù)、有符號數(shù)條件轉(zhuǎn)移)3)循環(huán)控制指令(LOOP、LOOPE、LOOPNE)4)子程序調(diào)用和返回指令(CALL、RET)code1segmentmainprocfar……

callfarptrsubp……retmainendpcode1endscode2segmentsubpprocfar……

retsubpendpcode2ends段間調(diào)用和返回codesegmentmainprocfar……callsubp……retmainendpsubpprocnear……

retsubpendpcodeends段內(nèi)調(diào)用和返回4.子程序調(diào)用和返回指令1)段內(nèi)直接調(diào)用:例題指令格式:CALLOPR執(zhí)行操作:(SP)←(SP)-2((SP)+1,(SP))←(IP)

(IP)←(IP)+16位位移量2)段內(nèi)間接調(diào)用:指令格式:CALLOPR執(zhí)行操作:(SP)←(SP)-2((SP)+1,(SP))←(IP)(IP)←(EA)例如:CALLBX:事先將過程入口的偏移地址置入BX寄存器中,調(diào)用程序轉(zhuǎn)向BX寄存器的內(nèi)容所指定的內(nèi)存單元。1.調(diào)用指令例題:段內(nèi)直接調(diào)用某程序段如下:1B03:2540CALLSUBPROC1B03:25431B03:3000SUBPROC試分析子程序調(diào)用過程中堆棧和IP的變化…SPSP-2①43H25H②偏移量=入口地址-斷點地=3000H-2543H=0ABDH(IP)=2543H+0ABDH=3000H返回3)段間直接調(diào)用:CALLOPR例題執(zhí)行操作:(SP)←(SP)-2((SP)+1,(SP))←(CS)(SP)←(SP)-2((SP)+1,(SP))←(IP)

(IP)←偏移地址

(CS)←段地址4)段間間接調(diào)用:CALLDWORDPTROPR執(zhí)行操作:(SP)←(SP)-2((SP)+1,(SP))←(CS)(SP)←(SP)-2((SP)+1,(SP))←(IP)

(IP)←(EA)

(CS)←(EA+2)例題:段間直接調(diào)用某程序段如下:C1SEGMENT1000:2540CALLFARPTRPROC21000:2545C1ENDSC2SEGMENT3000:1200PROC2C2ENDS試分析子程序調(diào)用過程中堆棧和寄存器的變化情況…SPSP-4①10H返回堆棧段②00H25H45HSP-2IPCS1)段內(nèi)返回:RET執(zhí)行操作:(IP)←((SP)+1,(SP))

(SP)←(SP)+2段內(nèi)帶立即數(shù)近返回:RETEXP2)段間遠返回:RET執(zhí)行操作:(IP)←((SP)+1,(SP))(SP)←(SP)+2(CS)←((SP)+1,(SP))(SP)←(SP)+2段間帶立即數(shù)遠返回:RETEXP2.返回指令六、子程序結(jié)構(gòu)與設(shè)計方法

子程序結(jié)構(gòu)是模塊化程序設(shè)計的重要基礎(chǔ),其調(diào)用和返回分別由CALL和RET指令完成,子程序設(shè)計方法包括:子程序定義1參數(shù)傳遞2子程序的嵌套調(diào)用3子程序的遞歸調(diào)用41、子程序的編寫方法1簡化程序書寫2減小代碼長度3便于子程序功能的共享1)子程序的優(yōu)點:

4便于大型程序的模塊化組織調(diào)用程序和子程序在同一代碼段中調(diào)用程序和子程序不在同一代碼段中子程序的類型屬性NEAR型FAR型例如:調(diào)用程序和子程序在同一代碼段中。MAIN PROCFAR

CALL SUBR1

RETMAINENDPSUB1PROCNEAR

RETSUBR1ENDP可改為:MAIN PROCFAR

CALL SUBR1 RETSUB1PROCNEAR

RETSUB1 ENDPMAIN ENDP例如:調(diào)用程序和子程序不在同一個代碼段內(nèi)。CODE1SEGMENT

CALLSUB2SUB2PROCFARRETSUB2ENDPCODE1ENDSCODE2SEGMENTCALLSUB2CODE2ENDS(2)正確使用堆棧

Sub1proc near;子程序入口PUSHAXPUSHBXPUSHCX

POPCXPOPBXPOPAX retSub1endp出棧與入棧順序應(yīng)當(dāng)相反

必須成對地執(zhí)行PUSH和POP指令,使RET指令能正確地彈出斷點返回地址。

2、編寫子程序的一般要求(1)保護寄存器

CALLsub1 ;調(diào)用子程序sub1movax,bx ;斷點指令sub1proc near;子程序入口

pushax;數(shù)據(jù)1入棧pushbx;數(shù)據(jù)2入棧

popbx;數(shù)據(jù)1出棧popax;數(shù)據(jù)2出棧

retsub1endp 例:子程序內(nèi)必須成對地執(zhí)行PUSH和POP指令,才能正常返回。IPSPSPSPSPIPaxbx(3)編寫適當(dāng)?shù)淖映绦騼?nèi)部文檔

使子程序可讀性好、易理解和便于使用

(4)參數(shù)傳遞

參數(shù)可以增加子程序的靈活性和通用性。調(diào)用程序傳送給子程序的參數(shù)稱為入口參數(shù),子程序返回給調(diào)用程序的結(jié)果稱為出口參數(shù)。

【例6-8】設(shè)計一個子程序,完成統(tǒng)計一組字?jǐn)?shù)據(jù)中的正數(shù)和0的個數(shù)DATASEGMENTARRDW-123,456,67,0,-34,-90,89,67,0,256CNEQU($-ARR)/2ZERDW?PLUSDW?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODE2、子程序的結(jié)構(gòu)形式START:MOVAX,DATAMOVDS,AXMOVSI,OFFSETARRMOVCX,CNCALLPZNMOVZER,BXMOVPLUS,AXMOVAH,4CHINT21HPZNPROCNEARPUSHSIPUSHDXPUSHCXXORAX,AXXORBX,BXPZN0:MOVDX,[SI]CMPDX,0JLPZN1JZZNINCAXJMPPZN1ZN:INCBXPZN1:ADDSI,2LOOPPZN0POPCXPOPDXPOPSIRETPZNENDPCODEENDS

ENDSTART3、子程序的嵌套與遞歸子程序的嵌套:

我們已經(jīng)知道,一個子程序

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論