汇编语言程序设计20057109185371课件_第1页
汇编语言程序设计20057109185371课件_第2页
汇编语言程序设计20057109185371课件_第3页
汇编语言程序设计20057109185371课件_第4页
汇编语言程序设计20057109185371课件_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章

汇编语言程序设计7.1程序流程控制7.2数据块传送7.3定点数的基本算术运算7.4长字运算和并行运算7.5FIR滤波器的DSP实现7.6IIR数字滤波器的DSP实现7.7FFT运算的DSP实现7.1程序流程控制7.1.1程序存储器地址生成7.1.2条件操作7.1.3分支转移7.1.4调用与返回7.1.5重复操作7.1.6TMS320C54x中断系统7.1.7堆栈的使用返回首页7.1.1程序存储器地址生成程序存储器中存放指令代码、参数表和立即数。程序地址产生逻辑(PAGEN),

包括以下5个寄存器(如图7-1所示):

程序计数器(PC);重复计数器(RC);块重复计数器(BRC);块重复起始地址寄存器(RSA);块重复结束地址寄存器(REA)。7.1.2条件操作表7-1条件指令中的各种条件表7-2多条件指令中的条件组合第一组第二组A类B类A类B类C类EQOVTCCBIONEQNOVNTCNCNBIOLT

LEQ

GT

GEQ

返回本节7.1.3分支转移表7-3无条件分支转移指令指令说明周期数(非延迟/延迟)B[D]用指令中给出的地址加载PC4/2BACC[D]用指定累加器(A或B)的低16位作为地址加载PC6/4表7-4条件分支转移指令指令说明周期数

(条件满足/不满足)非延迟延迟BC[D]如果指令中的条件满足,就用指令中给出的地址加载PC5/33/3BANZ[D]如果所选择的辅助寄存器不等于0,就用指令中给出的地址加载PC(用于循环)4/22/27.1.4调用与返回表7-6无条件调用与返回指令表7-8远调用和远返回指令返回本节2.块重复操作指令块重复指令RPTB用于将一个码块重复执行N+1次,N是装入块重复计数器(BRC)的值。一个码块可以有一条或多条指令。单条重复指令执行时关闭所有可屏蔽中断,而块重复操作执行期间可以响应中断。

返回本节7.1.6TMS320C54x中断系统1.中断类型C54x支持软件中断和硬件中断。软件中断由程序指令产生(INTR、TRAP或RESET)。硬件中断由设备的一个信号产生,包括两种类型:①外部硬件中断由外部中断口的信号触发;②内部硬件中断由片内外设的信号触发。无论是硬件中断还是软件中断,都属于以下两种类型:(1)可屏蔽中断(2)非屏蔽中断表7-9C5402中断源的中断向量及硬件中断优先权2.中断标志寄存器(IFR)和中断屏蔽寄存器(IMR)中断标志寄存器(IFR)是存储器映象的CPU寄存器。如图7-2所示为C5402中断标志寄存器(IFR)结构图。中断屏蔽寄存器(IMR)也是存储器映象的CPU寄存器,用来屏蔽外部和内部的可屏蔽中断,其结构图同IFR完全一致。

3.中断响应过程(如图7-3所示)(1)接受中断请求。

(2)响应中断。(3)执行中断服务程序(ISR)。图7-3中断操作流程图中断向量号

左移两位后中断向量地址图7-4中断向量地址的产生返回本节7.1.7堆栈的使用堆栈被用于保存中断程序、调用子程序的返回地址,也用于保护和恢复用户指定的寄存器和数据,还可用于程序调用时的参数传递。返回地址是由DSP自动保存的。

用户编写的压栈指令和出栈指令将指定的内容压入和弹出堆栈,SP总是指向最后压入堆栈的数据,压栈之前SP减1,出栈之后SP加1。

7.2数据块传送C54x有10条数据传送指令,为:数据存储器数据存储器:

MVDKSmem,dmad MVKDdmad,Smem MVDDXmem,Ymem数据存储器MMR:

MVDMdmad,MMR MVMDMMR,dmad MVMMmmr,mmr返回首页程序存储器数据存储器:MVPDPmad,SmemMVDPSmem,PmadREADASmemWRITASmem1.编写汇编源程序为

