汇编语言第一章基础知识.ppt_第1页
汇编语言第一章基础知识.ppt_第2页
汇编语言第一章基础知识.ppt_第3页
汇编语言第一章基础知识.ppt_第4页
汇编语言第一章基础知识.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1、汇编语言程序设计,北京理工大学 电子工程系,马永锋 信息实验楼三层319-2,简介,主要内容: 学习关于计算机语言和CPU硬件方面的基础知识; 学习汇编语言的特性、基础知识及其编程技术; 建立起“机器/程序”、“空间/地址” 的概念; 为下学期计算机原理与应用课程打好基础。 学习建议: 充分注意“汇编”课实践性强的特点,多读程序,多写程序,多上机调试程序; 注意软、硬件结合,熟悉PC机的编程结构; 掌握汇编语言及其程序设计的基本概念、方法和技巧。,2,简介,参考资料: 1.80X86汇编语言程序设计 沈美明 温冬婵 清华大学出版社 2.IBM PC 汇编语言与程序设计 PETER ABEL 编

2、著 第5版 人民邮电出版社 3. IBM PC 汇编语言与程序设计例题习题集 温冬婵 沈美明 清华大学出版社,3,课程内容,第1章 基础知识(3学时) 第2章 指令与寻址方式(6学时) 第3章 汇编语言程序组织(6学时) 第4章 程序结构及程序设计(9学时) 第5章 高级汇编技术(3学时),4,第1章 基础知识,1.1 计算机语言 1.2 计算机组织结构 1.3 计算机中数的表示,5,第1章 基础知识,1.1 计算机语言,计算机语言的层次,机器语言,FORTRAN BASIC COBOL PASCAL C/C+ JAVA.,汇编语言,高级语言,6,1.1 计算机语言,面向机器的语言,(1)机器

3、语言 机器语言程序由机器指令构成,这些机器指令按照执行顺序依次排列,运行时依次执行,完成某个特定的计算或任务; 机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成。 机器指令与CPU紧密相关,所以不同种类的CPU所对应的机器指令也就不同。如80X86、Z80计算机或者各类DSP使用不同的机器语言。,7,1.1 计算机语言,(2)汇编语言 用助记符、符号地址等表示的机器指令称作汇编指令,用汇编指令编写的程序称作汇编指令程序。 汇编语言是汇编指令集、伪指令集及其使用规则的统称。 汇编语言程序要比用机器指令编写的程序容易理解和维护。 汇编语言源程

4、序是一个文本文件,80 x86汇编语言源程序扩展名是.asm,它必须经过翻译才能够变成可执行的机器语言程序,这个翻译过程称作汇编。,8,汇编,用汇编语言编写的程序大大提高了程序的可读性,但失去了CPU能直接识别的特性。 把汇编语言源程序翻译成CPU能识别的机器指令序列,我们称该翻译程序为汇编程序。图1.1是翻译程序的翻译过程示意图。 常用的汇编程序有:MASM、TASM和DEBUG等。,面向机器的语言,图1.1 汇编语言指令到机器指令的示意图,MOVDL,33H ; B233H MOVAH,2 ; B402H INT21H ;CD21H INT20H ;CD20H,9,非面向机器的计算机语言,

5、非面向计算机的语言按照翻译程序的类型分为编译型语言和解释型语言; (1)编译型计算机语言 翻译成机器语言的过程远比汇编的过程复杂,通常经过预处理和多次扫描才能够变成机器语言,这个过程称作编译。编译后的浮动二进制文件要经过连接,才能够生成可执行文件。可执行文件运行时,不需要编译程序在场。 例如各种C语言都是编译型语言。 (2)解释型计算机语言 解释型计算机语言执行时需要翻译程序在场,边解释边执行。如Basic语言、许多脚本语言(Perl、Java Script语言等)是解释型语言。,10,汇编语言主要特性,面向机器的低级语言,通常是为特定的计算机或计算机系列专门设计的; 保持了机器语言的优点,具

