单片机原理及应用 蔡启仲 第3章 51单片机指令系统_第1页
单片机原理及应用 蔡启仲 第3章 51单片机指令系统_第2页
单片机原理及应用 蔡启仲 第3章 51单片机指令系统_第3页
单片机原理及应用 蔡启仲 第3章 51单片机指令系统_第4页
单片机原理及应用 蔡启仲 第3章 51单片机指令系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

第3章51单片机的指令系统

单片机原理及应用2第3章

目录内容简介3.151单片机的汇编指令

3.1.1一个简单的程序示例

3.1.2指令格式

3.1.3指令类型

3.1.4常用符号说明3.251单片机指令的寻址方式3.351单片机的指令集

3.3.1数据传送类指令

3.3.2算术运算指令

3.3.3逻辑运算及移位类指令

3.3.4控制转移类指令

3.3.5位操作类指令习题内容简介

本节介绍51单片机的指令系统。重点介绍指令格式,常用符号,寻址方式,指令的分类,每条指令的功能。要求掌握指令的功能分类,每条指令属于何种指令功能的类别,每条指令操作数的寻址方式。能够区分字节指令和位指令。43.151单片机的汇编指令例3–1

将内部RAM中的20H和30H单元的无符号数相加,结果存入R0(高位)和R1(低位)中。图3–1程序流程图3.1.1一个简单的程序示例5

按照图3–1编写汇编程序源代码如下:

ORG 0000H;ORG为伪指令,程序从0000H开始执行 LJMP MAIN;长跳转指令,跳到标号MAIN处执行ORG0030H;主程序起始地址0030HMAIN: MOV A,20H;20H单元中的内容送至累加器A中 CLR C;清进位位CyADD A,30H;30H中的内容与累加器A的内容相加,;结果存放在累加器A中 MOV R1,A;将累加器A中的内容传送给寄存器R1 CLR A;清累加器A ADDCA,#00;带进位加法指令 MOV R0,A;将累加器A的内容传送给R0 SJMP $;相对转移指令,$是当前行指令的地址 END;结束,伪指令6指令的表示方法就是指令格式。51单片机指令主要由操作码(指令助记符)字段和操作数字段组成。

指令格式:操作码[操作数1][,操作数2][,操作数3]

程序是指令的有序结合,指令在汇编程序中可以增加标号字段和注释字段,其格式如下:[标号:]操作码[操作数1][,操作数2][,操作数3][;注释]3.1.2指令格式73.1.3指令类型51单片机汇编语言有42种操作码(参见附录A),用来描述33种操作功能。操作码与寻址方式组合可得到111条指令。(1)

按指令所占字节数分类,共有单字节指令(49条)、双字

节指令(45条)和三字节指令(17条)。(2)

按指令执行时间分类,共有单周期指令(64条)、双周期指令(45条)和四周期指令(2条:乘法指令和除法指令)。(3)

按功能分类,51单片机指令系统可分为:数据传送类指令(29条)、算术运算类指令(24条)、逻辑运算类指令(24条)、控制转移类指令(17条)、位操作类指令(17条)。83.1.4常用符号说明符号含义Rn当前选定寄存器组的寄存器Rn,n=0~7Ri作为间接寻址的地址指针Ri,i=0或1#data8位立即数,8位立即数的数据范围:00H~FFH#data1616位立即数,16位立即数的数据范围:0000H~FFFFHaddr1616位地址,可表示64KB范围内的地址单元的寻址,用于LCALL和LJMP指令中addr1111位地址,2KB范围寻址,用于ACALL和AJMP指令,16位地址指针寄存器DPTR的数据传输指令中direct8位直接地址,可以是片内RAM区的某一单元或某一特殊功能寄存器的地址rel带符号的8位地址偏移量,rel地址偏移量的范围:–128~+127,用于SJMP和条件转移指令中bit位单元的8位地址,位寻址区的直接寻址位,表示片内RAM中可寻址位和SFR中可寻址位的位单元的内容只有“0”和“1”两种状态,作为源操作数在注释和说明时不加括号(X)X是一个地址,(X)是X地址单元中的内容。(X)只用于对指令的注释和说明((X))X是一个地址,X地址单元中的内容作为地址指针,即(X)仍然是一个地址,((X))是(X)地址指针所指向的地址单元中的内容。((X))只用于对指令的注释和说明→按箭头指示方向传送内容,主要用于对指令的注释和说明$当前指令所在地址,用于无条件转移指令中/在位单元之前,表示该位状态取反参与操作,但位单元本身状态不变,用于位操作指令中@间接寻址寄存器或基址寄存器的前缀,用于寄存器间接寻址和基址+变址寻址方式的指令中951单片机指令的操作数寻址方式主要有7种,分别为直接寻址、立即寻址、寄存器寻址、寄存器间接寻址、基址+变址寻址、位寻址、相对寻址。3.251单片机指令的寻址方式