.mmregs.def_c_int00.dataTBL:.word0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19.word1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1PROM: .usect"PROM",20.bssa,20.bssx,20.bssy,20DATA: .usect "DATA",20.textSTM#a,AR1;将数据存储器中的a[20]写入到程序存储器PROMLD #PROM,ASTM #19,AR3LOOPP:WRITA*AR1+ADD #1,A,ABANZ LOOPP,*AR3-LD#PROM-1,A;读程序存储器PROM中20个数据存入数据存储器DATASTM #DATA,AR1ST #19,BRCRPTBLOOP2ADD#1,A,ALOOP2:READA*AR1+;该指令为单字指令WAIT: NOPBWAIT2.建立汇编源程序点击CCSC5000图标,进入CCS环境,再点击File→New→SourceFile菜单命令,打开一个空白文档,将汇编源程序逐条输入。单击File→Save菜单命令,出现如图7-5所示的窗口,选择D:\ProgramFiles\ti\myprojcets\mymove子目录,在“文件名”一栏中输入mymove,并选择保存类型为AssemblySourceFiles(*.asm),单击“保存”按钮,以上汇编程序被存盘。3.建立链接命令文件点击File→New→SourceFile菜单命令,打开一个空白文档,逐条输入链接命令文件。mymove.obj-omymove.out-mmymove.mapMEMORY{PAGE0: RAM:origin=1000h,length=800h RAM1:origin=2000h,length=300hPAGE1: DARAM1:origin=0100h,length=100hDARAM2:origin=0200h,length=100h}SECTIONS{.data:>RAM PAGE0.text:>RAM PAGE0PROM : >RAM1PAGE0.bss :>DARAM1PAGE1DATA :>DARAM2PAGE1}点击File→Save菜单命令,如图7-5所示,选择D:\ProgramFiles\ti\myprojcets\mymove子目录,在“文件名”一栏中输入mymove,并选择保存类型为TICommandLanguageFile(*.cmd),单击“保存”按钮,以上链接命令程序被存盘。4.创建一个新工程在Project菜单中选择New项,弹出ProjectCreation(工程创建)窗口,如图7-6所示。在Project一栏键入mymove,然后单击“完成”按钮,CCS将创建一个名为mymove.pjt的工程,此文件保存了工程的设置信息及工程中的文件引用情况。图7-5保存汇编源程序图7-6工程创建窗口5.将有关文件添加到工程中从Project菜单中选取AddFilestoProject命令,选择文件mymove.asm,双击将mymove.asm添加到工程中。点击Project→AddFilestoProject菜单命令,将mymove.cmd添加到工程文件中。逐层打开如图7-7所示。双击mymove.asm打开文件,可以观察和修改mymove.asm文件的内容。

6.汇编、编译和链接产生.out文件点击Project菜单中的RebuildAll。请注意在监视窗口显示的汇编、编译和链接的相关信息。如果没有错误,将产生mymove.out文件;如果有错,在监视窗口以红色字体显示出错行,用鼠标双击该行,光标跳将至源程序相应的出错行。修改错误后,重新汇编、链接。7.加载并运行.out文件执行菜单命令File→LoadProgram,选择mymove.out并打开,将RebuildAll生成的程序加载到DSP中。CCS将自动打开一个反汇编窗口,显示加载程序的反汇编指令。点击Debug→Run菜单命令运行程序,单步执行程序则点击Debug→StepInto菜单命令,或按F8键。8.观察运行结果点击View→Memory菜单命令,将出现如图7-8所示的选项窗口,将Address改为0x0100,单击OK按钮,将在汇编窗口显示选定的数据空间的内容。当结果数据错误时,可检查源程序并进行修改。修改完毕,可重新汇编、链接,再加载运行.out文件,直到结果正确。返回本节7.3定点数的基本算术运算7.3.1加法、减法和乘法运算7.3.2定点除法运算返回首页7.3.1加法、减法和乘法运算1.定点DSP中数据表示方法定点DSP芯片的数值表示是基于2的补码表示形式。数的定标有Q表示法和S表示法,表7-10列出了16位数的16种Q表示和S表示,以及它们所能表示的十进制数范围。16位中有一个符号位、Q个小数位和15-Q个整数位来表示一个数。