6、有直接和简捷的特点; 可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 经常与高级语言配合使用,应用十分广泛。,11,汇编语言主要特性,举例:编程实现123+456,结果保存到变量sum中。,/C语言实现 Main() int a,b,sum; a=123; b=456; sum=a+b; ,-机器语言实现 输入程序代码: -E CS:100 A1 0B 01 03 06 0D 01 A3 0F 01 C3 设置数据: -E DS 010B 7B 00 C8 01 00 00 运行结果: 12F8:010

7、F 43 02,12,汇编语言主要特性,-汇编语言实现 CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:CODE MAINPROG NEAR MOVAX,A ADDAX,B MOVSUM,AX RET ADW 123 BDW 456 SUMDW ? MAINENDP CODE ENDS END MAIN,汇编语句与机器语句一一对应,它是把每条指令及数据用便于记忆的符号书写,是一种符号化了的机器语言,即用指令助记符、符号地址、标号等符号书写程序的语言,13,汇编语言主要特性,程序占用字节数统计,汇编语言的特点: 占用空间少; 执行速度快;10倍? 直接控制硬件能力

8、强; 开发周期长、可移植性差、不易掌握;,14,70%以上的系统软件是用汇编语言编写的,常驻内存程序和中断服务例行程序几乎都用汇编语言编写; 在管理硬件设备方面提供了更多的控制方法,可用于快速处理、位处理、编写I/O驱动程序; 生成更加紧凑的可执行模块,减小存储空间的需求,程序执行效率更高、速度更快; 有助于理解程序与操作系统、处理器、存储器、外部设备之间的关系和工作原理; 编写、调试程序的复杂性高; 应用软件大部分是用高级语言编写,但对于执行效率要求苛刻的部分还需要用汇编语言进行优化改进;,汇编语言应用,15,1.2 计算机组织结构,计算机系统组成:硬件+软件 硬件组成:中央处理器(CPU)

9、,存储器,输入输出子系统和系统总线,软件:系统软件 用户软件,16,冯诺依曼结构,由运算器、控制器、存储器、输入设备和输出设备五大部分组成; 数据和程序以二进制代码的形式不加区别地存放在存储器中,存放位置由地址指定,地址码也是二进制形式; 控制器根据存放在存储器中的指令序列(即程序)工作,并由一个程序计数器(PC)控制指令的执行。控制器具有判断能力,能够根据计算结果选择不同的动作流程,17,微型计算机的工作过程,微型计算机的工作过程就是执行程序的过程,而程序由指令序列组成,因此,执行程序的过程,就是执行指令序列的过程,即逐条地从存储器中取出指令并完成指令所指定的操作。 由于执行每一条指令,都包

10、括取指、译码和执行三个基本步骤,所以,微型计算机的工作过程,也就是不断地取指令、译码和执行的过程,直到遇到停机指令时才结束机器的运行。,优点:处理器简单通用,把复杂问题转移到存放解释程序存储器中,即把复杂的硬件设计转化为复杂的软件设计。,18,1.2.1 中央处理器,主要由算术逻辑部件(ALU)、累加器、通用寄存器组、控制逻辑部件、内部总线等组成。主要用途是产生时序控制信号、指令译码 、执行算术运算和逻辑运算等。 算术逻辑部件(ALU): 完成算术运算(、)等操作; 完成逻辑运算(与、或、非、异)等操作; 通用寄存器组: 数据寄存器:AX、BX、CX、DX 指针及变址寄存器:SP、BP、SI、

11、DI、IP 标志寄存器:FLAG 段寄存器:CS、DS、SS、ES,19,寄存器-Register,寄存器是有限存贮容量的高速存贮部件; 寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径; 通常由触发器组成; 宽度:8位,16位,32位,个别可按位访问; 注意与存储器的区别;,20,1.2.2 存储器-Memory,存储器是计算机中用于保存信息的记忆设备; 计算机存储信息的基本单位是一个二进制位(bit):1或0,每8位组成一个字节; 通常所说字长为16位,由2个字节组成; 在存储器里以字节为单位存储信息,为了正确存取信息,每一个字节单元给以一个存储器地址。 地址从0开始编号,顺序

