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

下載本文檔

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

文檔簡介

ARM嵌入式系統(tǒng)

第5章 ARM匯編程序設(shè)計(jì)

5.1匯編語言源程序助記符偽指令宏指令匯編指令和機(jī)器指令是“一一對應(yīng)”的匯編語言程序需由匯編程序?qū)⑵鋮R編為機(jī)器語言程序,才能被計(jì)算機(jī)執(zhí)行。匯編語言大體上包括了匯編指令、系統(tǒng)調(diào)用和中斷、偽指令和宏指令,匯編語言是強(qiáng)烈依賴硬件和匯編環(huán)境的。

學(xué)習(xí)和使用匯編語言程序設(shè)計(jì)的原因指令語句(instructions)

完成一定操作功能,能夠翻譯成機(jī)器代碼的語句。偽指令語句(directives,指示性語句)

為匯編程序在翻譯匯編語言源程序時(shí)提供有關(guān)信息,并不翻譯成機(jī)器代碼。宏指令語句(marcos) 可看成是由若干條指令語句形成的語句,一條宏指令語句的功能相當(dāng)于若干條指令語句的功能。ARM程序設(shè)計(jì)基礎(chǔ)

偽指令宏與宏指令A(yù)RM匯編語言規(guī)范(語句、表達(dá)式和運(yùn)算符)ARM匯編語言的程序格式5.2偽指令段定義標(biāo)號符號定義偽指令數(shù)據(jù)定義偽指令匯編控制偽指令其他偽操作匯編語言程序示例AREA Block, CODE, READONLY num EQU 10 ENTRY

start

LDR R0, =src LDR R1, =dst MOV R2, #numblockcopy LDR R3, [R0], #4 STR R3, [R1], #4 SUBS R2, R2, #1 BNE blockcopy B . AREA BlockData, DATA, READWRITEsrc DCD 0,1,2,3,4,5,6,7,8,9dst SPACE 10*4 END符號定義偽指令定義全局變量: GBLA、GBLL和GBLS定義局部變量: LCLA、LCLL和LCLS變量賦值: SETA、SETL、SETS通用寄存器列表定義名稱:RLIST

GBLA、GBLL和GBLSGBLA、GBLL和GBLS 語法格式:

GBLA(GBLL或GBLS) 全局變量名

GBLAobjectsize;全局的數(shù)字變量objectsize,為0ObjectsizeSETA0xff

;將該變量賦值為0xff

SPACEobjectsize;引用該變量

GBLLstatusB

;全局的邏輯變量statusB,為{False}statusBSETL{TRUE} ;將該變量賦值為真

全局:作用范圍為包含該變量的源程序LCLA、LCLL和LCLSLCLA、LCLL和LCLS 語法格式: LCLA(LCLL或LCLS) 局部變量名 MACRO ;聲明一個(gè)宏$labelmessage$a;宏的原型LCLSerr;聲明一個(gè)局部變量err,為空串errSETS“errorno:”;向該變量賦值$label

;代碼INFO0,err:CC::STR:$a;使用該串變量MEND ;宏定義結(jié)束