表7-10Q表示、S表示及数值范围图7-9DSP定点运算中小数的表示2.16位定点加法和16位定点减法C54x中提供了多条用于加法的指令,如ADD、ADDC、ADDM和ADDS。其中,ADDS用于无符号数的加法运算,ADDC用于带进位的加法运算而ADDM专用于立即数的加法。

C54x中提供了多条用于减法的指令,如SUB、SUBB、SUBC和SUBS。其中,SUBS用于无符号数的减法运算,SUBB用于带进位的减法运算,而SUBC为条件减法指令。3.16位定点整数乘法C54x中提供了大量的乘法运算指令,其结果都是32位,放在累加器A或B中。乘数在C54x的乘法指令中很灵活,可以是T寄存器、立即数、存储单元和累加器A或B的高16位。在C54x中,一般对数据的处理都当做有符号数,如果是无符号数相乘,使用MPYU指令,这是一条专门用于无符号数乘法运算的指令,其他指令都是有符号数的乘法。

4.Q15定点小数乘法运算两个16位整数相乘,乘积总是“向左增长”,这就意味着多次相乘后乘积将会很快超出定点器件的数据范围。而且要将32位乘积保存到数据存储器,就要耗费两个机器周期以及两个字的程序和RAM单元。然而,两个Q15的小数相乘,乘积总是“向右增长”,这就意味着超出定点器件数据范围的将是不太感兴趣的部分。

5.混合表示法有些情况下,运算过程中为了既满足数值的动态范围又保证一定的精度,必须采用Q0与Q15之间的表示方法。在做加、减运算时,如果两个操作数的定标不一样,在运算前要进行小数点的调整,为保证运算精度,需要使Q值小的数调整为与另一个数的Q值一样大。返回本节7.3.2定点除法运算在一般的DSP中,没有专门的除法指令。同样,在C54x中也没有提供专门的除法指令。一般有两种方法来完成除法。一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于除以常数特别适用。另一种方法是使用条件减法SUBC指令,加上重复指令RPT#15,重复16次减法完成无符号数除法运算。两种不同情况下的除法程序。1.|被除数|<|除数|,商为小数2.|被除数|≥|除数|,商为整数返回本节7.4长字运算和并行运算7.4.1长字运算7.4.2并行运算返回首页7.4.1长字运算C54x可以利用长操作数(32位)进行长字运算。如下所示为长字指令:

DLD Lmem,dst;dst=LmemDST src,Lmem ;Lmem=srcDADD Lmem,src[,dst] ;dst=src+LmemDSUB Lmem,src[,dst];dst=src–LmemDRSUB Lmem,src[,dst];dst=Lmem-src返回本节7.4.2并行运算并行运算,就是同时利用D总线和E总线。其中,D总线用来执行加载或算术运算,E总线用来存放先前的结果。在不引起硬件资源冲突的情况下,C54x允许某些指令并行执行(即同时执行),以提高执行速度。并行指令有并行加载——存储指令、并行加载——乘法指令、并行存储——乘法指令,以及并行存储——加/减法指令,所有并行指令都是单字单周期指令。

返回本节7.5FIR滤波器的DSP实现7.5.1线性缓冲区法7.5.2循环缓冲区法7.5.3系数对称FIR滤波器的DSP实现返回首页数字滤波是DSP的最基本应用,利用MAC(乘、累加)指令和循环寻址可以方便地完成滤波运算。两种常用的数字滤波器:FIR(有限冲激响应)滤波器和IIR(无限冲激响应)滤波器的DSP实现。设FIR滤波器的系数为h(0),h(1),...,h(N-1),X(n)表示滤波器在n时刻的输入,则n时刻的输出为:

(7-1)其对应的滤波器传递函数为:如图7-10所示为横截型(又称直接型或卷积型)FIR数字滤波器的结构图。图7-10横截型FIR数字滤波器的结构图(7-2)线性缓冲区法又称延迟线法。其方法是:对于n=N的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区,存放最新的N个样本;滤波时从最老的样本开始,每读一个样本后,将此样本向下移位;读完最后一个样本后,输入最新样本至缓冲区的顶部。以上过程,可以用N=6的线性缓冲区示意图来说明,如图7-11所示