12、每次加1,地址也是以二进制数表示的;,21,存储单元的内容 存储单元中所存放的二进制信息称为该存储单元的内容或值,并且规定: 一个字节的内容是该字节单元内存放的二进制信息; 一个字的内容是该字地址所指向的单元及其后继一个单元的内容拼接而成; 一个双字的内容是该字地址所指向的单元及其后三个单元的内容拼接而成。 在拼接“字内容”时,按“高高低低”的原则来处理,即:高存储单元(地址大的存储单元)的值是“字内容”的高8位,低存储单元(地址小的存储单元)的值是“字内容”的低8位。 在拼接“双字内容”时也是如此。,存储器编址,22,存储器分段管理模式,(1)存储器的分段 计算机的内存单元是以“字节”为最小

13、单位进行线性编址的。为了标识每个存储单元,就给每个存储单元规定一个编号,此编号就是该存储单元的物理地址。 16位微机把内存空间划分成若干个逻辑段,每个逻辑段的要求如下: 逻辑段的起始地址(通常简称为:段地址)必须是16的倍数,即最低4位二进制必须全为0; 逻辑段的最大容量为64K,这由16位寄存器的寻址空间所决定。 按上述规定,1M内存最多可分成64K个段,即65536个段(段之间相互重叠),至少可分成16个相互不重叠的段。,23,8086内存分段管理模式,24,存储器分段管理模式,(2)物理地址的形成方式 存储单元的逻辑地址分为两部分:段地址和偏移量。由逻辑地址得到其物理地址(PAPhysi

14、cal Address)的计算方法如下: 物理地址PA段地址16 + 偏移量,存储器分段管理的优点: 允许程序在存储器内重定位; 允许实模式程序在保护模式下运行; 有利于程序和数据的分离。,25,1.2.3 输入输出接口,在计算机系统中,主机( CPU 和存储器)与外部设备(鼠标、键盘、显示器、硬盘等)的通信是通过输入、输出接口(Interface)进行的,每个接口包括一组寄存器。 数据寄存器:存放外设和主机间传送的数据; 状态寄存器:保存外设或接口的状态信息; 命令寄存器:保存CPU发给外设或接口的控制命令 外设中每个寄存器有一个端口(Port)地址,构成 一个独立于内存的 I / O 地址

15、空间:0000H FFFFH,26,1.2.4 系统总线,在计算机系统中,各个部件之间传送信息的公共通路叫总线。,27,1.2.5 8086微处理器结构,总线接口部件(bus interface unit, BIU) 负责与存储器、I/O端口传送数据。 执行部件(execution unit, EU) 负责指令的执行。,28,8086微处理器,8086 CPU的结构是一次划时代的革命,其基础的逻辑结构一直沿用至今,即使最新型的酷睿多核CPU,使用的也还是地址、数据及控制三总线的协同工作方法。 无论何种CPU,在工作时都是围绕一个核心,即对某个指定的“地址”进行操作,或者取数或者运算。这个地址可

16、以是某个通用寄存器、内存的某个地址、甚至是某个外设端口。,29,8086微处理器,“需要执行的机器指令程序,首先必须存放在内存的某个地方”。理解这一点是汇编语言程序设计的基本要求,用高级语言编写并编译程序时并不需要知道这一点,这是机器语言与高级语言的差异。 存放程序的这个地方,在程序执行时由总线接口单元的CS及IP共同来指向。指令通过外部总线从内存中被取出后,会送到BIU的指令流队列,并由EU执行。而这一切都是由控制电路来协调完成的。,30,8086微处理器,EU中的算术逻辑单元ALU用来维持MPU的状态和标志,管理通用寄存器和指令操作数。 EU中寄存器是16位的,数据通路也是16位的。 EU