1.直接寻址

直接寻址方式:指令中的源操作数是操作数的单元地址,该单元地址指出了参与运算或传送的数据所在的字节单元地址或位单元地址。

例如,已知(30H)=FFH,执行指令:MOVA,30H ;A←(30H),执行结果:(A)=FFH10

2.立即寻址

立即寻址方式:指令中含有立即数,立即数作为源操作数,即指令中的立即数以指令操作数的形式存放于程序存储器中,为了与直接寻址指令中的直接地址相区别,需要在操作数前面加前缀标志“#”;当立即数是以字母开头的数时,前面必须加0,如#0FEH。

例如,执行指令:MOV A,#0FEH;A←FEH,A为目的操作数,A中的内容为FEHMOV DPTR,#8000H;DPTR←8000H,DPTR中的内容为8000H11

3.寄存器寻址

寄存器寻址方式:指令中的源操作数是寄存器,源操作数的内容存放在寄存器内。寄存器寻址一般用于访问选定的通用寄存器R0~R7,以及A、B和DPTR。源操作数和目的操作数均为寄存器寻址方式的指令都是单字节指令。

例如,执行指令:MOVA,R0 ;A←(R0),指令中的R0为源操作数,A为目的操作数INCR0;(R0)+1→R0,指令中的R0是源操作数,也是目的操作数MOVA,30H;A←(30H),指令中的30H为源操作数,A为目的操作数12

4.寄存器间接寻址

寄存器间接寻址:指令中的某一个寄存器的内容作为操作数地址的寻址方式,即寄存器的内容作为地址指针,操作数的单元地址是通过寄存器间接得到。

寄存器间接寻址方式中,必须在寄存器的名称前面加前缀标志“@”。访问内部RAM或外部数据存储器和其它扩展部件的低256个字节时,只能采用R0或R1作为间接寻址寄存器;访问外部扩展的64K单元地址空间和程序存储器采用DPTR作为间接寻址寄存器。

例3–2

已知R0中存放片内RAM地址65H,数据指针DPTR中存放片外RAM地址8000H,地址65H单元中的数据为30H,8000H单元中的数据为59H,执行指令:MOVA,@R0;A←((R0)),执行指令:(A)=30H,@R0为源操作数MOVXA,@DPTR;A←((DPTR)),执行指令:(A)=59H13寄存器间接寻址的寻址范围如下:51单片机片内RAM的低128B单元,52单片机片内RAM的256B单元,应

用R0和R1作为间接寻址寄存器。(2)

片外扩展的64KB单元地址空间:使用DPTR作为间接寻址寄存器。如果P2口输出的高8位地址值是一个确定地址值,也可以使用R0和R1作为间接寻址寄存器。例3–3

已知片外RAM的0118H中的内容为58H,执行指令:MOVP2,#01H;设置51单片机地址总线的高8位地址为01HMOVR0,#18H;设置51单片机地址总线的低8位地址为18HMOVXA,@R0;A←((R0)+0100H)=(0118H),(A)=58H(3)

程序存储器:使用DPTR作为间接寻址寄存器。(4)

片外扩展的低256B单元地址空间:可以使用DPTR、R0和R1作为间接寻址寄存器;或只扩展256B单元,使用R0和R1作为间接寻址寄存器。(5)

堆栈区:以堆栈指针SP作为间接寻址寄存器。14

5.基址+变址寻址方式

