汇编语言的基本语法课件_第1页
汇编语言的基本语法课件_第2页
汇编语言的基本语法课件_第3页
汇编语言的基本语法课件_第4页
汇编语言的基本语法课件_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

汇编语言的基本语法汇编语言的基本语法1.1.汇编语言源程序的格式DATA SEGMENTAT2000HARRAY DBa1,a2,a3,…a10(a1~a10为立即数)COUNT EQU$-ARRAYSUM DW?DATA ENDSSTACK SEGMENTPARASTACK‘STACK’STAK DB10DUP(?)TOP EQULENGTHSTAKSTACK ENDS汇编语言的基本语法CODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA MOVDS,AX MOVAX,0 MOVDI,OFFSETSUM MOVBX,OFFSETARRAY MOVCX,COUNTLOP:ADDAL,[BX] ADCAH,0 INCBX LOOPLOP MOV[DI],AX MOVAH,4CH INT 21HCODE ENDS END START汇编语言的基本语法

汇编语言源程序格式的特点是: 1.分段结构

2.语句行 汇编语言程序的语句有两类:

(1)指令性语句

(2)指示性语句汇编语言的基本语法汇编语言源程序语句的格式

汇编语言源程序中的每个语句可以由四项组成,格式如下:

[名字]操作操作数[;注释]

其中:

名字项是指一个标号或变量。

操作项是一个操作码的助记符,它可以是指令、伪指令或宏指令名。

汇编语言的基本语法操作数项由一个或多个表达式组成,它提供为执行所要求的操作而需要的信息。操作数项可以是常数、寄存器、标号、变量或由表达式组成。

注释项用来说明程序或语句的功能。";"为识别注释项的开始。";"也可以从一行的第一个字符开始,此时整行都是注释,常用来说明下面一段程序的功能。汇编语言的基本语法

上面四项中带方括号的两项是可选项。各项之间必须用"空格"(space)或"水平制表"(Tab)符隔开。

(1)名字项

(2)操作项

(3)操作数项

(4)注释项

汇编语言的基本语法

(1)名字项

源程序中用下列字符来表示名字:

字母A~Z

数字0~9

专用字符?、·、@、-、$

除数字外,所有字符都可以放在源语句的第一个位置。名字中如果用到·则必须是第一个字符。可以用很多字符来说明名字,但只有前面的31个字符能被汇编程序所识别。

汇编语言的基本语法

一般说来,名字项可以是标号或变量。它们都用来表示本语句的符号地址,都是可有可无的,只有当需要用符号地址来访问该语句时它才需要出现。

·标号:标号在代码段中定义,后面跟着冒号:,此外,它还可以作为过程名定义。

·变量:变量在数据段或附加数据段中定义,后面不跟冒号。变量经常在操作数字段出现。

汇编语言的基本语法

(2)操作项

操作项可以是指令、伪指令或宏指令的助记符。对于指令,汇编程序将其翻译为机器语言指令。对于伪指令,汇编程序将根据其所要求的功能进行处理。对于宏指令,则将根据其定义展开。

汇编语言的基本语法(3)操作数项

操作数项由一个或多个表达式组成,多个操作数项之间一般用逗号分开。对于指令,操作数项一般给出操作数地址,它们可能有一个,或二个,或三个,或一个也没有。对于伪操作或宏指令,则给出它们所要求的参数。

操作数项可以是常数、寄存器、标号、变量或由表达式组成。

汇编语言的基本语法

(4)注释项

注释项用来说明一段程序、一条或几条指令的功能。对于汇编语言程序来说,注释项的作用是很明显的,它可以使程序容易被读懂,因此汇编语言程序必须写好注释。注释应该写出本条(或本段)指令在程序中的功能和作用,而不应该只写指令的动作。读者在有机会阅读程序例子时,应注意学习注释的写法,在编制程序时,更应学会写好注释。

汇编语言的基本语法

指令性语句 格式为:

[标号]:操作码[操作数][;注释]

带方括号的为任选项, 标号是指令的符号地址,

操作码和操作数是用汇编语言指令表示的指令部分, 注释是对该语句在本程序中的功能的说明。汇编语言的基本语法指示性语句 格式为:[名字/变量]命令[参数][;注释]