7.5.1线性缓冲区法图7-11N=6的线性缓冲区示意图返回本节7.5.2循环缓冲区法图7-12说明了使用循环寻址实现FIR滤波器的方法。对于N级FIR滤波器,在数据存储区开辟一个称为滑窗的具有N个单元的缓冲区,滑窗中存放最新的N个输入样本值。每次输入新的样本时,新的样本将改写滑窗中最老的数据,其他数据则不需要移动。图7-12FIR滤波器循环缓冲区存储器图【例7-12】用循环缓冲区和双操作数寻址方法编写实现FIR滤波的程序。1.FIR滤波器设计设计一个FIR低通滤波器,通带边界频率为1500Hz,通带波纹小于1dB;阻带边界频率为2000Hz,阻带衰减大于40dB;采样频率为8000Hz。FIR滤波器的设计可以用MATLAB窗函数法进行。2.产生滤波器输入信号的文件按照通常的程序调试方法,先用Simulator逐步调试各子程序模块,再用硬件仿真器在实际系统中与硬件仪器联调。使用CCS的Simulator进行滤波器特性测试时,需要输入时间信号x(n)。本例设计一个采样频率Fs为8000Hz,输入信号频率为1000Hz和2500Hz的合成信号,通过设计的低通滤波器将2500Hz信号滤掉,余下1000Hz信号。3.编写FIR数字滤波器的汇编源程序FIR数字滤波器汇编程序fir.asm如下:************一个FIR滤波器源程序fir.asm*****************.mmregs.globalstart.def start,_c_int00INDEX .set 1KS .set256 ;输入样本数据个数COEF_FIR .sect"COEF_FIR" ;FIR滤波器系数N .set17 ;FIR滤波器阶数.word0,158,264,-290,-1406,-951,3187,9287,12272.word9287,3187,-951,-1406,-290,264,158,0.dataINPUT .copy"firin.inc" ;输入数据在数据区0x2400OUTPUT .space 1024 ;输出数据在数据区0x2500COEFTAB .usect "FIR_COEF",NDATABUF .usect "FIR_BFR",NBOS .usect "STACK",0FhTOS .usect "STACK",1.text.asg AR0,INDEX_P.asg AR4,DATA_P ;输入数据x(n)循环缓冲区指针.asg AR5,COEF_P ;FIR系数表指针.asg AR6,INBUF_P ;模拟输入数据指针.asg AR7,OUTBUF_P;FIR滤波器输出数据指针_c_int00bstartnopNopstart: SSBx FRCT ;小数乘法编程时,设置FRCT(小数方式)位MVPD #COEF_FIR,*COEF_P+STM #INDEX,INDEX_P STM #DATABUF,DATA_P ;数据循环缓冲区清零RPTZ A,#N-1STL A,*DATA_P+ STM #(DATABUF+N-1),DATA_P;数据循环缓冲区指针指向x[n-(N-1)]STM #COEFTAB,COEF_P STM #COEFTAB,COEF_P ;将FIR系数从程序存储器移到数据存储器RPT #N-1FIR_TASK:STM #INPUT,INBUF_PSTM #OUTPUT,OUTBUF_P

STM #KS-1,BRC RPTBD LOOP-1STM #N,BK ;FIR循环缓冲区大小LD *INBUF_P+,A ;装载输入数据FIR_FILTER: ;FIR滤波运算STL A,*DATA_P+% ;用最新的样本值替代最旧的样本值RPTZ A,N-1MAC *DATA_P+0%,*COEF_P+0%,A STH A,*OUTBUF_P+LOOP:END B END.end4.编写FIR滤波器链接命令文件对应以上汇编程序的链接命令文件fir.cmd如下:fir.obj-m fir.map-o fir.outMEMORY{PAGE0: ROM1(RIX) :ORIGIN=0080H,LENGTH=100HPAGE1: INTRAM1(RW):ORIGIN=2400H,LENGTH=0200HINTRAM2(RW):ORIGIN=2600H,LENGTH=0100HINTRAM3(RW):ORIGIN=2700H,LENGTH=0100H B2B(RW) :ORIGIN=0070H,LENGTH=10H}SECTIONS{.text : {}>ROM1 PAGE0 .data: {}>INTRAM1PAGE1FIR_COEF:{}>INTRAM2PAGE1FIR_BFR:{}>INTRAM3PAGE1.stack: {}>B2B PAGE1}5.CCS集成开发环境下上机操作过程(1)在CCS上建立fir工程并运行fir.out程序。