基址+变址寻址方式:指令中有操作数@A+PC或@A+DPTR,程序计数器PC或数据指针DPTR作为基址寄存器,累加器A作为变址寄存器,基址寄存器和变址寄存器的内容相加形成读取程序存储器数据的16位地址,用于访问程序存储器中的数据表格。

例3–4

执行指令:MOVCA,@A+PC ;((A)+(PC))→A,@A+PC为源操作数MOVCA,@A+DPTR ;((A)+(DPTR))→A,@A+DPTR为源操作数15

6.位寻址51单片机有一个布尔处理机,可以对8位字节中的位单元进行操作。位寻址方式:对位单元的寻址。

除了位判断转移指令外,位操作指令的源操作数和目的操作数都是位单元。

例3–5

执行指令:MOVC,40H;该指令的功能是把40H位单元中的状态送进位位CySETBTR0;该指令的功能是把TR0位单元中的状态置为“1”状态

位寻址的寻址范围如下。

(1)

片内RAM中的位寻址区。位单元地址范围:00H~7FH(2)

可位寻址的特殊功能寄存器。可以直接使用位单元的符号,比如第2条

指令中的TR0,参见第2章表2–7的特殊功能寄存器中的位单元地址分

布。167.相对寻址

相对寻址用于访问程序存储器,只出现在转移指令中。以PC的当前值加上指令中给出的相对偏移量(rel)形成转移地址。其中,rel是一个带符号的8位二进制数,以补码形式置于操作码之后存放。程序的转移范围以PC当前值为中心,介于–128~+127之间。

例如,执行指令: JCrel

设rel=85H,Cy=1,这是一条以Cy状态为条件的转移指令,指令为两字节指令,CPU取出第二个字节时,PC当前值为原PC值加2。由于Cy=1,程序转向(PC)+2+rel程序存储器的目的地址单元去执行。注意,此时rel=85H为负值。17

按照指令的功能分类,51单片机指令系统的111条指令分为数据传送类指令、算术运算类指令、逻辑运算类指令、控制转移类指令、位操作类指令。3.351单片机的指令集3.3.1数据传送类指令

数据传输类指令又可分为:单片机内部数据的传送指令;

累加器A与片外RAM或外部扩展接口部件的数据传送指令;

查表指令。

18

1.内部数据的传送指令

(1)

以累加器A为目的操作数的指令,即累加器A为目的地址单元3.3.1数据传送类指令例3–6

将立即数35H送入片内30H单元,可执行以下指令:MOVA,#35H;累加器A为目的地址单元,35H→AMOVR0,#30H;R0为目的地址单元,30H→R0MOV@R0,A;@R0为目的地址单元,(R0)=30H,(30H)→A

也可执行以下这一条指令达到目的:MOV30H,#35H;35H→30H

(2)

以寄存器Rn为目的操作数的指令

例3–7若(A)=20H,(20H)=F0H,执行以下指令:MOVR0,A ;(R0)=20HMOVR0,20H ;(R0)=F0HMOVR6,#0A5H ;(R6)=A5H19(3)

以直接地址为目的操作数的指令例3–8设66H单元中的内容为EAH,执行下面指令:MOV36H,#66H ;66H→36H,(36H)=66HMOVR1,36H;(36H)→R1,(R1)=66HMOV7EH,@R1 ;((R1))→7EH,(7EH)=(66H)=EAHMOV38H,7EH ;(7EH)→38H,(38H)=(7EH)=EAH(4)以寄存器间接地址为目的操作数的指令例3–9若(A)=20H,(R0)=42H,(32H)=46H,(42H)=52H,执行以下指令:MOV@R0,A ;((R0))=(42H)=(A)=20H,42H单元的内容被刷新MOV@R0,32H;((R0))=(42H)=(32H)=46H,42H单元的内容被刷新MOV@R0,#0D5H ;((R0))=(42H)=D5H,42H单元的内容被刷新3.3.1数据传送类指令20

(5)

16位数据传送指令MOVDPTR,#data16;立即寻址,16位地址值data16→DPTR ;16位地址值高8位送DPH,低8位送DPL这是51单片机中唯一的一条16位数据传送指令。例3–10执行指令: MOVDPTR,#1234H;DPH←12H,DPL←34H,(DPTR)=1234H

