项目9 单片机汇编语言_第1页
项目9 单片机汇编语言_第2页
项目9 单片机汇编语言_第3页
项目9 单片机汇编语言_第4页
项目9 单片机汇编语言_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

项目9单片机汇编语言项目导读:

本项目是对单片机汇编语言的介绍,项目将从汇编指令格式及标识、指令的寻址方式、指令系统、常用伪指令、数据传送等知识入手,先解读其语义,再分析简单代码,最后设计简单的汇编程序。任务9.1汇编程序代码分析任务描述:

本任务主要介绍单片机汇编语言的知识,包括汇编指令格式及标识、寻址方式、指令系统等。在此基础上,重点介绍指令功能及应用,分析给定的汇编程序代码,阐述其具体功能及软硬件关系,帮助读者为后续编程打下基础。

用汇编语言开发单片机应用系统具有显著优势,但汇编语言可读性差的问题限制了其使用范围。9.1.1汇编指令格式及标识

指令是使计算机完成基本操作的命令。

计算机工作时通过执行程序来解决问题,而程序是由一条条指令按一定的顺序组成的,计算机内部只能直接识别二进制代码指令。

以二进制代码指令形成的计算机语言,称为机器语言。机器语言不便被人们识别、记忆、理解和使用。

为便于人们识别、记忆、理解和使用,给每条机器语言指令赋一个助记符号,这就形成了汇编语言。

汇编语言指令是机器语言指令的符号化,它和机器语言指令一一对应。

机器语言和汇编语言与计算机硬件密切相关,不同类型计算机的机器语言和汇编语言指令不一样。

一种计算机能够执行的全部指令的集合,称为这种计算机的指令系统。

单片机的指令系统与微型计算机的指令系统不同。

MCS-51系列单片机指令系统共有111条指令、42种指令助记符,其中有49条单字节指令、45条双字节指令和17条三字节指令;有64条为单机器周期指令,45条为双机器周期指令,只有乘、除法两条指令为四机器周期指令,在存储空间的利用和运算速度等方面的表现都很不错。MCS-51系列单片机指令系统功能强、指令短、执行快。从功能上可分成五大类:

数据传送指令算术运算指令逻辑操作指令控制转移指令位操作指令1.指令格式

不同的指令完成不同的操作,实现不同的功能,具体格式也不一样。但从总体上来说,每条指令通常由操作码和操作数两部分组成。

操作码表示计算机执行该指令将进行何种操作,操作数表示参加操作的数或操作数所在的地址。

MCS-51系列单片机汇编语言指令基本格式如下。[标号:]操作码助记符[目的操作数][源操作数][;注释]

操作数用于给指令的操作提供数据、数据的地址或指令的地址。

MCS-51系列单片机指令系统的指令按操作数的多少可分为无操作数、单操作数、双操作数和三操作数4种。

无操作数指令是指指令中不需要操作数或操作数采用隐含形式指明。

单操作数指令是指指令中只需提供一个操作数或操作数地址。

双操作数指令是指指令中需要两个操作数,通常第一个操作数为目的操作数(接收数据),第二个操作数为源操作数(提供数据)。

三操作数指令MCS-51系列单片机中只有一条,即CJNE比较转移指令。

标号是该指令的符号地址,后面需带冒号(:)。它主要为转移指令提供转移的目的地址。

注释是对该指令的解释,前面需带分号(;)。它们是编程者根据需要加上去的,用于对指令进行说明。2.指令中用到的标识符

为便于读者学习,在这里先对指令中用到的一些符号的约定意义加以说明。

(1)Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取0或1,表示R0或R1;n取0~7,表示R0~R7。

(2)#data:表示包含在指令中的8位立即数。

(3)#data16:表示包含在指令中的16位立即数。

(4)rel:以补码形式表示的8位相对偏移量,范围为−128~127,主要用在相对寻址的指令中。

2.指令中用到的标识符

(5)addr16和addr11:分别表示16位直接地址和11位直接地址。

(6)direct:表示直接寻址的地址。