命令指示汇编程序进行某种汇编操作, 参数是有关的数据, 名字是段名、符号名等标识符,变量用变量名表示。汇编语言的基本语法

常量、标识符和表达式一、常量 其值在程序中不能改变的量,

在汇编语言源程序中的常量有: 数字常量、字符常量和符号常量(1)数字常量可以是二进制数、八进制数、十进制数或十六进制数表示(2)字符常量是用单引号‘’括起来的ASCII字符,其值是该字符的ASCII代码值汇编语言的基本语法(3)符号常量是用标识符定义的常量。 例如,采用符号定义语句PORTAEQU80H, 则指令MOVAL,PORTA

与指令MOVAL,80H等价。二、标识符 在编程时建立的有特定意义的字符序列,标识符可用作符号常量、名字、变量和标号等。 组成标识符有如下规定:

汇编语言的基本语法

(1)组成标识符的字符有: 英文大写字母:A~Z; 英文小写字母:a-z; 数字0~9; 字符?、@、_、$;

(2)字符长度不超过3l个;

(3)首字符不能是数字;

(4)?不能单独作为一个标识符;

(5)不能把保留字用作标识符,保留字包括助记符、寄存器名等。汇编语言的基本语法三、表达式

表达式是常数、标号、变量与一些操作符相组合的序列,可以有数字表达式和地址表达式两种。在汇编期间,汇编程序按照一定的优先规则对表达式进行计算后可得到一个数值或一个地址。

常用的表达式操作符介绍如下:汇编语言的基本语法

(1)算术操作符

算术操作符有+、-、*、/和MOD。

MOD是指除法运算后得到的余数,如19/7的商是2,而19MOD7则为5(余数)。

汇编语言的基本语法

算术操作符可以用于数字表达式或地址表达式中,但当它用于地址表达式时,只有当其结果有明确的物理意义时才是有效的结果。例如两个地址相乘或相除是无意义的。在地址表达式中,可以使用+或-,但也必须注意其物理意义。

汇编语言的基本语法

例如把两个不同段的地址相加也是无意义的。经常使用的是地址±数字量,它是有意义的。例如SUM+1是指SUM字节单元的下一个字节单元的地址(注意:不是指SUM单元的内容加1),而SUM-1则是指SUM字节单元的前一个字节单元的地址。

例:如果要求把首地址为BLOCK的字数组的第6个字传送到DX寄存器,可用指令如下:

MOV

DX,BLOCK+(6-1)*2

汇编语言的基本语法

例:如数组ARRAY定义如下,写出把数组长度(字数)存入CX寄存器的指令。

ARRAY

DW1,2,3,4,5,6,7

ARYEND

DW?

其中ARYEND是为计算数组长度而建立的符号地址,所需指令如下:

MOV

CX,(ARYEND-ARRAY)/2

汇编程序在汇编期间将计算出表达式的值而形成指令:

MOV

CX,7

汇编语言的基本语法

(2)逻辑操作符逻辑操作符有:AND(与)、OR(或)、XOR(异或)、NOT(非)。

逻辑操作符都是按位操作的,只能用于数字表达式中。逻辑操作符要求汇编程序对其前后两个操作数(或表达式)作指定的逻辑操作。

汇编语言的基本语法

例:

OUTPORT_VALAND0FEH,AL

上例中PORT_VAL为端口号,OUT指令中的表达式说明只为偶数号端口输出数据。

汇编语言的基本语法

(3)关系操作符

关系操作符有:EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)。

关系操作符的两个操作数必须都是数字或是同一段内的两个存储器地址。计算的结果应为逻辑值:结果为真,表示为0FFFFH;结果为假,则表示为0。

汇编语言的基本语法例如:

MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALGE5)AND30)

则当PORT_VAL<5时,汇编结果应该是:

MOVBX,20

否则,汇编结果应该是:

MOVBX,30

汇编语言的基本语法(4)数值回送操作符

数值回送操作符有:TYPE、LENGTH、SIZE、OFFSET、SEG等。