17、从BIU的指令队列中获取指令,译码后开始执行,当指令要求访问内存或端口时,EU请求BIU存取数据。这时EU算出的地址是相对段基的16位位移量,BIU根据指令要求选定相应的段寄存器来得到段基,然后再由段基和位移才能得出操作数的20位的物理地址。20位的物理地址使得EU能直接访问的存储空间为1M字节。,31,8086微处理器,BIU用来实现EU的所有总线操作,在EU执行指令时,BIU从存储器中取出后继指令送入指令队列,该队列同时能存放总共6个字节的指令。在绝大多数情况下,这一指令队列能保证EU从该队列中取出马上要执行的指令,而不必到内存中直接取指令。,32,8086的寄存器组,寄存器是CPU内部存

18、放操作数的地方,它的操作速度比内存操作数速度快。 8086共有14个寄存器,它们都是16位的,可以存放16位二进制数。 通用寄存器: 4个数据寄存器:AX、BX、CX和DX,每个寄存器又可分为2个8位寄存器 2个变址寄存器:DI和SI 2个指针寄存器:SP和BP 段寄存器 4个段寄存器:ES、CS、SS和DS 标志寄存器 1个标志寄存器:FLAG 指令指针寄存器 一个指令指针寄存器:IP,33,8086的寄存器组,34,寄存器与存储器的比较,寄 存 器 存 储 器,在CPU内部 在CPU外部 访问速度快 访问速度慢 容量小,成本高 容量大,成本低 用名字表示 用地址表示 没有地址 地址可用各种

19、方式形成,35,通用寄存器的作用,(1) 数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 4个16位寄存器: AX:Accumulator,累加器 BX:Base Register, 基址寄存器 CX:Count Register,计数寄存器 DX:Data Register,数据寄存器 上述4个寄存器可分为8个8位寄存器,分别为AH和AL、BH和BL、CH和CL、DH和DL。 每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器“能分可合”的特性,灵活地处理双字、字和字节等信息。 在32位处理器中,有4个32位寄存器:EA

20、X、EBX、ECX和EDX。,36,通用寄存器的作用,(2)变址寄存器(Index Register) SI:Source Index Register,源变址寄存器 DI:Destination Index Register,目标变址寄存器 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,且具有特殊的功能。 (3) 指针寄存器(Pointer Register) 它们主要用于访问堆栈内的存储单元,并且规定: BP:基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据 SP:堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶,37,通

21、用寄存器的作用,通用寄存器的隐含使用及特殊用途,38,控制寄存器,(1)指令指针寄存器IP (Instruction Pointer) IP是16位的寄存器,存放着下次将要执行的指令在代码段的偏移量。 在80386及其高档处理器处于保护模式时,其指令指针寄存器是32位的EIP。,39,控制寄存器,(2)标志寄存器FLAG (Flags Register) FLAG寄存器的各位用来存放各种不同的标志。算术运算指令和逻辑运算指令的运行结果都将定性地反映在不同的标志位上,以便后续的条件判断指令根据这些标志实现判断转移; 判断转移的实质是修改CS和IP。这也正是计算机能够实现判断转移的底层原理。,6个

22、状态标志:OF、SF、ZF、AF、PF、CF 3个控制标志:IF、DF、TF; 7位保留;,40,标志寄存器,标志寄存器中的状态标志位含义如下 CF(carry flag):进位标志,在进行字/字节运算产生进位或借位时置1,否则置0。 PF(parity flag):奇偶性标志,结果有偶数位为1时置1,否则置0。 AF(auxiliary carry flag):辅助进位标志,当进行字节运算有低4位向高4位进位或借位时置1,否则置0。在作BCD码运算时常常使用。 ZF(zero flag):零标志,当运算结果为0时置1,否则置0。 SF(sign flag):符号标志,运算结果为负,即结果最高

23、位为1时置1,否则置0。 OF(overflow flag):溢出标志,运算溢出时自动置1,当它为1时可用溢出中断指令产生中断。,41,标志寄存器,标志寄存器中的控制标志位含义如下 TF(trap flag):陷阱标志,若IF=1,则在执行指令时产生单步中断。 IF(interrupt flag):中断标志,若IF=1开中断,响应可屏蔽中断;IF=0,关中断。 DF(direction flag):方向标志,DF置1引起串操作指令的变址寄存器自动减值,DF置0引起串操作指令的变址寄存器自动增值。,42,8086外部有20根地址线,它可以直接访问的物理空间为1M字节,其编码区间为:00000H0