(2)观察输入信号的波形及频谱(如图7-13~7-15所示)。(3)观察输出信号的波形及频谱(如图7-16、7-17所示)。图7-13Graph属性设置窗口图7-14输入信号的时域波形图7-15输入信号的频谱图图7-16滤波器输出信号时域波形图7-17滤波器输出信号频谱图返回本节7.5.3系数对称FIR滤波器的DSP实现1.在数据存储器中开辟两个循环缓冲区:New循环缓冲区中存放N/2=4个新数据(设N=8);Old循环缓冲区中存放4个老数据。循环缓冲区的长度为N/2。缓冲区指针AR2指向New缓冲区中最新的数据;AR3指向Old缓冲区中最老的数据,并在程序存储器中设置系数表,如图7-18所示。2.(AR2)+(AR3)→AH(累加器A的高位)(AR2)-1→AR2,(AR3)-1→AR33.将累加器B清0,重复执行以下操作N/2次(i=0,1,2,3):(AH)×系数ai+(B)→B,系数指针(PAR)加1(AR2)+(AR3)→AH,AR2和AR3减1并保存或输出结果(结果在BH中)。4.修正数据指针将AR2和AR3分别指向New缓冲区中最新的数据和Old缓冲区中最老的数据。用New缓冲区最老的数据替代Old缓冲区中最老的数据,如图7-18中箭头所示。Old缓冲区指针减1。5.输入一个新的数据替代New缓冲区中最老的数据重复执行步骤2~5。返回本节7.6IIR数字滤波器的DSP实现IIR数字滤波器的传递函数H(z)为:其对应的差分方程为:例如,对于直接形式的二阶IIR数字滤波器,其结构如图7-19所示,编程时,可以分别开辟四个缓冲区,存放输入、输出变量和滤波器的系数,如图7-20所示。(7-4)(7-3)返回首页图7-19直接形式的二阶IIR数字滤波器图7-20存放输入、输出变量和滤波器系数的缓冲区【例7-15】设计一个三阶的切比雪夫Ⅰ型带通数字滤波器,其采样频率Fs=16kHz,其通频带3.2kHz<f<4.8kHz,内损耗不大于1dB;f<2.4kHz和f>5.6kHz为阻带,其衰减大于20dB。1.IIR滤波器的设计在MATLAB中设计IIR滤波器,程序为:wp=[3.2,4.8];ws=[2.4,5.6];rp=1;rs=20[n,wn]=cheb1ord(wp/8,ws/8,rp,rs)[b,a]=cheby1(n,rp,wn)

设计结果为:N=3wn=0.40000.6000b0=0.0114747 a0=1.000000b1=0 a1=0b2=-0.034424 a2=2.13779b3=0 a3=0b4=0.034424 a4=1.76935b5=0 a5=0b6=-0.0114747 a6=0.5397582.产生滤波器输入信号的文件使用CCS的Simulator进行滤波器特性的测试时,需要输入时间信号x(n)。