数值回送操作符把一些特征或存储器地址的一部分作为数值回送。

汇编语言的基本语法

·TYPE

格式为:TYPE表达式

如果表达式是变量,则汇编程序将回送该变量的以字节数表示的类型:DB为1,DW为2,DD为4,DF为6,DQ为8,DT为10。如果表达式是标号,则汇编程序将回送代表该标号类型的数值:NEAR为-1,FAR为-2。如果表达式为常数,则应回送0。

汇编语言的基本语法举例:

ARRAYDW1,2,3

则对于指令ADDSI,TYPEARRAY

汇编程序将其形成为:

ADDSI,2

汇编语言的基本语法·LENGTH

格式为:LENGTH变量

对于变量中使用DUP的情况,汇编程序将回送分配给该变量的单元数,而对于其他情况则送1。

汇编语言的基本语法举例1:

FEESDW100DUP(0)

对于指令MOVCX,LENGTHFEES

汇编程序将使其形成为:

MOVCX,100举例2:

ARRAYDW1,2,3

对于指令MOVCX,LENGTHARRAY

汇编程序将使其形成为:

MOVCX,1

汇编语言的基本语法举例3:

TABLEDB‘ABCD’

对于指令MOVCX,LENGTHTABLE

汇编程序将使其形成为:

MOVCX,1

汇编语言的基本语法·SIZE

格式为:SIZE变量

汇编程序应回送分配给该变量的字节数。但是,此值是LENGTH值和TYPE值的乘积。

汇编语言的基本语法例如:

MOVCX,SIZEFEES

将形成为MOVCX,200

又例如:

MOVCX,SIZEARRAY

将形成为MOVCX,2

又例如:

MOVCX,SIZETABLE

将形成为MOVCX,1。

汇编语言的基本语法·OFFSET

格式为:OFFSET变量或标号

汇编程序将回送变量或标号的偏移地址值。

举例:

MOVBX,OFFSETOPER_ONE

汇编程序将OPER_ONE的偏移地址作为立即数回送给指令,而在执行时则将该偏移地址装入BX寄存器中。所以这条指令的功能与指令

LEABX,OPER_ONE

是等价的。

汇编语言的基本语法·SEG

格式为:SEG变量或标号

汇编程序将回送变量或标号的段地址值。

举例:如果DATA_SEG是从存储器的05000H地址开始的一个数据段的段名,OPER1是该段中的一个变量名,则

MOVBX,SEGOPER1

将把0500H作为立即数插入指令。实际上,由于段地址是由连接程序分配的,所以该立即数是连接时插入的。执行期间则使BX寄存器的内容成为0500H。

汇编语言的基本语法·PTR

格式为:类型PTR符号地址

PTR用来给已分配的存储地址(用符号地址表示)赋予另一种属性,使该地址具有另一种类型。

类型可有BYTE、WORD、DWORD、FWORD、QWORD、TBYTE、NEAR和FAR等几种,所以PTR也可以用来建立字、双字、四字或段内及段间的指令单元等。

汇编语言的基本语法举例:已有数据定义如下:TWO_BYTEDW?

可以用以下语句对这两个字节赋予另一种类型定义:

ONE_BYTEEQUBYTEPTRTWO_BYTE

这里ONE_BYTE和TWO_BYTE两个符号地址具有相同的段地址和偏移地址,但是它们的类型属性不同,前者为1,后者为2。

汇编语言的基本语法此外,有时指令要求使用PTR操作符。例如用

MOV[BX],5

指令把立即数存入BX寄存器内容指定的存储单元中,但汇编程序不能分清是存入字单元还是字节单元,此时必须用PTR操作符来说明属性,应该写明:

MOVBYTEPTR[BX],5

或MOVWORDPTR[BX],5

汇编语言的基本语法·段操作符

段操作符用来表示一个标量、变量或地址表达式的段属性。

格式为:

段寄存器∶地址表达式

段名∶地址表达式

例如,用段前缀指定某段的地址操作数

MOVAX,ES:[BX+SI]

汇编语言的基本语法·SHORT

用来修饰JMP指令中转向地址的属性,指出转向地址是在下一条指令地址的±127个字节范围之内。