(6)堆栈操作指令PUSH、POP

堆栈操作:通过堆栈指针SP来实现,分为入栈操作和出栈操作,先进后出。51单片机开机或复位后(SP)=07,一般需要重新设定SP的初始值,

SP的内容:栈顶的位置(地址)。

两条堆栈指令:进栈指令;出栈指令。21

例3–11

已知(A)=10H,(B)=40H,执行指令: MOVSP,#30H ;设置堆栈指针初值:(SP)=30H, PUSHACC;①SP←(SP)+1,(SP)=31H;②((SP))=(31H)=(A)=10H PUSHB ;①SP←(SP)+1,(SP)=32H;②((SP))=(32H)=(B)=40H POP ACC ;①(SP)=(32H)=40H→A;②(SP)=(SP)–1,(SP)=31HPOP B ;①(SP)=(31H)=10H→B;②(SP)=(SP)–1,(SP)=30H

22(7)

字节交换指令和半字节交换指令例3–12已知(A)=80H,(R0)=28H,(28H)=36H,执行指令: XCHA,@R0;((R0))↔(A),(R0)=28H,28H单元和A互相交换数据;使得(A)=36H,((Ri))=(28H)=80H SWAPA;(A[D3~D0])↔(A[D7~D4]),使得(A)=63H例3–13已知(A)=80H,(R0)=08H,(08H)=36H,执行指令:XCHDA,@R0;((R0))=(08H)=36H的低4位与(A)=80H的低4位交换,;使得(08H)=30H,(A)=86HSWAPA ;(A)=86H的高半字节8和低半字节6交换,使得(A)=68H23

51单片机应用系统扩展的片外RAM和外部接口部件只能够通过累加器A进行数据传输,而不能够与51单片机内部RAM、其它特殊功能寄存器直接进行数据传输。例3–14已知(DPTR)=2000H,(2000H)=10H,执行指令:MOVXA,@DPTR;A←((DPTR))=(2000H),(A)=10H例3–15已知(P2)=20H,(R1)=48H,(A)=60H,执行指令:MOVX@R1,A ;(R1)+2000H←(A),则片外(2048H)=60H2.累加器A与片外RAM或外部扩展接口部件的数据传送指令24只有两条查表指令,均采用基址+变址寻址方式,单字节指令,用于读取程序存储器中的数据。

例3–16

设(A)=30H,执行指令:

MOVCA,@A+PC

若该指令的单元地址为1000H,则下一条指令单元的地址为1001H,执行该条指令将(A)+(PC)=1031H作为地址指向程序存储器,将程序存储器1031H单元的内容→累加器A。

例3–17

设(DPTR)=8200H,(A)=30H,执行指令:

MOVCA,@A+DPTR

;(A)+(DPTR)=8230H,将程序存储器的(8230H)→A

建议同学们首选查表指令:MOVCA,@A+DPTR;

DPTR:表格的首地址;

累加器A:变址3.查表指令

25

算术运算指令:加、减、乘、除法指令,以及加1和减1指令,共有24条指令。大多数指令都以累加器A作为一个源操作数和目的操作数,另一个源操作数可以存放于任何一个工作寄存器Rn或片内RAM单元中,也可以是一个立即数,运算结果存放在目的操作数累加器A中。3.3.2算术运算指令

261.加法指令(1)不带进位的加法指令例3–18设(A)=45H,(R0)=20H,(20H)=ADH,执行指令: ADDA,@R0;,结果:(A)=F2H,Cy=0,AC=1,OV=0,P=1(2)

带进位的加法指令例3–19设(A)=85H,(20H)=FFH,Cy=1,执行指令: ADDCA,20H;10000101+11111111+1=[1]10000101,产生进位1结果:(A)=85H,Cy=1,AC=1,OV=0,P=127

(3)

加1指令

例3–20设(A)=FFH,(R3)=0FH,(30H)=E2H,(R0)=40H,(40H)=AAH,

执行指令:

INC A;FFH+1→A,(A)=00H,PSW的P状态设置为0

INC R3;0FH+1→R3,(R3)=10H,PSW状态不变