(7)bit:表示可按位寻址的直接位地址。

(8)(X):表示X单元中的内容。

(9)/和→符号:/表示对该位操作数取反,但不影响该位的原值;→表示操作流程,将箭尾一方的内容送入箭头所指一方的单元中去。9.1.2指令的寻址方式

所谓寻址方式就是指操作数或操作数的地址的寻找方式。

对于两操作数指令,源操作数和目的操作数都存在寻址方式。

若不特别声明,后面提到的寻址方式均指源操作数的寻址方式。9.1.2指令的寻址方式

单片机的寻址方式按操作数的类型可分为数的寻址和指令寻址。

数的寻址根据数的种类有常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址、寄存器间接寻址、变址寻址)和位数据寻址(位寻址)。

指令寻址得到转移的目的地址,根据目的地址的提供方式有绝对寻址和相对寻址。

不同的寻址方式格式不同,处理的数据不一样。1.常数寻址(立即寻址)

操作数是常数,使用时直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在ROM中,可以立即得到并执行,不需要经过别的途径去寻找。

常数又称为立即数,故又称常数寻址为立即寻址。

在51单片机汇编指令中,立即数以#作前缀。在程序中通常用于给寄存器或存储器单元赋初值,例如:MOVA,#20H其功能是把立即数20H送给累加器A,其中源操作数20H就是立即数。指令执行后累加器A中的内容为20H。2.寄存器数寻址(寄存器寻址)

操作数在寄存器中,使用时在指令中直接提供寄存器的名称,这种寻址方式称为寄存器寻址。

在MCS-51系列单片机中,这种寻址方式针对的只能是R0~R7这8个通用寄存器和部分特殊功能寄存器(如累加器A、B寄存器、数据指针寄存器DPTR等)中的数据,其他特殊功能寄存器中的内容的寻址方式不属于寄存器寻址。2.寄存器数寻址(寄存器寻址)

在汇编指令中,寄存器寻址在指令中直接提供寄存器的名称,如R0、R1、A、DPTR等,例如:MOVA,R0其功能是把R0寄存器中的数送给累加器A。

在指令中,源操作数R0为寄存器寻址,传送的对象为R0中的数据。如指令执行前R0中的内容为20H,则指令执行后累加器A中的内容为20H。3.存储器数寻址

存储器数寻址针对的数据存放在存储器单元中,对存储器单元的内容通过提供存储器单元地址寻址。根据存储器单元地址的提供方式,存储器数的寻址方式有直接寻址、寄存器间接寻址、变址寻址。(1)直接寻址。

直接寻址是在指令中直接提供存储器单元的地址。MCS-51系列单片机中,这种寻址方式针对的是片内RAM和特殊功能寄存器。

在汇编指令中,直接以地址数的形式提供存储器单元的地址,例如:MOVA,20H其功能是把片内RAM20H单元的内容送给累加器A。

如果指令执行前片内RAM20H单元的内容为30H,则指令执行后累加器A的内容为30H。指令中20H是地址数,它是片内RAM单元的地址。

在MCS-51中,数据前面不加#是指存储器单元地址而不是常数,常数前面要加#。

对于特殊功能寄存器,在指令中往往通过特殊功能寄存器的名称使用,而特殊功能寄存器名称实际上是特殊功能寄存器单元的符号地址,因此它们是直接寻址。

例如:MOVA,P0

其功能是把P0口的内容送给累加器A。P0是特殊功能寄存器P0口的符号地址,在该指令被翻译成机器码时,P0被转换成直接地址80H。(2)寄存器间接寻址。

寄存器间接寻址是指存储器单元的地址存放在寄存器中,在指令中通过提供寄存器来使用对应的存储单元,形式为“@寄存器名”。例如:MOVA,@R1

该指令的功能是将以工作寄存器R1中的内容为地址的片内RAM单元的数据传送到累加器A中去。

指令的源操作数是寄存器间接寻址。若R1中的内容为80H,片内RAM80H地址单元的内容为20H,则执行该指令后,累加器A的内容为20H。寄存器间接寻址示意如图所示。