例如:JMPSHORTTAG;转移属性为短转移

.

.

.

TAG:

MOV...

汇编语言的基本语法·THIS

格式为:THIS属性或类型

THIS可以象PTR一样建立一个指定类型(BYTE、WORD、DWORD)或指定距离(NEAR或FAR)的地址操作数。该操作数的段地址和偏移地址与下一个存储单元地址相同。

汇编语言的基本语法

例如:FIRST_TYPEEQUTHISBYTE

WORD_TABLEDW100DUP(?)

此时FIRST_TYPE的偏移地址和WORD_TABLE完全相同,但它是字节类型的;而WORD_TABLE则是字类型的。

又如:STARTEQUTHISFAR

MOV

CX,100

这样,MOV指令有一个FAR属性的符号地址START,这就允许其他段的JMP指令直接跳转到START来。

汇编语言的基本语法·HIGH和LOW

称为字节分离操作符,它接收一个数或地址表达式,HIGH取其高位字节,LOW取其低位字节。

例如:

CONSTEQU0ABCDH

则MOVAH,HIGHCONST

将汇编成MOVAH,0ABH

指令MOVAH,LOWCONST

将汇编成MOVAH,0CDH

汇编语言的基本语法·操作符的优先级

我们知道表达式是常数、寄存器、标号、变量和操作符的组合,在计算表达式时,应该首先计算优先级高的操作符,然后从左到右地对优先级相同的操作符进行计算。括号也可以改变计算次序,括号内的表达式应优先计算。

汇编语言的基本语法表达式中的运算符

高优先级低1括号中的项,即(…)和[…]2LENGTH,SIZE,WIDTH,MASK3PTR,OFFSET,SEG,TYPE,THIS4×,/,MOD5+,-6EQ,NE,L,LE,GT,GE7NOT8AND9OR,XOR汇编语言的基本语法伪指令(指示性语句)

伪指令又称为伪操作,它是在对源程序汇编期间由汇编程序处理的操作,它们可以完成如定义数据、分配存储区、指示程序结束等功能。

宏指令是由用户按照宏定义格式编写的一段程序,其中语句可以是指令、伪指令,甚至是已定义的宏指令。

汇编语言的基本语法

伪指令和指令的区别在于,每一条指令必须生成机器代码,然后在程序运行期间由CPU来执行其操作;而伪指令是在汇编期间由汇编程序执行的操作命令,除了数据定义及存储器分配伪指令分配存储器空间外,其它伪指令不生成目标码。和各种指令一样,伪指令也是程序设计不可缺少的工具。下面介绍一些常用的伪指令。汇编语言的基本语法段定义伪指令

段定义伪指令是表示一个段开始和结束的命令。段名SEGMENT

段名ENDS

汇编语言的基本语法

段名由用户命名。对于数据段、附加段和堆栈段来说,段内一般是存储单元的定义、分配等伪指令语句;对于代码段中则主要是指令及伪指令语句。

定义了段还必须说明哪个段是代码段,哪个段是数据段。ASSUME伪指令就是建立段和段寄存器关系的伪指令,其格式为:

ASSUME段寄存器名:段名,…

段寄存器名必须是CS、DS、ES和SS中的一个,而段名必须是由SEGMENT定义的段名。

汇编语言的基本语法

;***********************

data_seg1segment

;定义数据段

data_seg1ends

;***********************

data_seg2segment

;定义附加段

data_seg2ends

;***********************汇编语言的基本语法code_segsegment

;定义代码段

assumecs:code_seg,ds:data_seg1,es:data_seg2start:

;程序执行的起始地址

;setDSregistertocurrentdatasegment

mov

ax,data_seg1

;数据段地址

mov

ds,ax

;存入DS寄存器

;setESregistertocurrentextrasegment

mov

ax,data_seg2

;附加段地址

mov

es,ax

;存入ES寄存器

.

.

code_segends

;代码段结束

;**************************

end

start

汇编语言的基本语法

由于ASSUME伪指令只是指定某个段分配给哪一个段寄存器,它并不能把段地址装入段寄存器中,所以在代码段中,还必须把段地址装入相应的段寄存器中:

MOV

AX,DATA_SEG1

;数据段地址

MOV

DS,AX

;存入DS寄存器

MOV

AX,DATA_SEG2

;附加段地址

MOV

ES,AX

;存入ES寄存器

汇编语言的基本语法如果程序中还定义了堆栈段STACK_SEG,也需要把段地址装入SS中:

MOV

AX,STACK_SEG

;堆栈段地址

MOV

SS,AX

;存入ES寄存器

汇编语言的基本语法

注意,在程序中不需要用指令装入代码段的段地址,因为在程序初始化时,装入程序已将代码段的段地址装入CS寄存器了。

汇编语言的基本语法程序开始和结束伪指令

在程序的开始可以用NAME或TITLE作为模块的名字,其格式为:

NAME模块名

TITLE文件名

表示源程序结束的伪指令的格式为:

END

[标号]汇编语言的基本语法

注意:NAME及TITLE伪指令并不是必需的,如果程序中既无NAME又无TITLE伪指令,则将用源文件名作为模块名。

END伪指令中的“标号”指示程序开始执行的起始地址。如果多个程序模块相连接,则只有主程序的END要加上标号,其他子程序模块则只用END而不必指定标号。上例最后使用了ENDSTART伪指令。汇编程序将在遇END时结束汇编,并且程序在运行时从START开始执行。汇编语言的基本语法数据定义及存储器分配伪指令

8086提供了各种数据及存储器分配伪指令,这些伪指令在汇编程序对源程序进行汇编期间,由汇编程序完成数据类型定义及存储器分配等功能。

数据定义及存储器分配伪指令的格式是:[变量]助记符操作数[,…,操作数][;注释]

汇编语言的基本语法

数据定义及存储器分配伪指令格式中的"变量"是操作数的符号地址,它是可有可无的,它的作用与指令语句前的标号相同,区别是变量后面不加冒号。如果语句中有变量,那么汇编程序将操作数的第一个字节的偏移地址赋于这个变量。

"注释"字段用来说明该伪指令的功能,它也不是必须有的。

"助记符"字段说明所用伪指令的助记符。

汇编语言的基本语法

下面介绍常用的数据定义伪指令。

DB(definebyte)

DB伪指令用来定义字节,对其后的每个数据都存储在一个字节中。DB能定义十进制数、二进制数、十六进制数和ASCII字符,二进制数和十六进制数要分别用"B"和"H"表示,ASCII字符用单引号('')括起来。DB还是唯一能定义字符串的伪操作,串中的每个字符占用一个字节。

汇编语言的基本语法

请看下面数据定义的例子,注意DB定义的每个数据的存储情况,左边第一列是汇编程序为数据分配的字节地址,第二列是相应地址中存储的数据或ASCII字符(均用十六进制表示)。变量DATA7定义了3个数据和一个字符串,每个数据或串用","分开,它们分别存储在偏移地址002E开始的6个字节单元中。

汇编语言的基本语法0000

19

DATA1

DB

25

;十进制数0001

89

DATA2

DB

10001001B

;二进制数0002

12

DATA3

DB

12H

;十六进制数0010

ORG

0010H

;指定偏移地址为10h0010

32353931

DATA4

DB‘2591’

;ASCII码数0018

ORG

0018H

;指定偏移地址为18h0018

00

DATA5

DB?;保留一个字节0020

ORG

0020H

;指定偏移地址为20h0020

4D79206E616D

DATA6

DB

'MynameisJoe';ASCII码字符

65206973204A

6F65002E

0A1002313042

DATA7

DB

10,10H,10B,'10B';不同的数据类型汇编语言的基本语法

DW(defineword)

DW伪指令用来定义字,对其后的每个数据分配2个字节(1个字),数据的低8位存储在低字节地址中,高8位存储在高字节地址中,如下例中的变量DATA8的数据存储在0070字地址中,其中0070字节存储0BAH,0071字节存储03H。DW还可存储变量或标号的偏移地址。见下面DW伪指令的例子。

汇编语言的基本语法汇编语言的基本语法

DD(definedoubleword)

