完全手册 51单片机c语言开发详解之第3章 at89s51单片机的指令系统__第1页
完全手册 51单片机c语言开发详解之第3章 at89s51单片机的指令系统__第2页
完全手册 51单片机c语言开发详解之第3章 at89s51单片机的指令系统__第3页
完全手册 51单片机c语言开发详解之第3章 at89s51单片机的指令系统__第4页
完全手册 51单片机c语言开发详解之第3章 at89s51单片机的指令系统__第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

第3章 AT89S51单片机的指令系统,在前面章节中介绍了单片机的基础知识和AT89S51单片机的主要结构,本章主要介绍AT89S51单片机的指令系统。,3.1 指令系统概述,单片机的指令系统是一套控制单片机执行操作的编码,通常称为机器语言,机器语言指令是单片机唯一能够识别和执行的指令。为了容易理解和编程,通常使用汇编语言指令(符号指令)和高级语言(用自然语言描述)来描述计算机的指令系统。汇编指令需通过汇编程序或人工方法汇编成机器能够识别和执行的机器语言指令,高级语言需要经过编译或解释成机器能识别和执行的机器语言指令。本章采用Intel公司的标准格式汇编指令来分析AT89S51指令系统的功能和使用方法。,3.1.1 指令格式,汇编语言指令是能汇编成机器语言代码的指令。AT89S51的汇编指令格式兼容MCS-51,其汇编语言指令的格式如下。标号:操作码【操作数1】,【操作数2】,【操作数3】;注释整个语句必须在一行内写完,分为四个部分。(1)第1部分标号,可以省略,它是用户定义的符号,标号实际上是符号地址,标号值代表这条指令在程序存储器中的存放地址。标号可以从字母开始,后跟18个英文字母或数字,并以冒号“:”结尾。,3.1.1 指令格式,(2)第2部分第二部分为指令操作,由25个英文字符组成,根据不用的指令而不同,它反映了指令的功能,不同功能的指令,可以查阅AT89S51的汇编手册。(3)第3部分第三部分为操作数,根据不同的指令,可以有1个、2个、3个操作数,或根本没有操作数。它与操作助记符之间至少有一个空格,可以由多个空格,操作数之间用逗号“,”分开。它反映的是指令的对象。(4)第4部分第四部分为注释,注释也可以省略,它以分号“;”开始,是用户对该条指令或程序的说明,注释必须在一行之内写完,换行时需另外以分号“;”开始,注释内容可以为任何字符。,3.1.2 AT89S51的伪汇编指令,汇编语言除了定义了汇编指令外,还定义了一些汇编伪指令,以支持汇编的运行。伪指令是汇编时不产生机器语言代码的指令,是CPU不能执行的指令,仅提供汇编用的某些控制信息。AT89S51汇编语言常用的伪指令有如下几条。(1)ORG定位伪指令格式:ORG mm一般是16位二进制数,m指出在该指令后的(伪)指令的汇编地址,即生成的机器指令的起始存储器地址。它必须放在每段源程序或数据段的开始行,在一个汇编语言的源程序中允许存在多条定位伪指令,但其中每一个m值都应和前面生成的机器指令存放地址不重叠。,3.2 AT89S51单片机的寻址方式,所谓寻址方式就是如何寻找存放操作数的空间地址,并把操作数提取出来的方法,它是单片机的重要性能指标之一,也是汇编语言程序设计的最基本的内容之一。在汇编程序设计中,数据的存放、传送、运算都要通过指令来完成,编程必须自始至终都十分清楚操作数的位置,以便将它们传送到适当的空间去操作,这些都要针对系统的硬件环境编程。因此,如何寻找存放操作数的空间位置和提取操作数就十分重要。MCS-51单片机有8中寻址方式:寄存器寻址、直接寻址、立即寻址、寄存器间接寻址、基寄存器加变址寄存器间接寻址、相对寻址、位寻址和页面寻址,下面作详细讲解。,3.2.1 立即寻址,立即寻址方式中操作数包含在指令字节中,操作码后面紧跟的是1B或2B操作数(称为立即数),即操作数以指令字节的形式存放于程序存储器中,在编写成程序时用“#”号表示,以区别于直接地址。例如下面的代码。MOVA, #5AH;5AH AMOVDPTR, #2000H;2000H DPTR,3.2.2 直接寻址,直接寻址方式在指令中直接给出操作数所在存储单元的地址,该地址指出了参与运算或传送的数据所在的字节单元或位的地址。直接寻址方式访问以下3种存储空间:(1)特殊功能寄存器(特殊功能寄存器只能用直接寻址方式访问,即可以用它们的地址,也可以用它们的名字);(2)内部数据存储器的低128B(对于8032系列芯片,其内部数据存储器高128B(80H0FFH)不能用直接寻址方式访问);,3.2.2 直接寻址,(3)位地址空间。例如下面的代码。MOVA, 5AH;(5AH) A是把片内RAM中的5AH这个地址单元的内容送入累加器A。MOVA, P1 ;(P1) A是把SFR中P1口的内容送入累加器A,它也可以写成:MOVA, 90H其中90H就是P1口的地址。直接寻址的地址需占1个字节,所以一条直接寻址方式的指令至少需要占内存两个单元。,3.2.3 寄存器寻址,寄存器寻址就是由指令指出某一个寄存器的内容为操作数,对所选的工作寄存器组R0R7进行操作,累加器ACC、B寄存器、数据指针DPTR和进位C(布尔处理机的累加器C)也可用寄存器寻址的方式进行访问,只是它们的寻址具体寄存器名会隐含在操作码中。例如下面的代码。MOVA, R0;(R0)AMOVP1, A;(A) P1口,3.2.4 寄存器间接寻址,操作数的地址事先存放在某个工作寄存器中,寄存器间接寻址方式是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。AT89S51单片机规定R0和R1为间接寻址寄存器即地址指针(对堆栈操作指令用堆栈指针SP),它可寻址内部RAM低128B地址单元的内容。寄存器间接寻址方式也可适用于访问外部扩展的数据存储器,用R0、R1或DPTR作为数据指针,当用R0、R1作为数据指针访问片外RAM时又称为页面寻址。寄存器间接寻址用符号表示。例如下面的代码。MOVA, R0;(R0) A指令中所规定的工作寄存器R0的内容为地址指针,将该地址指针单元的内容送给累加器A。,3.2.5 相对寻址,相对寻址方式是以当前的PC值为基准,加上指令中给定的偏移量rel,所得的结果作为转移地址。一般将相对转移指令操作码所在的地址称为源地址,转移后的地址称为目的地址,则有:目的地址=源地址+相对转移指令字节数+relAT89S51单片机指令中相对转移指令字节数既有2个字节的,也有3个字节的,偏移量为有符号数,其取值范围为-128B+127B,在程序中一般以补码表示。,3.2.6 基址加变址寻址,基址寄存器加变址寄存器间接寻址的寻址方式是以16位的PC或DPTR作为寄存器,以8位的累加器A作为变址寄存器,基寄存器和变址寄存器的内容相加形成新的16位的地址,该地址为操作数的地址。在MCS-51单片机中,用变址寻址方式只能访问程序存储器。访问时只能从ROM中读取数据而不能写入数据。故这种寻址方式多用于查表操作。例如下面的代码。MOVCA, A+DPTR表示基寄存器DPTR的内容与变址寄存器累加器A的内容相加形成新的16位地址,该地址单元的内容送累加器A。,3.2.7 位寻址,在计算机中,操作数不仅可以按字节为单位进行存取和操作,而且也可以按8位二进制数种的某一位为单位进行存取和操作。位寻址方式是其操作数是8位二进制中的某一位。在指令中给出的是位地址,即给出片内RAM某一单元中的一位。位地址在指令中用bit表示。AT89S51单片机片内RAM有两个区域可以位寻址,其一是20H2FH的16个单元的128位;其二是字节地址为8的倍数的特殊功能寄存器。,3.2.7 位寻址,AT89S51单片机中位寻址常用以下两种方式表示。(1)直接使用位地址。对于20H2FH的16个单元共128位的位地址一般采用直接使用位地址的方式,如位地址08H表示21H单元的0位。(2)对于特殊功能寄存器,还可以直接用寄存器名字加位数表示,如PSW.3(或位地址0D3H)。例如下面的代码。MOVC, 01H;01H为位地址,3.2.8 页面寻址,用寄存器间接寻址方式访问外部扩展的数据存储器,当用R0、R1作为地址指针访问片外RAM时的寻址方式称为页面寻址。页面地址由P2口的内容决定,页面内的地址由R0或R1的内容决定。例如下面的代码。MOVP2, #0A0HMOVR0, #01HMOVA, #10HMOVRO, A表示将累加器A中的数据10H传送到页面为A0H,页内地址为01H的外部数据存储器地址单元,即实际为传送到0A001H地址单元。,3.2.9 寻址方式与存储器的对应,虽然AT89S51单片机的寻址方式有很多种,但指令对哪一个存储器空间进行操作是由指令的操作码和寻址方式确定的。一般来说,有以下几点。程序存储器:只能采用立即寻址和基寄存器加变址寄存器间接寻址的寻址方式;特殊功能寄存器空间:只能采用直接寻址方式,不能采用寄存器间接寻址方式;内部数据存储器高128B:只能采用寄存器间接寻址方式,不能采用直接寻址方式;内部数据存储器低128B:既能采用寄存器间接寻址方式,又能采用直接寻址方式;外部扩展的数据存储器:只能采用MOVX指令访问。,3.3 AT89S51单片机的数据传送指令,AT89S51单片机指令系统共有42种操作助记符来描述33种操作功能,由111条指令组成。其中单字节指令49条,双字节指令45条,三字节指令17条,下面分别介绍。CPU在进行算术和逻辑操作时,绝大多数指令都有操作数,所以数的传送是一种最基本、最主要的操作。在通常的应用程序中,传送指令在程序中占着极大的比例,数据传送是否灵活、迅速,对整个程序的编写和执行都起着很大的作用。,3.3.1 以累加器A为目的操作数的指令, MOVA, Rn; 寄存器寻址,(Rn) A, n=07 MOVA, direct; 直接寻址,(direct) A MOVA,Ri; 间接寻址,(Ri) A,i=0或1 MOVA,#data; 立即寻址,data A这组指令的功能是把源操作数的内容送到累加器A,源操作数的内容不发生改变。,3.3.2 以Rn为目的操作数的指令, MOVRn, A; 寄存器寻址,(A)Rn MOVRn, direct; 直接寻址,(direct) Rn MOVRn,#data; 立即寻址,data Rn这组指令的功能是把源操作数的内容送到当前工作寄存器组R0R1中的某一个,源操作数的内容不发生改变。,3.3.3 以直接地址为目的操作数的指令, MOVdirect, A; 寄存器寻址,(A) (direct) MOVdirect, Rn; 直接寻址,(Rn) (direct) MOVdirect1,direct2; 直接寻址,(direct2) (direct1) MOVdirect,Ri; 寄存器间接寻址,(Ri) (direct) , i = 0 1 MOVdirect,#data; 立即寻址,data (direct)这组指令的功能是把源操作数的内容送到直接地址指出的存储单元。,3.3.4 以间接地址为目的操作数的指令, MOVRi, A; 寄存器寻址,(A)(Ri), i = 0 1 MOVRi, direct; 直接寻址,(direct)(Ri) , i = 0 1 MOVRi,#data; 立即寻址,data (Ri) , i = 0 1这组指令的功能是把源操作数的内容送到以R0或R1内容为地址的内部RAM存储单元。,3.3.5 16位数据传送的指令,MOVDPTR,#data16; 立即寻址,data16DPTR或dataHDPH,dataLDPL这条指令的功能是把16位立即数传送到数据指针DPTR,16位数据的高8位送入DPH,低8位送入DPL。,3.3.6 查表指令, MOVC A, A+PC; 基寄存器加变址寄存器间接寻址,(A)+(PC)A MOVC A, A+DPTR; 基寄存器加变址寄存器间接寻址,(A)+(DPTR)A这组指令的功能是以基寄存器(PC或DPTR)的内容与变址寄存器A的内容作为无符号数相加,组成新的16位地址,该地址单元的内容送累加器A。这两条指令专门用于当数据放在程序存储器中时来查数据表。这里应特别注意PC总是指向下一条指令的地址。,3.3.7 累加器A与片外RAM数据传送指令, MOVXA, Ri; 页面寻址,(P2)(Ri) A , i = 0 1 MOVXA, DPTR; 寄存器间接寻址,(DPTR) A MOVXRi, A; 页面寻址,(A)P2(Ri) , i = 0 1 MOVXDPTR,A; 寄存器间接寻址,A (DPTR)这组指令的功能是将累加器A和外部扩展的RAM/IO口之间的数据传送。由于外部RAM/IO口是统一编址的,共占一个64KB的空间,所以从指令本身看不出是对RAM还是对I/O口操作,而只能由硬件的地址分配情况来确定。,3.3.8 堆栈操作指令, PUSHdirect; 直接寻址,(SP)+ 1 SP,(direct)(SP)这条指令的功能是首先将SP的内容自动加1,然后把直接地址指出的内容传送到SP寻址的内部RAM单元中。 POPdirect; 直接寻址,(SP) direct,(SP) 1SP这条指令的功能是将SP寻址的内部RAM单元的内容送到直接地址所对应的内部RAM字节单元中,然后SP的内容减1。,3.3.9 交换指令, XCHA, Rn; 寄存器寻址,(A)(Rn) XCHA, direct; 直接寻址,(A) (direct) XCHA, Ri; 寄存器间接寻址,(A)(Ri) , i = 0 1 XCHDA, Ri; 寄存器间接寻址,(A)03 (Ri), i = 0 1 SWAPA; 寄存器寻址,(A)03 (A)47数据传送类指令一般是把源操作数的内容传到目的操作数,指令执行后,一般是源操作数的内容不变。,3.4 AT89S51单片机的算术操作指令,MCS-51算术运算类指令包括加、减、乘、除基本四则运算和增量(加1)、减量(减1)运算,执行结果将使进位(Cy)、辅助进位(AC)、溢出(OV)标志置位或复位。但加1和减1指令不影响以上标志。算术/逻辑运算(ALU)部件仅执行无符号二进制整数的算术运算。借助溢出标志,可对带符号数进行2的补码运算;借助进位标志,可进行多精度加、减运算,也可以对压缩的BCD码数进行运算。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV等8中操作助记符。,3.4.1 不带进位的加法指令, ADDA, Rn; (A) + (Rn) A ADDA, direct; (A) + (direct) A ADDA, Ri; (A) + (Ri) A ADDA, #data; (A) + data A这组指令的功能是把累加器A的内容与工作寄存器的内容或内部RAM单元的内容或立即数的8位无符号二进制数相加,其和的结果存放在累加器A中。,3.4.2 带进位的加法指令, ADDCA, Rn; (A) + (Rn) + Cy A ADDCA, direct; (A) + (direct) + Cy A ADDCA, Ri; (A) + (Ri) + Cy A ADDCA, #data; (A) + data + Cy A这组指令的功能是把累加器A的内容,与工作寄存器的内容,或内部RAM单元的内容,或立即数的8位无符号二进制数,和进位标志一起相加,其和的结果存放在累加器A中。,3.4.3 带进位的减法指令, SUBBA, Rn; (A) - (Rn) - Cy A SUBBA, direct; (A) - (direct) - Cy A SUBB A, Ri; (A) - (Ri) - Cy A SUBBA, #data; (A) - data - Cy A这组指令的功能是把累加器A的内容,减去工作寄存器的内容,或减去内部RAM单元的内容,或减去立即数的8位无符号二进制数,并减去进位标志,其结果存放到累加器A中。如果位7需借位,则置位进位标志Cy,否则清Cy;如果位3需借位,则置位半进位标志AC,否则清AC;如果位6需借位而位7不需借位,或者位7需借位而位6不需借位,则置位溢出标志OV,否则清OV。,3.4.4 增量(加1)指令, INCA; (A) + 1 A INCRn; (Rn) + 1 Rn INCRi; (Ri) + 1 (Ri) INCdirect; (direct) + 1 direct INCDPTR; (DPTR) + 1DPTR这组增量指令的功能是将操作数所指定单元的内容加1,除对累加器A操作影响P标志位外,此操作不影响其他标志。,3.4.5 减量(减1)指令, DECA; (A) - 1 A DECRn; (Rn) - 1 Rn DECRi; (Ri) - 1 (Ri) DECdirect; (direct) - 1 direct这组增量指令的功能是将操作数所指定单元的内容减1,除对累加器A操作影响P标志位外,此操作不影响其他标志。,3.4.6 十进制调整指令,DAA这条指令跟在加法指令(ADD、ADDC)指令后,对累加器A中8位结果进行调整,使它调整为压缩的BCD码的数,以完成十进制加法运算功能。两个压缩的BCD码按二进制数相加之后,必须经本指令调整后才能得到压缩的BCD码的和数。 若A309或AC=1,则(A) + 06H A 若A749或Cy=1,则(A) + 60H A,3.4.7 乘法指令,MULA B这条指令的功能是把累加器A和寄存器B中的两个8位无符号数相乘,其16位积的低8位字节放在累加器A中,高8位字节放在寄存器B中。如果积大于255(0FFH),则置位溢出标志OV,进位标志Cy总是清0。,3.4.8 除法指令,DIVA B这条指令的功能是把累加器A中的8位无符号数,除以寄存器B中的8位无符号数,所得商的整数部分存放在累加器A中,余数保留寄存器B中。如果原来B中的内容为0,即除数为0,则结果A和B中内容不定,此时置位溢出标志OV,进位标志Cy总是清0。,3.5 AT89S51单片机的逻辑与移位指令,MCS-51逻辑运算类指令包括清除、求反、移位及与、或、异或等操作。这类指令有CLR、CPL、RL、RLC、RR、RRC、ANL、ORL、XRL等9中操作助记符。,3.5.1 对累加器A的单操作数的逻辑操作指令,1)CLRA; (A)=0这条指令的功能是将累加器A的内容清零,即(A)=0,不影响Cy标志、AC标志和OV标志,只影响P标志。2)CPLA; (A) A这条指令的功能是将累加器A的内容逐位逻辑取反,不影响标志位。3)RLA这条指令的功能是将累加器A的内容向左循环移位1位,不影响标志位。,3.5.1 对累加器A的单操作数的逻辑操作指令,4)RRA这条指令的功能是将累加器A的内容向右循环移位1位,不影响标志位。5)RLCA这条指令的功能是将累加器A的内容和进位标志位Cy一起向左循环移位1位,不影响AC标志、OV标志。6)RRCA这条指令的功能是将累加器A的内容和进位标志位Cy一起向右循环移位1位,不影响AC标志、OV标志。,3.5.2 两个操作数的逻辑操作指令,(1)逻辑与操作指令 ANLA, Rn; (A)(Rn)A ANLA, direct; (A)(direct)A ANLA, #data; (A)dataA ANLA, Ri; (A)(Ri) A ANLdirect, A; (direct)(A) direct ANLdirect, #data; (direct)data direct这组指令的前4条指令是将累加器A的内容,与第2操作数所指出的内容,按位进行逻辑与操作,结果存放在A中。后2条指令是将直接地址单元中的内容,与第2操作数所指出的内容按位进行逻辑与操作,结果存放在直接地址单元中。,3.5.2 两个操作数的逻辑操作指令,(2)逻辑或操作指令 ORLA, Rn; (A)(Rn)A ORLA, direct; (A)(direct)A ORLA, #data; (A)dataA ORLA, Ri; (A)(Ri) A ORLdirect, A; (direct)(A) direct ORLdirect, #data; (direct)data direct这组指令的前4条指令是将累加器A的内容,与第2操作数所指出的内容按位进行逻辑或操作,结果存放在A中。后2条指令是将直接地址单元中的内容,与第2操作数所指出的内容按位进行逻辑或操作,结果存放在直接地址单元中。,3.5.2 两个操作数的逻辑操作指令,(3)逻辑异或操作指令 XRLA, Rn; (A)(Rn)A XRLA, direct; (A)(direct)A XRLA, #data; (A)dataA XRLA, Ri; (A)(Ri) A XRLdirect, A; (direct)(A) direct XRLdirect, #data; (direct)data direct这组指令的前4条指令是将累加器A的内容,与第2操作数所指出的内容,按位进行逻辑异或操作,结果存放在A中。后2条指令是将直接地址单元中的内容,与第2操作数所指出的内容,按位进行逻辑异或操作,结果存放在直接地址单元中。,3.6 AT89S51单片机的程序控制流指令,计算机在运行过程中,有时因为操作的需要或因程序较复杂,程序指令往往不能按顺序逐条运行,需要改变程序运行方向,即将程序跳转到某个指定的地址处再执行。某些指令具有修改PC的功能(如位操作指令JC、JNC、JB、JNB、JBC等),因为PC的内容总是指向将要执行的下一条指令地址,所以计算机执行这一类指令就能控制程序转移到新的PC地址去执行。除部分位操作指令能控制转移外,MCS-51还有丰富的控制转移类指令,包括无条件转移、条件转移和调用和返回指令。这类指令有AJMP、LJMP、SJMP、JMP、JZ、JNZ、CJNZ、DJNZ、ACALL、LCALL、RET、RETI、NOP等13中操作助记符。,3.6.1 无条件转移指令,(1)绝对跳转指令AJMPaddr11; (PC)+2PC, addr100PC100这是2KB范围内的无条件转移指令,是绝对跳转。跳转的目的地址必须与AJMP的下一条指令的第1个字节在同一2KB寻址范围内,这是因为跳转的目的地址与AJMP的下一条指令的第1个字节的高5位addr1511相同。这条指令是为与MCS-48兼容而保留的指令,现在一般很少使用。(2)相对跳转指令SJMPrel; (PC)+2rel PC这条指令执行的时候先将PC的内容加2,再加相对偏移量rel,计算出跳转目的地址。rel是一个带符号的字节数,在程序中用补码表示,其值范围为-128B+127B,当rel为正数时表示正向跳转,为负数时表示负向跳转。,3.6.1 无条件转移指令,(3)长跳转指令LJMPaddr16; addr16 PC这条指令执行时把16位操作数的高低8位分别装入PC的PCH和PCL,无条件地转向指定地址。跳转的目的地址可以在64KB程序存储器地址空间的任何地方,不影响任何标志位。(4)间接跳转指令JMPA+DPTR这条指令的功能是把累加器A中的8位无符号数与数据指针DPTR中的16位地址相加,相加形成的16位新地址送入PC。指令执行过程不改变累加器和数据指针的内容,也不影响标志位。,3.6.2 条件转移指令,(1)判零跳转指令 JZrel; 若(A)=0,则PC+2+relPC,若(A)0,则PC+2PC JNZrel; 若(A)0,则PC+2+relPC,若(A)=0,则PC+2PC这组指令的功能是若满足条件则转移到目的地址去执行,不满足条件则顺序执行下一条指令。目的地址在以下一条指令的起始地址为中心的256B范围内(-128B+127B)。,3.6.2 条件转移指令,(2)比较不相等跳转指令CJNEA, direct, rel指令执行的过程如下。(A)=(direct),则(PC)+3PC, Cy=0(A)(direct),则(PC)+3+relPC, Cy=0(A)(direct),则(PC)+3+relPC, Cy=1,3.6.2 条件转移指令,(3)减1不为0跳转指令DJNZRn, rel指令执行过程如下。(PC)+ 2PC(Rn)- 1Rn 若(Rn)0,则(PC)+ rel PC,若(Rn)=0,则循环结束,程序往下执行,3.6.3 调用和返回指令,(1)短调用指令ACALLaddr11指令执行过程如下。(PC)+2PC(SP)+1SP,(PC07)(SP),PC低8位压栈(SP)+1 SP,(PC815)(SP),PC高8位压栈 addr015 PC010,3.6.3 调用和返回指令,(2)长调用指令LCALLaddr16指令执行过程如下。(PC)+3PC(SP)+1SP,(PC07)(SP),PC低8位压栈 (SP)+1SP,(PC815)(SP),PC高8位压栈 addr015 PC,3.6.3 调用和返回指令,(3)从子程序返回指令RET指令的执行过程如下。(SP) PC815(SP)-1 SP(SP) PC07(SP)-1 SP,3.6.3 调用和返回指令,(4)从中断返回指令RETI指令执行的过程如下。(SP) PC815(SP)-1 SP(SP) PC07(SP)-1 SP,3.6.4 空操作指令,NOP; (PC)+1 PC该指令除了完成PC内容加1外,不影响其他寄存器和标志位。该指令常用来产生一个机器周期的延时。,3.7 AT89S51单片机的位操作指令,

温馨提示

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

评论

0/150

提交评论