在MCS-51系列单片机中,寄存器间接寻址用到的寄存器只能是通用寄存器R0、R1和数据指针寄存器DPTR,它能访问片内RAM和片外RAM中的数据。

对于片内RAM,只能用R0和R1做指针间接访问;对于片外RAM,可以用DPTR做指针间接访问整个64KB空间,也可以用R0或R1做指针间接访问低端的256字节单元。用R0和R1既可对片内RAM间接访问,也可对片外RAM低端256字节间接访问。片内RAM访问用MOV指令,片外RAM访问用MOVX指令。(3)变址寻址。

变址寻址是指操作数的地址由基址寄存器中存放的地址加上变址寄存器中存放的地址得到。

在MCS-51系列单片机中,基址寄存器可以是数据指针寄存器DPTR或程序计数器PC,变址寄存器只能是累加器A,两者的内容相加得到存储单元的地址,所访问的存储器为ROM。

(3)变址寻址。

变址寻址方式通常用于访问ROM中的表格型数据,表首单元的地址为基址,放于基址寄存器,访问的单元相对于表首的位移量为变址,放于变址寄存器,通过变址寻址可得到ROM相应单元的数据。

例如:MOVCA,@A+DPTR

其功能是将数据指针寄存器DPTR中的内容和累加器A中的内容相加作为ROM的地址,从对应的单元中取出内容送到累加器A中。(3)变址寻址。

指令中,源操作数的寻址方式为变址寻址,设指令执行前数据指针寄存器DPTR的值为2000H,累加器A的值为05H,ROM2005H单元的内容为30H,则指令执行后,累加器A中的内容为30H。变址寻址示意如图所示。

变址寻址可以用数据指针寄存器DPTR作基址寄存器,也可以用程序计数器PC作基址寄存器,当使用程序计数器PC时,由于PC用于控制程序的执行,在程序执行过程中用户不能随意改变,它始终指向下一条指令的地址,因而就不能直接把基址放在其中。

那基址如何得到呢?基址值可以通过由当前的PC值加上一个相对于表首位置的差值得到。这个差值不能加到PC中,可以通过加到累加器A中来实现。4.位数据寻址(位寻址)

在51单片机中,有一个独立的位处理器,能够进行各种位运算,位运算的操作对象是各种位数据。位数据可通过提供相应的位地址来访问。位数据的寻址方式简称位寻址方式。

4.位数据寻址(位寻址)

在MCS-51系列单片机中,位地址的提供方式有以下几种。(1)直接位地址(00H~0FFH)。例如,20H。(2)字节地址带位号。例如,20H.3表示20H单元的3位。(3)特殊功能寄存器名带位号。例如,P0.1表示P0口的1位。(4)位符号地址。例如,TRO是定时/计数器T0的启动位。5.指令寻址

指令寻址用在控制转移指令中,它的功能是得到转移的目的位置的地址。因此操作数用于提供目的位置的地址。在MCS-51系列单片机中,目的位置的地址可以通过两种方式提供,分别对应两种寻址方式。(1)绝对寻址。

绝对寻址是在指令的操作数中直接提供目的位置的地址或地址的一部分。在MCS-51系列中,长转移和长调用提供目的位置的16位地址,绝对转移和绝对调用提供目的位置的16位地址的低11位,它们都为绝对寻址。5.指令寻址

(2)相对寻址。

相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel得到目的位置的地址。

在MCS-51系列单片机中,相对转移指令的操作数属于相对寻址。5.指令寻址

在使用相对寻址时要注意以下两点。①

当前PC值是指转移指令执行时的PC值,它等于转移指令的地址加上转移指令的字节数。实际上是转移指令的下一条指令的地址。例如,若转移指令的地址为2010H,转移指令的长度为两个字节,则转移指令执行时的PC值为2012H。

5.指令寻址

在使用相对寻址时要注意以下两点。②

偏移量rel是8位有符号数,以补码表示,它的取值范围为−128~127。当为负数时向前转移,当为正数时向后转移。