24、FFFFFH。而CPU内部存放存储单元偏移量的寄存器(如IP、SP、BP、SI、DI和BX等)都是16位,它们的编码范围仅为:00000H0FFFFH。 如何用16位寄存器有效地访问1MB的存储空间,8086采用了内存分段的管理模式,并引入存储器分段的概念。,段寄存器的作用,43,8086在取指令和寻找内存操作数的地址时,采用了分段寻找的方式,在同一时刻可将内存分成4个段:代码段、数据段、堆栈段和特别数据段,段与段之间允许有重叠。 4个段寄存器是: CS (Code Segment Register,代码段寄存器) DS (Data Segment Register,数据段寄存器) SS (S

25、tack Segment Register,堆栈段寄存器) ES (Extra Segment Register,附加段寄存器)。 这4个寄存器都只能够作为16位寄存器使用。,段寄存器的作用,44,段寄存器的引用,段寄存器是因为对内存的分段管理而设置的。一般情况下,段寄存器及其指针寄存器的引用关系方面有如下规定: 取指令所用的段寄存器和偏移量一定是用CS和IP; 堆栈操作所用的段寄存器和偏移量一定是SS和SP; 串操作的目标操作数所用的段寄存器和偏移量一定是ES和DI; 其它情况,段寄存器除其默认段寄存器外,还可以强行改变为其它段寄存器。,45,1.3 计算机中数的表示,基本概念 (1)位(b

26、it)是计算机所能表示的最小最基本的数据单位,它指的是取值只能为0或1的一个二进制数值位。位作为单位时记作b; (2)字节(byte)由8个二进制位组成,通常用作计算存储容量的单位,字节作为单位时记作B K是kelo的缩写,1K=1024=210; M是mega的缩写,1M=1024K=220; G是Giga的缩写,1G=1024M=230; T是tera的缩写,1T=1024G=240。 字节的最高位是第7位,最低位是第0位。,46,基本概念,(3)字 由2个字节组成一个字,其最高位是第15位,最低位是第0位。高8位称为高字节,低8位称为低字节。 (4)双字 用2个字(4个字节)来组成一个双

27、字,其高16位称为高字,低16位称为低字。 双字有较大的数据表示范围,它通常是为了满足数据的表示范围而选用的数据类型,也可用于存储远指针。 (5)四字 由4个字(8个字节)组成一个四字类型,它总共有64个二进制位,有更大的数据表示范围,但在汇编语言中很少使用该数据类型。 (6)字符串 字符串是由若干个字节组成的,字节数不定,通常每个字节存储一个字符。该数据形式是汇编语言程序中经常使用的一种数据形式。,47,计算机中数的表示,字长是微处理器一次可以直接处理的二进制数码的位数,它通常取决于微处理器内部通用寄存器的位数和数据总线的宽度。微处理器的字长有4位、8位、16位、32位、64位等。8086为

28、16位微处理器,80386、奔腾为32位微处理器。,48,计算机中数的表示,1.3.1 数值数据的表示 进位计数制及其相互转换 十进制、二进制、八进制和十六进制采用的都是进位计数制,进位计数制中用少量数码按次序排列成数位,并按由低到高的进位方式进行计数。基数和权是进位计数制的两个基本要素。 基数是进位计数制中所用数码的个数,基数为r的进位计数制中需要r个数码,每个数位计满r就向高位进一,即逢r进一。 在进位计数制表示的数中,同一数字处在不同位置表示不同的值,它所表示的值是该数字乘以一个由它所处位置所决定的常数,这一常数就是该数位所具有的权。r进制数各位的权是以r为底的幂。,49,数值数据的表示