局部:作用范圍為包含該局部變量的宏代碼的一個(gè)實(shí)例SETA、、SETL、SETSSETA、、SETL和SETS語法格式::變量名SETA((SETL或SETS)表表達(dá)式在向變量賦賦值前,必必須先聲明明該變量RLISTRLIST語法格式::名稱 RLIST{寄存存器列表}ContextRLIST{r0-r6,r8,,r10-r12,r15};將寄存器器列表名稱稱定義為Context,,可在ARM指令LDM/STM中通通過該名稱稱訪問寄存存器列表。。排列順序序無關(guān)數(shù)據(jù)定義偽偽指令DCBDCW(DCWU))DCD(DCDU))DCFD((DCFDU)DCFS((DCFSU)SPACEMAPFIELDDCB語法格式::{標(biāo)號}DCB表表達(dá)式表達(dá)式取值值范圍:-128~~127;0~255的數(shù)字或字字符串。DCB:““=”NullstringDCB““Nullstring””,0;構(gòu)造一個(gè)個(gè)以0結(jié)尾尾的字符串串DCW(或或DCWU)語法格式::{標(biāo)號}DCW((或DCWU)表表達(dá)式DCW:半半字對齊DCWU::不嚴(yán)格半半字對齊。。表達(dá)式取值值范圍:-32768~32767;0~65535data1DCW--128,,num1+8;num1必須是已已經(jīng)定義過過的DCD(或或DCDU)語法格式::{標(biāo)號}DCD((或DCDU)表表達(dá)式DCD:““&”DCD:字字對齊DCDU::不嚴(yán)格字字對齊。data1DCD1,5,20;其值為1,5,20data2DCDmemaddr+4;分配一個(gè)個(gè)字單元,,其值為程程序中標(biāo)號號memaddr加加4個(gè)字節(jié)節(jié)DCFD((或DCFDU)語法格式::{標(biāo)號}DCFD(或DCFDU)) 表達(dá)式式每個(gè)雙精度度的浮點(diǎn)數(shù)數(shù)占據(jù)兩個(gè)個(gè)字單元。。DCFD::字對齊DCFDU:不嚴(yán)格格字對齊DCFD1E308,-4E-100DCFDU 100000,-.1,3.1E26DCFS((或DCFSU)語法格式::{標(biāo)號}DCFS(或DCFSU)表達(dá)達(dá)式每個(gè)單精度度的浮點(diǎn)數(shù)數(shù)占據(jù)一個(gè)個(gè)字單元。。DCFS::字對齊DCFSU::不嚴(yán)格字對對齊DCFS1E3,-4E-9DCFSU1.0,-.1,3.1E6SPACE語法格式:{標(biāo)號}SPACE表表達(dá)式分配一片連續(xù)續(xù)的存儲區(qū)域域并初始化為為0。其中,,表達(dá)式為要要分配的字節(jié)節(jié)數(shù)。SPACE::“%”DatastrucSPACE280;分配連續(xù)280字節(jié)的的存儲單元并并初始化為0LTORG語法格式:{標(biāo)號}LTORG說明某個(gè)存儲儲區(qū)域是用來來暫存數(shù)據(jù)的的數(shù)據(jù)緩沖區(qū)區(qū)——文字池池或數(shù)據(jù)緩沖沖池。大的代代碼段也可以以使用多個(gè)數(shù)數(shù)據(jù)緩沖池。。當(dāng)程序中使用用LDR之類類的指令訪問問數(shù)據(jù)緩沖池池時(shí),為防止止越界產(chǎn)生,,通常把數(shù)據(jù)據(jù)緩沖池放在在代碼段的后后面,或者放放在無條件跳跳轉(zhuǎn)指令或子子程序返回指指令之后,使使得處理器不不會錯(cuò)誤的將將數(shù)據(jù)緩沖池池中的數(shù)據(jù)當(dāng)當(dāng)做指令來執(zhí)執(zhí)行。AREAExample,CODE,READONLYStartBLFunc1…Func1LDRR1,=0x800MOVPC,LRLRORGDataSPACE40ENDMAP語法格式:MAP表表達(dá)式{,基址寄存存器}用于定義一個(gè)個(gè)結(jié)構(gòu)化的內(nèi)內(nèi)存表的首地地址。MAP:“^”通常與FIELD偽指令令配合使用來來定義結(jié)構(gòu)化化的內(nèi)存表。。MAP fun;定義結(jié)構(gòu)化化內(nèi)存表,fun就是內(nèi)內(nèi)存表的首地地址MAP 0x80,R9;定義結(jié)構(gòu)化化內(nèi)存表首地地址的值為0x80+R9FILED語法格式:{標(biāo)號}FIELD表達(dá)式式定義一個(gè)結(jié)構(gòu)構(gòu)化內(nèi)存表中中的數(shù)據(jù)域。。FILED也可用“#”代替。MAP 0;定義結(jié)構(gòu)化化內(nèi)存表首地地址為0constaFIELD4;consta的長度為為4字節(jié),相相對位置為0x0constbFIELD4;constb的長度為為4字節(jié),相相對位置為0x4xFIELD8;x的長度為為8字節(jié),相相對位置為0x8yFIELD8;y的長度為為8字節(jié),相相對位置為0x10stringFIELD256;y的長度為為256字節(jié)節(jié),相對位置置為0x18MOV R9,#4096LDR R5,[R9,constb];將內(nèi)存表中中數(shù)據(jù)域constb讀讀取到R5中中匯編控制偽指指令匯編控制(AssemblyControl)偽指令用用于控制匯編編程序的執(zhí)行行流程,常用用的匯編控制制偽操作包括括以下幾條::IF、ELSE、ENDIFWHILE、、WENDIF、ELSE、ENDIF語法格式:IF 邏輯表表達(dá)式指令序列1ELSE指令序列2ENDIF示例:IFVersion=“1.0””;指令;偽指令ELSE;指令;偽指令ENDIFWHILE、、WEND語法格式:WHILE邏邏輯表達(dá)式式指令序列WEND示例:countSETA1WHILEcount<=4countSETAcount+1;codeWEND其他常常用的的偽操操作AREACODE16、、CODE32ENTRYENDEQUIMPORTGET(或或INCLUDE))AREA語法格格式::AREA段段名名屬屬性性1,,屬性性2,,………定義一一個(gè)代代碼段段或數(shù)數(shù)據(jù)段段。常用的的屬性性如下下:CODE:用于于定義義代碼碼段,,默認(rèn)認(rèn)為READONLY。。DATA:用于于定義義數(shù)據(jù)據(jù)段,,默認(rèn)認(rèn)為READWRITE。READONLY:指定定本段段為只只讀,,代碼碼段默默認(rèn)為為READONLY。READWRITE:指定定本段段為可可讀可可寫,,數(shù)據(jù)據(jù)段的的默認(rèn)認(rèn)屬性性為READWRITE。示例::AREAExample,,CODE,READONLY;codeCODE16、、CODE32語法格格式::CODE16((或CODE32))CODE16:其后后的指指令序序列為為16位的的Thumb指指令。。CODE32:其后后的指指令序序列為為32位的的ARM指指令。。示例::AREAChangeState,,CODE,READONLYCODE32;指示示下面面的指指令為為ARM指指令LDRr0,=start+1BXr0;切換換到Thumb狀態(tài)態(tài),并并跳轉(zhuǎn)轉(zhuǎn)到start處執(zhí)執(zhí)行CODE16;指示示下面面的指指令為為Thumb指指令startMOVr1,#10ENTRY語法格格式::ENTRYENTRY偽操操作用用于指指定匯匯編程程序的的入口口點(diǎn)。。在一一個(gè)源源文件件里最最多只只能有有一個(gè)個(gè)ENTRY((可以以沒有有)。。在一一個(gè)完完整的的匯編編程序序中至至少要要有一一個(gè)ENTRY(當(dāng)有多多個(gè)ENTRY時(shí),,程序序的真真正入入口點(diǎn)點(diǎn)由鏈鏈接器器指定定)。示例::AREAexample,CODE,,READONLYENTRY;應(yīng)應(yīng)用用程程序序的的入入口口點(diǎn)點(diǎn)END語法法格格式式::ENDEND偽偽指指令令用用于于通通知知編編譯譯器器已已經(jīng)經(jīng)到到了了源源程程序序的的結(jié)結(jié)尾尾。。示例例::AREAexample,,CODE,,READONLY………ENDEQU語法法格格式式::名稱稱EQU表表達(dá)達(dá)式式{,,類類型型}EQU::““*”示例例::abcdEQU2;定定義義abcd符符號號的的值值為為2abcdEQUlabel1+16;定定義義abcd符符號號的的值值((label1+16)IMPORT語法法格格式式::IMPORT標(biāo)標(biāo)號號{[WEAK]}用于于通通知知編編譯譯器器要要使使用用的的標(biāo)標(biāo)號號在在其其他他的的源源文文件件中中定定義義,,但但要要在在當(dāng)當(dāng)前前源源文文件件中中引引用用。。示例例::AREAInit,,CODE,,READONLYIMPORTMain;通通知知編編譯譯器器當(dāng)當(dāng)前前文文件件要要引引用用標(biāo)標(biāo)號號Main,,但但Main在在其其他他源源文文件件中中定定義義………ENDGET((或或INCLUDE))語法法格格式式::GET文文件件名名用于于將將一一個(gè)個(gè)源源文文件件包包含含到到當(dāng)當(dāng)前前的的源源文文件件中中,,并并將將被被包包含含的的源源文文件件在在當(dāng)當(dāng)前前位位置置進(jìn)進(jìn)行行匯匯編編處處理理。??煽梢砸允故褂糜肐NCLUDE代代替替GET。。使使用用方方法法與與C語語言言中中的的““include””相相似似。。示例例::AREAexample,,CODE,,READONLYGETfile1.s;包包含含源源文文件件file1.sGETC::\project\file2.s;包包含含源源文文件件file2.sGETC:\Programfiles\file3.s;包包含含源源文文件件file3.s5.3宏宏和和宏宏指指令令宏:在在匯匯編編程程序序中中可可以以用用偽偽指指令令MACRO、、MEND為一一個(gè)個(gè)程程序序段段定定義義一一個(gè)個(gè)名名稱稱,,在在往往后后的的程程序序中中就就可可以以通通過過這這個(gè)個(gè)名名稱稱來來使使用用它它所所代代表表的的程程序序段段。。在在源源程程序序被被匯匯編編時(shí)時(shí),,該該名名稱稱將將被被替替換換為為它它所所代代表表的的程程序序段段。。宏指指令令:在在ARM中中,,還還有有一一種種匯匯編編器器內(nèi)內(nèi)置置的的無參參數(shù)數(shù)和和標(biāo)標(biāo)號號宏,,我我們們把把其其稱稱為為宏宏指指令令。。在在匯匯編編的的時(shí)時(shí)候候,,這這些些宏宏指指令令也也是是被被替替換換成成一一條條或或兩兩條條真真正正的的ARM或或Thumb指指令令。。ADR、、ADRL、、LDRMACRO、、MEND語法法格格式式::MACRO$標(biāo)標(biāo)號號宏名名$參參數(shù)數(shù)1,,$參參數(shù)數(shù)2,,…………;;宏名名為為宏宏的的名名稱稱,,為為宏宏在在程程序序中中引引用用名名。。;$參參數(shù)數(shù)1,,$參參數(shù)數(shù)2,,…………為為宏宏中中可可以以使使用用的的參參數(shù)數(shù)。。指令令序序列列;;宏宏定定義義體體MEND規(guī)定定::$標(biāo)標(biāo)號號為為主主標(biāo)標(biāo)號號,,宏宏內(nèi)內(nèi)的的所所有有其其他他的的標(biāo)標(biāo)號號必必須須由由主主標(biāo)標(biāo)號號組組成成。。宏中中的的所所有有標(biāo)標(biāo)號號必必須須在在前前面面冠冠以以符符號號$。。宏中中的的參參數(shù)數(shù)在在匯匯編編時(shí)時(shí)被被相相應(yīng)應(yīng)的的值值替替換換。。示例例::在在ARM中中完完成成測測試試--跳跳轉(zhuǎn)轉(zhuǎn)操操作作需需要要兩兩條條指指令令,,定定義義一一條條宏宏指指令令完完成成測測試試--跳跳轉(zhuǎn)轉(zhuǎn)操操作作MACRO$labelTestAndBranch$dest,$reg,$cc$label.A1CMP$reg,#0B$cc$destMENDMACRO、、MEND;在在程程序序中中調(diào)調(diào)用用該該宏宏testTestAndBranchNonZero,r0,NE……NonZero;程程序序被被匯匯編編后后,,宏宏展展開開的的結(jié)結(jié)果果testCMPr0,#0BNENonZero……NonZeroMEXIT語法法格格式式::MEXITMEXIT用用于于從從宏宏定定義義中中跳跳轉(zhuǎn)轉(zhuǎn)出出去去。。宏指令A(yù)DRADRLLDRNOPADR--小范圍圍的地址址讀取偽偽指令語法格式式ADR{cond}register,exprcond:可可選的指令執(zhí)執(zhí)行條件register:目標(biāo)標(biāo)寄存器expr:基基于PC或寄寄存器的地址址表達(dá)式,取取值范圍:地址非字對齊齊,-255~255地址字對齊,-1020~1020將基于PC或或寄存器的地地址值讀取到到寄存器中。。ADR偽指令令被替換成一一條合適的指指令(ADD指令或SUB指令))。如果不能能用一條來實(shí)實(shí)現(xiàn)ADR偽偽指令的功能能,編譯器將將報(bào)告錯(cuò)誤。。ADR-小范范圍的地址讀讀取偽指令示例:startMOVr0,#10;PC值為當(dāng)當(dāng)前指令地址址值加8字節(jié)節(jié)ADRr4,start;本ADR偽偽指令將被編編譯器替換成成;SUBr4,pc,#0xcADRL-中中等范圍的地地址讀取偽指指令語法格式ADRL{cond}register,exprcond:可可選的指令執(zhí)執(zhí)行條件register:目標(biāo)標(biāo)寄存器expr:基基于PC或寄寄存器的地址址表達(dá)式,取取值范圍:地址非字對齊齊,-64KB~64KB地址字對齊,-256KB~256KB將基于PC或或寄存器的地地址值讀取到到寄存器中。。ADRL偽指指令被替換成成兩條合適的的指令。如果果不能用兩條條來實(shí)現(xiàn)ADRL偽指令令的功能,編編譯器將報(bào)告告錯(cuò)誤。ADRL-中中等范圍的地地址讀取偽指指令示例:startMOVr0,#10;PC值為當(dāng)當(dāng)前指令地址址值加8字節(jié)節(jié)ADRLr4,start+60000;本ADRL偽指令將被被編譯器替換換成下面兩條條指令;ADDr4,pc,#0xe800;ADDr4,r4,#0x254;60000=0xEA60LDR-大范范圍的地址讀讀取偽指令語法格式LDR{cond}register,==[expr|label-expr]cond:可可選的指令執(zhí)執(zhí)行條件register:目標(biāo)標(biāo)寄存器expr:32位常數(shù)當(dāng)expr沒沒有超過MOV或MVN指令中的地地址取值范圍圍時(shí),編譯器器用合適的MOV或MVN指令代替替該LDR偽偽指令反之,編譯器器將該常數(shù)放放在數(shù)據(jù)緩沖沖池中,同時(shí)時(shí)用一條基于于PC的LDR指令讀取取該常數(shù)。LDR偽指令令處的PC值值到數(shù)據(jù)緩沖沖池中目標(biāo)數(shù)數(shù)據(jù)所在地址址的偏移量要要小于4KB。將32位常數(shù)數(shù)或者地址值值讀取到寄存存器中。LDR-大范范圍的地址讀讀取偽指令示例1:將0xff0讀讀取到R1中中LDR R1,=0xFF0;匯編后將得得到MOVR1,#0xFF0示例2:將0xfff讀讀取到R1中中LDR R1,=0xFFF;LDRR1,[PC,OFFSET_TO_LPOOL];…;LPOOLDCD0xFFF示例3:將外外部地址ADDR1讀取取到R1中LDR R1,=ADDR1;LDRR1,[PC,OFFSET_TO_LPOOL];…;LPOOLDCDADDR1NOP-空操操作偽指令語法格式NOP5.4匯編編語言的語句句格式ARM(Thumb)匯匯編語言的語語句格式為::{標(biāo)號}{指令或偽指指令}{;注釋}標(biāo)號:從一行行的行頭開始始,不能包含含空格指令或偽指令令:指令的前前面必須有空空格或符號注釋:以“;;”開頭每一條指令的的助記符可以以全部用大寫寫、或全部用用小寫,但不允許在一條條指令中大、、小寫混用。語句之間可以以插入空行。。如果一條語句句太長,可將將該長語句分分為若干行來來書寫,在行行的末尾用““\”表示下下一行與本行行為同一條語語句。ARM匯編語語言中的符號號命名規(guī)則:符號由大小寫寫字母、數(shù)字字以及下劃線線組成符號是區(qū)分大大小寫的符號中的所有有字符都是有有意義的符號在其作用用范圍內(nèi)必須須唯一,即在在其作用范圍圍內(nèi)不可有同同名的符號程序中的符號號不能與系統(tǒng)統(tǒng)內(nèi)部變量或或者系統(tǒng)預(yù)定定義的符號同同名程序中的符號號通常不要與與指令助記符符或者偽操作作同名。當(dāng)同同名時(shí),用雙雙豎線將符號號括起來數(shù)字常量數(shù)字常量是32位的整數(shù)數(shù)無符號數(shù):0~232-1有符號數(shù)時(shí)::-231~231-1。EQU:定義數(shù)字常常量變量變量有數(shù)字變變量、邏輯變變量和字符串串變量數(shù)字變量的大大小不應(yīng)超出出數(shù)字變量所所能表示的范范圍邏輯變量只有有兩種取值情情況:真{true}或或假{false}字符串變量的的長度不應(yīng)超超出字符串變變量所能表示示的范圍GBLA、GBLL、GBLS:聲明全局變量量LCLA、LCLL、LCLS:聲明局部變量量SETA、SETL和SETS:賦值標(biāo)號表示程序中的的指令或著數(shù)數(shù)據(jù)地址的符符號。目標(biāo)地址標(biāo)號號:基于PC的標(biāo)號位于目標(biāo)指令令前或者程序序中數(shù)據(jù)定義義偽操作前的的標(biāo)號。匯編編時(shí)將被處理理成PC值加加上或減去一一個(gè)數(shù)字常量量。常用于表表示跳轉(zhuǎn)指令令的目標(biāo)地址址,或者代碼碼段中的少量量數(shù)據(jù)。數(shù)據(jù)或數(shù)據(jù)區(qū)區(qū)首地址標(biāo)號號:基于寄存存器的標(biāo)號寫在數(shù)據(jù)或數(shù)數(shù)據(jù)區(qū)定義偽偽指令前面的的標(biāo)號。這種種標(biāo)號常在寄寄存器間接尋尋址方式中作作為地址寄存存器的首地址址,在偏移量量的配合下對對數(shù)據(jù)表中的的數(shù)據(jù)進(jìn)行讀讀/寫操作。。絕對地址::32位數(shù)字字量LDRR0,=0x3FF5000target1LDRR1,0xFFSTRR1,[R0]LDRR0,=0x3FF5008LDRR1,0x01STRR1,[R0]Btarget1ARM匯編編語言中的的表達(dá)式表達(dá)式由符符號、數(shù)值值、單目或或多目操作作符以及括括號組成。。在一個(gè)表表達(dá)式內(nèi)各各種元素的的優(yōu)先級::括號內(nèi)的表表達(dá)式優(yōu)先先級最高各種操作符符有一定的的優(yōu)先級相鄰的單目目操作符的的執(zhí)行順序序?yàn)橛捎业降阶?,單目目操作符?yōu)優(yōu)先級高于于其他操作作符優(yōu)先級相同同的雙目操操作符執(zhí)行行順序?yàn)橛捎勺蟮接覕?shù)字邏輯字符串表達(dá)式常量變量運(yùn)算符括號數(shù)字表達(dá)式式整數(shù)數(shù)字量量示例:aSETA34906AddrDCD0xA10EDCD2_11001010c3SETA8_74007DCQ0x123456789abcdef數(shù)字表達(dá)式式浮點(diǎn)數(shù)字量量單精度浮點(diǎn)點(diǎn)數(shù)表示范范圍:3.4e+38~1.18e-38雙精度浮點(diǎn)點(diǎn)數(shù)表示范范圍:1.8e+308~2.23e-308示例:DCFD1E308,-4E100DCFS1.0DCFD3.725e15DCFS0x7FC00000DCFD&FFF0000000000000數(shù)字表達(dá)式式操作符NOT按位位取反:NOT:A+、-、××、/及及MOD算算術(shù)操作符符A+B,A-B,A×B,A/B,A:MOD:BROL、ROR、SHL及SHR移位位(循環(huán)移移位)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論