相对寻址的目的地址为:目的地址=当前PC+rel=转移指令的地址+转移指令的字节数+rel9.1.3指令系统1.数据传送指令

数据传送指令实现数据在各模块间的相互传送,一般是把源操作数(第2个操作数)传送到目的操作数(第1个操作数)。它是指令系统中数量最多、使用也最频繁的一类指令。

共29条,涉及8个助记符:MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH和POP。分为5组:片内RAM传送指令、片外RAM传送指令、ROM传送指令、数据交换指令和堆栈操作指令。2.算术运算指令

算术运算指令实现加、减、乘、除运算,共24条,涉及8个助记符:ADD、ADDC、INC、SUBB、DEC、MUL、DIV和DA。分为5组:加法指令、减法指令、乘法指令、除法指令和十进制调整指令。3.逻辑操作指令

逻辑操作指令对操作数按逻辑量处理,共24条,涉及9个助记符:ANLORL、XRL、CLR、CPL、RL、RR、RLC和RRC。分为5组:逻辑与、逻辑或、逻辑异或、逻辑清零和求反以及循环移位指令。4.控制转移指令

控制转移指令用于改变程序执行的顺序,实现循环结构和分支结构,共17条,涉及12个助记符:LJMP、AJMP、SJMP、JMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET和RETI。

分为4组:无条件转移指令、条件转移指令、子程序调用指令及返回指令。5.位操作指令

在51单片机中,除了有一个8位的运算器A以外,还有一个位运算器C(实际为进位标志CY),可以进行位处理,这对于控制系统很重要。位操作指令共有17条,涉及11个助记符:MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB和JBC。

分为3组:位传送指令、位逻辑运算指令、位控制转移指令。9.1.4单片机汇编程序常用伪指令

伪指令是放在汇编语言源程序中用于指示汇编程序如何对源程序进行汇编的指令。它不同于指令系统中的指令。

指令系统中的指令在汇编程序汇编时能够产生相应的指令代码,而伪指令在汇编程序汇编时不会产生代码,只是对汇编过程进行相应的控制和说明。

伪指令通常在汇编语言源程序中用于定义数据、分配存储空间、控制程序的I/O等。51单片机汇编语言源程序常用的伪指令有以下几条:1.ORG伪指令

格式:ORG地址(十六进制表示)

这条伪指令放在一段源程序或数据的前面,汇编时用于指明程序或数据从程序存储空间的什么位置开始存放。ORG伪指令后的地址是程序或数据的起始地址。51单片机汇编语言源程序常用的伪指令有以下几条:2.DB伪指令

格式:[标号:]DB项或项表DB伪指令用于定义字节数据,可以定义一个字节,也可定义多个字节。定义多个字节时,两两之间用逗号分隔,定义的多个字节在存储器中是连续存放的。定义的字节可以是一般常数,也可以是字符,还可以是字符串。字符和字符串以引号引起来,字符在RAM中以ASCII形式存放。在定义时前面可以带标号,定义的标号在程序中是起始单元的地址。3.DW伪指令

格式:[标号:]DW项或项表

这条指令与DB相似,但用于定义字数据。项或项表所定义的一个字在存储器中占两个字节。

汇编时,机器自动按高字节在前、低字节在后存放,即高字节存放在低地址单元,低字节存放在高地址单元。4.DS伪指令

格式:[标号:]DS数值表达式

该伪指令用于在存储器中保留一定数量的字节单元。保留存储空间主要是为了以后存放数据。保留的字节单元数由表达式的值决定。5.EQU伪指令

格式:符号EQU项

该伪指令的功能是将指令中项的值赋予EQU前面的符号。项可以是常数、地址标号或表达式。该指令执行后可以通过符号使用相应的项。用EQU伪指令对某标号赋值后,该符号的值在整个程序中不能再改变。6.DATA伪指令

格式:符号DATA直接字节地址

该伪指令用于给片内RAM字节单元地址赋予DATA前面的符号,符号以字母开头,同一单元地址可以赋予多个符号。赋值后可用该符号代替DATA后面的片内RAM字节单元地址。7.XDATA伪指令