#include<stdio.h>#include<math.h>voidmain(){inti;doublef[256];FILE*fp;if((fp=fopen("iirin.inc","wt"))==NULL) { printf("can'topenfile!\n"); return; }fprintf(fp,"INPUT:.sect%cINPUT%c\n",'"','"');for(i=0;i<=255;i++){ f[i]=sin(2*3.14159*i*4000/16000)+sin(2*3.14159*i*6500/16000); fprintf(fp,".word %1d\n",(long)(f[i]*32768/2)); }fclose(fp);}该程序将产生名为iirin.inc的输入信号程序,内容如下:INPUT: .sect "INPUT".word 0.word 25486.word -15136.word -314.word -11585.word 19580.word 6270.word -30006.word 16383 然后,在DSP汇编语言程序中通过.copy汇编命令将生成的数据文件iirin.inc复制到汇编程序中,作为IIR滤波器的输入数据。3.直接型IIR数字滤波器汇编源程序的编写直接型IIR数字滤波器汇编程序diir.asm如下:********直接型IIR数字滤波器通用程序**********.title"diir.asm".mmregs.global start.def start,_c_int00N .set 16 .copy "iirin.inc" ;输入信号x(n)数据table ;IIR滤波器系数.word63,0,-188,0,188,0,-63 .word0,11675,0,9663,0,2948.data

BN .usect "BN",N+1AN .usect "AN",N+1INBUF.usect "INBUF",256;输入缓冲区在数据区0x2400OUTPUT.usect"OUTPUT",256;输出缓冲区在数据区0x2600.text.asg AR0,INDEX_P.asg AR2,XN_P.asg AR3,ACOFF_P.asg AR4,YN_P.asg AR5,BCOFF_P _c_int00bstartnopnopstart: SSBX FRCTSSBX OVMSSBX SXM STM #BN+N,AR1 RPT #NMVPD #table,*AR1-;;将bi由程序区存放到数据区STM #AN+N-1,AR1RPT #N-1MVPD #table+N+1,*AR1- ;将ai由程序区存放到数据区STM #OUTPUT,AR1RPTZ A,#255STL A,*AR1+;输出数据缓冲区清零STM #INBUF,AR1RPT #255MVPD #INPUT,*AR1+ ;将输入数据由程序区

STM #OUTPUT,YN_P STM #INBUF,XN_P STM #N-1,INDEX_P STM #255,BRC RPTB LOOP-1IIR: SUBA,A STM #BN,BCOFF_P STM #AN,ACOFF_P RPT #N-1 ;计算前向通道

MAC *XN_P+,*BCOFF_P+,A MAC *XN_P,*BCOFF_P,A MAR*XN_P-0 ;将AR2指针指向x(n-N) RPT #N-1 ;计算反馈通道

MAC *YN_P+,*ACOFF_P+,A STH A,*YN_P-0 ;保存y(n)LOOP:EENDB EEND .end4.IIR滤波器链接命令文件的编写对应以上汇编程序的链接命令文件diir.cmd如下:diir.obj-odiir.out-mdiir.mapMEMORY{PAGE0:ROM:ORIGIN=0080H,LENGTH=1000HPAGE1:SPRAM: ORIGIN=0060H,LENGTH=0020HDARAM: ORIGIN=0080H,LENGTH=1380HRAM1: ORIGIN=2400H,LENGTH=0200HRAM2: ORIGIN=2600H,LENGTH=0200H}SECTIONS{.text :>ROM PAGE0.data :>DARAMPAGE1BN :>DARAMPAGE1AN :>DARAMPAGE1INBUF :>RAM1PAGE1OUTPUT :>RAM2PAGE1}返回本节7.7FFT运算的DSP实现7.7.1基二实数FFT运算的算法7.7.2FFT运算模拟信号的产生及输入7.7.3实序列FFT汇编源程序及链接命令文件7.7.4观察信号时域波形及其频谱返回首页7.7.1基二实数FFT运算的算法该算法主要分为以下四步。第一步,输入数据的组合和位倒序把输入序列作位倒序是为了在整个运算最后的输出中得到的序列是自然顺序。如图7-21所示。第二步,N点复数FFT在DATA数据处理缓冲器里进行N点复数FFT运算。如图7-22所示。第三步,分离复数FFT的输出为奇部分和偶部分分离FFT输出为RP、RM、IP和IM四个序列,即偶实数、奇实数、偶虚数和奇虚数四部分。第四步,产生2N点的复数FFT输出序列产生2N=256个点的复数输出,它与原始的256个点的实输入序列的DFT一致。如图7-24所示。返回本节7.7.2FFT运算模拟信号的产生及输入产生模拟输入信号可以有两种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论