INC@R0;((R0))=(40H),AAH+1→40H,(40H)=ABH,PSW状态不变

(4)十进制调整指令

计算机的运算以二进制为基础,对于十进制BCD码相加应用ADD和ADDC指令的运算结果都是二进制数,要得到正确的十进制数运算结果,就必须应用十进制调整指令。

DA A;十进制调整指令,必须应用在ADD或ADDC指令的后面

十进制调整指令执行后,程序状态字(PSW)中的进位标志位(Cy)表示结果的百位值。28

例3–21(A)=56H,(30H)=77H,编程实现BCD码56+77的运算。执行指令:

ADDA,30H;(A)+(30H)=56H+77H=CDH

DAA;个位数为DH,DH+6=3,进位1

;十位数为CH,CH+6+1=3,进位1→Cy

MOVR0,A ;把和的低字节的十位数和个位数存入R0

CLRA;0→A

ADDCA,#00 ;百位数:0+Cy→A

MOVR1,A ;和的高字节的百位数存入R1

运算结果为133,并将其十进制BCD码存放在R1R0中,R1为01H,R0为33H29

(1)

减法指令

减法指令:只有带借位的减法指令。在进行减法操作时,如果运算结果产生借位,Cy置1,无借位清0;如果D3位需借位,则将辅助进位标志位AC置1,否则将AC清0;如果D7需借位而D6位不借位或D6位借位而D7位不借位,则将溢出标志位OV置1,否则清0;奇偶标志位P随着累加器A中1的个数而变化。

例3–22

设(A)=76H,立即数为C5H,Cy=0,执行指令:

SUBB A,#0C5H;

结果:(A)=B1H,Cy=1,AC=0,OV=1,P=02.减法指令30(2)

减1指令例3–23

设(A)=0EH,(30H)=00H,(R1)=70H,(70H)=FFH。执行指令:

DECA ;A←(A)–1,(A)=0DH,P=1,不影响其它标志

DEC30H;30H←(30H)–1,(30H)=FFH,PSW状态不变

DEC@R1;(R1)←((R1))–1,(70H)=FEH,PSW状态不变31

乘法和除法指令:只能够对两个8位无符号数进行乘法和除法运算。MULAB这条指令对Cy、OV和P三个标志位产生影响。如果乘积大于255(FFH),溢出标志OV置1,否则OV清0。进位标志Cy总是清0,P随着A中1的个数而变化。例3–24设(A)=4EH,(B)=5DH,执行指令:MULAB;运算结果:(B)=1CH,(A)=56H,即乘积结果(BA)=1C56H执行DIVAB这条指令之前,如果原来B中的内容为0,即除数为0,执行结果A和B中的内容不定,并将溢出标志OV置1,在其它情况下,OV被复位为0,表示除法操作是合理的。进位标志Cy总是清0。

例3–25设(A)=BFH,(B)=32H,执行指令:DIVAB;运算结果:(A)=03H,(B)=29H,Cy=0,OV=03.乘法和除法指令32

逻辑运算指令:两个8位二进制数按位进行与、或、异或的逻辑运算,以及对累加器A的内容清0和按位取反操作。

移位类指令:累加器A的循环移位操作,包括左移一位、右移一位,以及带进位标志位与不带进位标志位移位的方式。两类指令共有24条。3.3.3逻辑运算及移位类指令331.逻辑与指令ANL指令助记符操作说明指令助记符操作说明指令助记符操作说明ANLA,RnA←(A)∧(Rn)ANLA,directA←(A)∧(direct)ANLA,@RiA←(A)∧((Ri))ANLA,#dataA←(A)∧dataANLdirect,Adirect←(direct)∧(A)ANLdirect,#datadirect←(direct)∧data2.逻辑或指令ORL指令助记符操作说明指令助记符操作说明指令助记符操作说明ORLA,RnA←(A)∨(Rn)ORLA,directA←(A)∨(direct)ORLA,@RiA←(A)∨((Ri))ORLA,#dataA←(A)∨dataORLdirect,Adirect←(direct)∨(A)ORLdirect,#datadirect←(direct)∨data3.逻辑异或指令XRL指令助记符操作说明指令助记符操作说明指令助记符操作说明XRLA,RnA←(A)⊕(Rn)XRLA,directA←(A)⊕(direct)XRLA,@RiA←(A)⊕((Ri))XRLA,#dataA←(A)⊕dataXRLdirect,Adirect←(direct)⊕(A)XRLdirect,#datadirect←(direct)⊕data34