格式:符号XDATA直接字节地址

该伪指令与DATA伪指令基本相同,只是它针对的是片外RAM字节单元。8.bit伪指令

格式:符号bit位地址

该伪指令用于给位地址赋予符号,经赋值后可用该符号代替bit后面的位地址。9.END伪指令

格式:END

该指令放于程序的最后位置,用于指明汇编语言源程序的结束位置。当汇编程序汇编到END伪指令时,汇编结束。END后面的指令,汇编程序都不予处理。一个源程序只能有一个END,否则就有一部分指令不能被汇编。任务9.2工业参数监测系统的设计任务描述:

本任务先介绍单片机汇编程序设计的有关知识,再设计一个工业参数监控系统,要求能监控温度超限、压力超限、pH值超限等多种情况,当发生超限时能够给出相应的处理措施。9.2.1数据传送程序如把片内RAM的40H~4FH的16个字节的内容传送到片外RAM的2000H单元位置处。

分析:片内RAM与片外RAM数据传送通过累加器A过渡,分别用指针指向片内RAM和片外RAM,每传送一次指针向后移一个单元,重复16次即可。

具体处理过程如下:在循环体外,用R0指向片内RAM的40H单元,用DPTR指向片外RAM的2000H单元,用R2作循环变量,初值为16。在循环体中把片外RAM单元的R0、DPTR指针指向下一个单元,用DJNZ指令控制循环16次即可。程序代码如下:ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#40HMOVDPTR,#2000HMOVR2,#16LOOP:MOVA,@R0

MOVX@DPTR,AINCR0INCDPTRDJNZR2,LOOPSJMP$END9.2.2运算程序多字节无符号数加法。

设从片内RAM30H单元和40H单元取两个16字节数,把它们相加,将结果放于30H单元开始的位置处(设结果不溢出)。

用R0做指针指向30H单元;用R1做指针指向40H单元;R2为循环变量,初值为16;在循环体中用ADDC指令把R0指针指向的单元与R1指针指向的单元相加,加得的结果放回R0指向的单元;改变R0、R1指针指向下一个单元,循环16次。注意,在第一次循环前应将位运算器C清零。程序代码如下:ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#30HMOVR1,#40HMOVR2,#16HCLRCLOOP:MOVA,@R0

ADDCA,@R1MOV@R0,AINCR0INCR1DJNZR2,LOOPSJMP$END两字节无符号数乘法。

设被乘数的高字节放在R7中,低字节放在R6中;乘数的高字节放在R5中,低字节放在R4中。乘得的积有4个字节,按由低字节到高字节的次序存于片内RAM以ADDR为首地址的区域中。

由于51单片机只有一条单字节无符号数乘法指令MUL,而且要求参加运算的两个字节放在累加器A和B寄存器中,而乘得的结果的高字节放在B寄存器中,低字节放在累加器A中。程序代码如下:ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#ADDRMUL1:MOVA,R6MOVB,R4MULAB;R6×R4,结果的低字节直接存入积的第一字节单元

MOV@R0,A;结果的高字节放入R3中暂存起来MOVR3,BMUL2:MOVA,R7MOVB,R4MULAB;R7×R4,结果的低字节与R3相加后存入R3中

ADDA,R3MOVR3,AMOVA,B;结果的高字节加上进位后放入R2中暂存起来

ADDCA,#00

MOVR2,AMUL3:MOVA,R6MOVB,R5MULAB;R6×R5,结果的低字节与R3相加存入积的第二字节单元

ADDA,R3INCR09.2.3代码转换程序

对于代码转换,如果要转换的内容与代码之间有规律,则可利用它们的规律用运算方式实现转换;如果没有规律,可以通过查表方式实现转换。

将一位十六进制数转换成ASCII,设十六进制数放于R2中,要求转换的结果放回R2中。