29、,(1)二进制 二进制的表示元素是:0和1。书写时,在数据后面紧跟一个字母B。如:0101B、10101B等。 数据的二进制写起来比较长,通常情况下,程序中不直接用二进制来书写具体的数值,而改用八进制、十进制或十六进制。 (2)八进制 八进制是一种二进制的变形,三位二进制可变为一位八进制,反之也然。 八进制的表示元素是:0、1、7。 书写时,在数据后面紧跟一个字母Q。如:1234Q、7654Q、54Q等。,50,数值数据的表示,(3)十进制 十进制是我们最熟悉的一种数据表示形式,其基本元素是:0、1、9。 书写时,在数据后面紧跟一个字母D。如:1234D、7674D、5411D等。 (4)十六

30、进制 十六进制是另一种二进制的变形,四位二进制可变为一位十六进制,反之也然。其基本元素是:09、AF、af,其中:AF依次代表1015。 书写时,数据后面紧跟一个字母H。当十六进制数的第一个字符是字母时,在其之前必须添加一个0。如:100H、56EFH、0FFH、0ABCDH等。,51,BCD码,(5)BCD码二进制编码的十进制数(Binary-Coded Decimal) 非压缩型BCD码:用一个字节表示一位十进制数,高四位为0000,低四位00001001分别表示09; 压缩型BCD码:一个字节表示两位十进制数,高四位表示十位数字,低四位表示个位数字。,十进制 压缩的BCD码 非压缩的BC

31、D码 12 0001 0010 0000 0001 0000 0010 623 0000 0110 0010 0011 0000 0110 0000 0010 0000 0011 910 0000 1001 0001 0000 0000 1001 0000 0001 0000 0000,52,不同基数的数之间的转换,二进制数和十进制数之间的转换 二进制数转换为十进制数 十进制数转换为二进制数 举例:1011100.10111B92.71875D 二进制数和十六进制数、八进制数之间的转换 四位二进制可变为一位十六进制,反之亦然 三位二进制可变为一位八进制,反之亦然 举例: 11010110111

32、111B=35BFH 11010110111111B=32677Q 十进制数和十六、八进制数之间的转换 借助二进制数为桥梁 按定义直接转换,53,1.3.2 数的补码表示,无符号数的表示 n位二进制数,其所有状态全部用来表示0和自然数,可表示的范围是02n1。 符号数的表示原码、反码、补码 把二进制数的最高一位定义为符号位,符号位为0表示正数,符号位为1表示负数; 这种在计算机中使用的、连同符号位一起数值化了的数,称为机器数。机器数所表示的真实的数值,称为真值。对于符号数,机器数常用的表示方法有原码、反码和补码三种。 数X的原码记作X原,反码记作X反,补码记作X补。,54,原码,原码表示法:最

33、高位表示符号,数值位用二进制绝对值表示; 例:n = 8bit +3原码 = 0 000,0011 = 03H - 3原码 = 1 000,0011 = 83H +0原码 = 0 000,0000 = 00H - 0原码 = 1 000,0000 = 80H ( 0 的表示不惟一),55,反码,正数的反码同原码; 负数的原码符号位保持不变,其余位取反得到其反码; 例:n = 8bit +5反码 = 0 000,0101 = 05H - 5反码 = 1 111,1010 = FAH +0反码 = 0 000,0000 = 00H - 0反码 = 1 111,1111 = FFH ( 0 的表示不

34、惟一),56,补码(Twos Complement),正数的补码同原码; 负数的反码加1得到其补码; 例: n = 16bit,写出X=117D的补码表示 +117表示为:0000 0000 0111 0101 原码为:1000 0000 0111 0101 反码为:1111 1111 1000 1010 补码为:1111 1111 1000 10110FF8BH +0补码 = 0 0 0 0 0 0 0 0= - 0补码 ( 0 的补码表示惟一),57,补码的符号扩展,关于补码表示的符号扩展问题 对于用补码表示的数,当从位数较少扩展到位数较多时: 正数的符号扩展应该在前面用0补足 负数的符号扩展应该在前面用1补足 举例:若机器字长为8位,则: +46补0010 1110, 46补1101 0010 如果要将两数扩展到16位系统,则 +46补0000 0000 0010 1110, 46补1111 1111 1101 0010,58,补码的表示范围,n位无符号整数的表数范围: 0 N 2

温馨提示

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

评论

0/150

提交评论