在使用中,逻辑与:实现对指定位清0,其余位不变;

逻辑或:实现对指定位置1,其余位不变;

逻辑异或:实现指定位取反,其余位不变。

例3–29

根据要求写指令(1)

对累加器A的D1、D3、D5位清0,其余位不变:ANLA,#0D5H;D5H=11010101,D1、D3、D5位为0(2)

对累加器A中的D2、D4、D6位置1,其余位不变:ORA,#54H;54H=01010100,D2、D4、D6位为1(3)

对累加器A中的D0、D1位取反,其余位不变:XRLA,#03H;03H=00000011,D0、D1位为1354.清零和求反指令

51单片机只有清零指令CLRA和求反指令CPLA是字节指令,其它清零和求反指令都是位操作指令。

例3–30

对R0中的内容取反:

MOVA,R0CPL AMOVR0,A5.循环移位指令(a)RLA(b)RRA(c)RLCA(d)RRCA36

控制转移类指令:主要用于循环结构和分支结构程序,共有17条指令,包括无条件转移指令、条件转移指令、子程序调用和返回指令,以及空操作指令。

执行控制转移类指令将修改程序计数器PC的值,使程序从PC新指向的程序存储器地址存储单元开始执行程序,即实现了程序的转移。3.3.4控制转移类指令1.无条件转移指令指令助记符操作说明指令助记符操作说明LJMPaddr16PC←addr16AJMPaddr11PC[D10~D0]←addr11SJMPrelPC←PC+2+relJMP@A+DPTRPC←(A)+(DPTR)2.条件转移指令

条件转移指令是指当条件满足时,程序转移到指定的目的地址;条件不满足时,程序将顺序执行。在51单片机中,条件转移指令有3种:对累加器A判0或判非0条件转移指令、比较转移指令,以及减1不为0转移指令。37(1)对累加器A判0和判非0条件转移指令指令助记符操作说明指令助记符操作说明JZrel若A=0,则转移,否则,顺序执行JNZrel若A≠0,则转移,否则,顺序执行(2)比较不相等转移指令指令助记符操作说明CJNEA,direct,rel若(A)=(direct),顺序执行,否则转移;如果(A)>(direct),Cy←0;否则,Cy←1CJNEA,#data,rel若(A)=data,顺序执行,否则转移;如果(A)>data,Cy←0;如果(A)<data,Cy←1CJNERn,#data,rel若(Rn)=data,顺序执行,否则转移;如果(Rn)>data,Cy←0;如果(Rn)<data,Cy←1CJNE@Ri,#data,rel若((Ri))=data,顺序执行,否则转移;如果((Ri))>data,Cy←0;否则,Cy←1(3)减1不为0转移指令指令助记符操作说明DJNZRn,rel若(Rn)–1=0,则顺序执行;如果(Rn)–1≠0,则转移DJNZdirect,rel若(direct)–1=0,则顺序执行;如果(direct)–1≠0,则转移383.子程序调用与返回指令指令助记符操作说明LCALLaddr16将该指令的下一条指令地址压入堆栈,然后PC←addr16,addr16为子程序人口地址ACALLaddr11将该指令的下一条指令地址压入堆栈,然后PC←addr11,PC的高5位(D15~D11)不变RET执行LCALLaddr16或ACALLaddr11指令压入堆栈的16位指令地址出栈→PCRETI将响应中断时压入堆栈的16位指令地址出栈→PC,清内部中断优先级标志4.空操作指令

NOP

该指令经取指、译码后不进行任何操作(空操作),占用一个机器周期的时间。39

位操作指令:进位标志位Cy作为位累加器,位地址可用以下方式表示。(1)

直接用位地址表示方式,如20H、D4H。(2)

采用字节地址加位的方式表示,两者之间用“.

温馨提示

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

评论

0/150

提交评论