一位十六进制数有16个符号,即0~9和A~F。其中,0~9的ASCII为30H~39H,A~F的ASCII为41H~46H。转换时,只要判断十六进制数是0~9还是A~F,如为0~9,加30H;如为A~F,先加07H,再加30H。这样就可得ASCII。ORG0200HMOVA,R2CLRCSUBBA,#0AH;减去0AH,判断十六进制数是0~9还是A~FMOVA,R2JCADD30;如是0~9,直接加30HADDA,#07H;如是A~F,先加07H,再加30HADD30:ADDA,#30HMOVR2,ARET一位十六进制数转换成8段式数码管显示码,设十六进制数放于R2中,要求转换的结果放回R2中。

一位十六进制数0~9、A~F的8段式数码管的共阴极显示码为3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、67H、77H、7CH、39H、3EH、79H、71H。由于数与显示码没有规律,因此不能通过运算得到,只能通过查表方式得到。首先用数据定义伪指令DB建一张由十六进制数0~9、A~F的8段式数码管的共阴极显示码组成的表,查表时先找到表首,然后用这一位十六进制数作位移量就可以找到相应的显示码。

在51单片机中,查表指令有两条:MOVCA,@A+DPTR和MOVCA,@A+PC。用它们构造的查表程序分别如下。(1)用MOVCA,@A+DPTR构造的查表程序,其代码如下:ORG0200HCONVERT:MOVDPTR,#TAB;DPTR指向表首地址

MOVA,R2;转换的数放于AMOVCA,@A+DPTR;查表指令转换

MOVR2,ARETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71H;显示码表

用MOVCA,@A+DPTR查表时,基址寄存器DPTR直接存放表首地址,累加器A中存放要转换的数字。执行查表指令后累加器A中就可得到相应的显示码。(2)用MOVCA,@A+PC构造的查表程序,其代码如下。ORG0200HCONVERT:MOVA,R2;转换的数放于AADDA,#02H;加查表指令相对于表首的位移量

MOVCA,@A+PC;查表指令转换

MOVR2,ARETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB,7FH,67H,77H,7CH,39H,5EH,79H,71H;显示码表

用MOVCA,@A+PC时,由于程序计数器PC不能直接赋值,在程序处理过程中它始终指向下一条指令。

查表时如何得到表首地址呢?处理时,可以用MOVCA,@A+PC指令执行时的PC值加一个差值来得到,这个差值为MOVCA,@A+PC指令执行时的PC值相对于表首的位移量。

在51单片机中,PC又不能直接和位移量相加,如何办呢?处理时可以将这个差值加到累加器A中。9.2.4多分支转移程序

在51单片机中,多分支转移(散转)程序通常可以用两种方法实现,一种是用多分支转移指令JMP@A+DPTR来实现,另一种是用RET指令来实现。

(1)采用多分支转移指令JMP@A+DPTR实现的多分支转移程序JMP@A+DPTR指令执行时,由数据指针寄存器DPTR的内容与累加器A中的内容相加得到转移的目的地址。用它来实现多分支时,先要构造一个无条件转移指令表,表首地址放于DPTR中,累加器A中放转移的分支信息,然后执行JMP@A+DPTR指令就可以将之转移到相应的分支去。编写一个有10路分支的多分支转移程序,设分支号为0~9,放在R2中。

即当(R2)=0,转向OPR0;

(R2)=1,转向OPR1……(R2)=9,转向OPR9。

先用无条件转移指令(AJMP或LJMP)按顺序构造一个转移指令表,执行转移指令表中的第n条指令,就可以转移到第n个分支,将转移指令表的首地址装入DPTR中,将R2中的分支信息装入累加器A中形成变址值。然后执行多分支转移指令JMP@A+DPTR转到转移指令表的相应无条件转移指令,再通过无条件转移指令转移对应的分支。程序代码如下:MOVDPTR,#TAB;DPTR指向转移指令表的首地址

MOVA,R2RLA;分支信息乘2形成变址值放累加器A中

JMP@A+DPTR;转到转移指令表的相应无条件转移指令

TAB:AJMPOPR0;转移指令表

AJMPOPR1…AJMPOPR9

温馨提示

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

评论

0/150

提交评论