DD伪指令用来定义双字,对其后的每个数据分配4个字节(2个字)。该伪指令同样将数据转换为十六进制,并根据低地址存储低字节,高地址存储高字节的规则来存放数据。如下例DATA15的存储情况是:00A8:0F2H,00A9H:57H,00AAH:2AH,00ABH:5CH。

用DD存入地址时,第一个字为偏移地址,第二个字为段地址。

汇编语言的基本语法汇编语言的基本语法

DQ(definequadword)

DQ伪指令用来定义4字,即64位字长的数据,DQ之后的每个数据占用8个字节(4个字)。

DT(definetenbytes)

DT伪指令用来为压缩的BCD数据分配存储单元,它虽然可以分配10个字节(5个字),但最多只能输入18个数字,要注意的是,数据后面不需要加“H”。下面是DQ和DT的例子。

汇编语言的基本语法汇编语言的基本语法

DUP(duplicate)

DUP伪指令可以按照给定的次数来复制某个(某些)操作数,它可以避免多次键入同样一个数据。例如,把6个FFH存入相继字节中,可以用下面两种方法,显然用DUP的方法更简便些。

存入6字节的FFH

DATA20DB0FFH0FFH0FFH0FFH0FFH0FFH;

DATA21DB6DUP(0FFH)

汇编语言的基本语法

DUP操作一般用来保留数据区,如用数据定义伪指令"DB64DUP(?)"可保留64个字节单元。DUP还可以嵌套。

汇编语言的基本语法表达式赋值伪操作EQU

有时程序中多次出现同一个表达式,为方便起见可以用赋植伪操作给表达式赋予一个名字,其格式如下:

Expresstion_nameEQUExpresstion

此后,程序中凡需要用到该表达式之处就可以用表达式名来代替。上式中表达式可以是任何有效的操作数格式,可以是任何可以求出常数值的表达式,也可以是任何有效的助记符。

汇编语言的基本语法EQU是一个赋值伪操作(伪指令),它给一个数据标号赋于一个常数值,但这个常数不占用存储单元。当这个数据标号出现在程序中时,汇编程序即用它的常数值代替数据标号。EQU可以在数据段之外使用,甚至可用在代码段中间。

汇编语言的基本语法

假定在数据段和代码段中要多次使用一个数据(如25),那么在编程时凡是用到25的地方都可用数据标号COUNT来表示。如果程序想修改这个数据,那么只需修改EQU的赋值,而无须修改程序中其它部分,如COUNTER和MOV语句就不必修改。

COUNT

EQU25COUNTER

DB

COUNT

MOV

AL,

COUNT

汇编语言的基本语法DATA

EQUHEIGHT+12

;地址表达式赋以符号ALPHA

EQU7

;常数赋以符号名BETA

EQUALPHA-2

;把7-2=5赋以符号名BETAADDR

EQUVAR+BETA

;VAR+5赋以符号名ADDRB

EQU[BP+8]

;变址引用赋以符号名BP8

EQUDS:[BP+8];加段前缀的变址引用赋以符号名P8

汇编语言的基本语法注意:在EQU语句的表达式中,如果有变量或标号的表达式,则在该语句前应该先给出它们的定义。如上例,ALPHA必须在BETA之前定义,否则汇编程序将指示出错。

汇编语言的基本语法=伪操作

赋值伪操作"="的作用与EQU类似。它们之间的区别是,EQU伪操作中的标号名是不允许重复定义的,而=伪操作是允许重复定义的。

汇编语言的基本语法例如,TMP

EQU5

TMP

EQUTMP+1

则是错误语句,因为TMP已赋值为5,就不能再把它定义为其它数值。

而TMP=5

TMP=TMP+1

则是允许使用的,因为=伪操作允许重复定义。第一个语句TMP的值为5,第二个语句TMP的值就为6了。

汇编语言的基本语法地址计数器与对准伪指令

1.地址计数器$

在汇编程序对源程序汇编的过程中,使用地址计数器来保存当前正在汇编的指令的地址。地址计数器的值在汇编语言中可用$来表示。

当$用在伪指令的参数字段时,它所表示的是地

温馨提示

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

评论

0/150

提交评论