单片机讲义第三章_第1页
单片机讲义第三章_第2页
单片机讲义第三章_第3页
单片机讲义第三章_第4页
单片机讲义第三章_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

单片机讲义第三章第1页,课件共88页,创作于2023年2月§3.1指令系统简介指令周期:完成一条指令操作所需要的机器周期数指令长度:指令代码所占字节数指令代码:是程序指令的二进制数表示方法89C51指令系统共有111条指令,分5大类第2页,课件共88页,创作于2023年2月指令系统指令系统42种操作码助记符描述33种操作功能,形成111条指令:49条单字节、46条双字节、16条三字节;64条单周期、45条双周期、2条四周期。

第3页,课件共88页,创作于2023年2月特点1、可以进行直接地址到直接地址的数据传送(不经ACC或Rn)2、用变址寻址方式访问程序存储器中的表格3、在算术运算指令中有乘法和除法4、对一些I/O口进行操作有读-修改-写功能5、有与布尔处理器相对应的位操作指令第4页,课件共88页,创作于2023年2月指令格式一、汇编语言指令格式[标号:]操作码[操作数1][,操作数2][,操作数3][;注释]例:LOOP:MOVA,#40H;A←40H其中操作数1一般为目的操作数。1.标号:指令的符号地址。1~8个字母或数字,并以冒号“:”结尾。2.操作码:指明指令功能。2~5个字母。例如:MOV-传送ANL-逻辑与MUL-乘法RR-右循环RET-子程序返回第5页,课件共88页,创作于2023年2月指令格式3.操作数:指令操作对象数据、地址、寄存器名及约定符号。4.注释行:说明指令在程序中的作用。操作码和操作数是指令主体。第6页,课件共88页,创作于2023年2月编写程序时,应注意以下几个问题:(1)标号标号是语句地址的标志符号。有关标号的规定如下:1、标号由1~8个字母或数字组成,可以使用一个下划线符号“_”。2、第一个字符必须是字母。3、指令助记符或系统中保留使用的字符串不能作为标号。4、标号后面必须跟一个冒号。5、一条语句可以有标号,也可以没有标号。标号的有无取决于本程序中其他语句是否需要访问这条语句。第7页,课件共88页,创作于2023年2月以下是合法的标号 以下是不合法的标号LOOP1: 5LOOP:(第一个字符是数字)START: A*5:(“*”不能在标号中出现)Q4_: ADD:(指令助记符)SSS: START(无冒号)L123: L12345678:(超过8个字符)(2)操作码规定语句执行的操作。操作码是以指令助记符或伪指令助记符表示的。操作码是汇编指令中惟一不能空缺的部分。第8页,课件共88页,创作于2023年2月(3)操作数用于给指令的操作提供数据或地址。在一条指令中,操作数可以为1项、2项或3项,各操作数之间用逗号隔开,操作数也可能空缺。例如:LOOP:INCA ;1项操作数 ADDA,#50H ;2项操作数 CJNEA,#5,LOOP ;3项操作数 RET ;无操作数第9页,课件共88页,创作于2023年2月(4)注释注释不属于语句的功能部分,它只对语句进行解释说明。在程序汇编时注释字段不被汇编,可有可无,只起说明作用。注释内容以“;”开头。注释符在程序调试时可以使某些指令失效,不起作用,以便查找原因。(5)分隔符分隔符用于分割语句的各个部分,以便于区分。冒号“:”用于标号之后;空格用于操作码和操作数之间;逗号“,”用于操作数之间;分号“;”用于注释之前。第10页,课件共88页,创作于2023年2月缩写符号p32缩写符号一定要牢记!会在以后指令的学习中不断加强。第11页,课件共88页,创作于2023年2月§3.2寻址方式寻找操作数的方法叫寻址方式。1、立即寻址2、直接寻址(字节、位)3、寄存器寻址4、寄存器间接寻址5、变址寻址6、相对寻址7、位寻址第12页,课件共88页,创作于2023年2月立即寻址方式指令中给出实际操作数据(立即数),一般用于为寄存器或存储器赋常数初值。“#”之后为立即数举例:8位立即数:MOVA,#40H ;A¬40H16位立即数:MOVDPTR,#2100H;DPTR¬2100H第13页,课件共88页,创作于2023年2月直接寻址方式指令操作数是存储器单元地址,数据在存储器单元中。 MOVA,40H ;A←(40H)例:设存储器两个单元的内容如图所示,执行指令MOVA,40H后A=56H直接寻址方式对数据操作时,地址是固定值,而地址所指定的单元内容为变量形式。41H

78H40H

56H第14页,课件共88页,创作于2023年2月直接寻址访问空间(1)内部RAM低128B(2)SFR访问SFR的唯一方法第15页,课件共88页,创作于2023年2月寄存器寻址方式指令操作数为寄存器名,数据在寄存器中。

例: MOVA,R0 ;A←(R0)

设指令执行前A=20H,R0=40H,

执行指令后,A=40H,R0=40H

能用的寄存器有:R0~R7、A、B、AB和DPTR第16页,课件共88页,创作于2023年2月寄存器间接寻址方式指令的操作数为寄存器名,寄存器中的内容为数据的地址。存放地址的寄存器称为间址寄存器或数据指针。例: MOVA,@R0 ;A←((R0))设指令执行前A=20H,R0=40H,地址为40H存储器单元内容如图所示。执行指令后,A=24H,R0=40H,(40H)=34H

41H 67H

40H34HR0→第17页,课件共88页,创作于2023年2月寄存器间接寻址(1)内部RAM低128B,用R0、R1为间址寄存器(2)外部RAM的两种形式:R0、R1DPTR第18页,课件共88页,创作于2023年2月变址寻址数据在存储器中,指令给出的寄存器中为数据的基地址和偏移量。

数据地址=基地址+偏移量例: MOVCA,@A+DPTR ;A←((A)+(DPTR))设指令执行前A=09H,DPTR=2000H,存储器单元内容如图所示。执行指令后,A=12H

2008H 89H2009H12H第19页,课件共88页,创作于2023年2月相对寻址方式以PC的内容作为基地址,加上偏移量,所得结果送PC寄存器作为转移地址。偏移量在-128~+127之间。只在相对转移指令中使用。例:SJMP 80H ;短跳转

PC当前值+80H为转移地址第20页,课件共88页,创作于2023年2月直接寻址方式之位寻址方式指令给出位地址。一位数据在存储器的位寻址区。例:MOVC,40H ;Cy←(位地址40H)设指令执行前Cy=1,位地址40H存储器单元如图,执行指令后,Cy=028H0110001029H11010111位寻址区第21页,课件共88页,创作于2023年2月位地址的表示方式(1)直接使用位地址(2)使用字节地址加位序号(3)用位名称(4)用寄存器符号加位序号第22页,课件共88页,创作于2023年2月寻址方式小结寻址方式存储器空间立即寻址程序存储器ROM直接寻址片内RAM低128字节和特殊功能寄存器SFR寄存器寻址工作寄存器R0~R7,A,B,AB,DPTR,Cy寄存器间接寻址片内RAM低128字节(@R0,@R1,SP),片外RAM(@R0,@R1,@DPTR)变址寻址程序存储器(@A+PC,@A+DPTR)相对寻址程序存储器当前PC-128B~+127B字节范围(PC+rel)位寻址片内RAM的20H~2FH字节地址中的所有位和SFR中字节地址能被8整除单元的位第23页,课件共88页,创作于2023年2月§3.3数据传送类指令把源操作数传送到目的操作数,指令执行后,源操作数不变,目的操作数修改为源操作数。查表指令的寻址空间第24页,课件共88页,创作于2023年2月数据传送指令理解实现寄存器、存储器之间的数据传送。1、内部传送指令。2、外部传送指令。3、交换指令。4、堆栈操作指令。5、查表指令。注意以下内容中注释后面对指令进行注释的方法以及所用到的缩写符号第25页,课件共88页,创作于2023年2月存贮器结构与数据传送指令MOVC:程序存储器MOV:片内RAMMOVX:片外RAM第26页,课件共88页,创作于2023年2月以累加器A为目的操作数的数据传送指令1)MOVA,#data ;A←data2)MOVA,direct ;A←(direct)3)MOVA,Rn ;A←

(Rn)4)MOVA,@Ri ;A←((Ri))n=0~7i=0,1第27页,课件共88页,创作于2023年2月以寄存器Rn为目的操作数的数据传送指令1)MOVRn,A ;Rn←(A)2)MOVRn,#data ;Rn←data3)MOVRn,direct ;Rn←(direct)n=0~7注意:p36最末一行警示例3-1第28页,课件共88页,创作于2023年2月以直接地址为目的操作数的数据传送指令1)MOVdirect,A ;direct←(A)2)MOVdirect,#data ;direct←data3)MOVdirect1,direct2 ;direct1←(direct2)4)MOVdirect,Rn ;direct←

(Rn)5)MOVdirect,@Ri ;direct←

((Ri))n=0~7i=0,1例3-2第29页,课件共88页,创作于2023年2月以间址@Ri为目的操作数的数据传送指令以Ri间址单元为目的操作数的数据传送指令1)MOV@Ri,A;(Ri)←(A)2)MOV@Ri,#data;(Ri)←data3)MOV@Ri,direct;(Ri)←(direct)i=0,1注意书中例3-3上一行的警示第30页,课件共88页,创作于2023年2月以DPTR为目的操作数的数传送指令16位立即数传送指令MOVDPTR,#data16 ;DPTR←data16唯一的一条16位立即数传送指令例3-4第31页,课件共88页,创作于2023年2月外RAM数据传送指令64K范围:MOVXA,@DPTR ;(A)←((DPTR))MOVX@DPTR,A ;(DPTR)←A256B范围:MOVXA,@Ri ;(A)←((Ri))MOVX@Ri,A ;(Ri)←Ai=0,1注意与P2口的关系。P38例3-5倒数第三行的警示第32页,课件共88页,创作于2023年2月疑难指令详解——数据传输指令外部数据存贮器的操作只有6条指令,注意Ri的取值范围在00~FFH之间。MOVC,bitMOVA,databit,data都是数字,在00~FFH,它们只相差C,A两个符号。MOVXA,@RiMOVX@Ri,A与P0口有关,外部RAM地址范围00~FFH,如果用P2口作为高位地址,外部RAM地址范围为P2+Ri第33页,课件共88页,创作于2023年2月查表指令p39ROM数据传送指令实现从程序存储器读取数据到A累加器,只能使用变址间接寻址方式。多用于查常数表程序,可直接求取常数表中的函数值MOVCA,@A+DPTR;A

←((A)+(DPTR))查表范围为

64KB程序存储器任意空间,称为远程查表指令。MOVCA,@A+PC;A

←((A)+(PC))常数表只能在查表指令后256B范围内。(PC内容为下一条指令的起始地址。)例3-6第34页,课件共88页,创作于2023年2月疑难指令详解——查表指令查表指令只用于程序存贮器的操作。X3X2X1X0:MOVCA,@A+PC用这条指令优点在于与处理较少,且不影响其他SFR的值,缺点是表格只能靠近这条指令安排,在X3X2X1X0(H)以下的00~FFH之中(PC为下条指令首地址)。偏移量放在A中,偏移量=表首地址-(X3X2X1X0+1)第35页,课件共88页,创作于2023年2月疑难指令详解——查表指令X3X2X1X0:MOVCA,@A+DPTR这条指令使用广泛,使用时不用计算偏移量,表格可以放在程序存贮器的任何地址空间。缺点是如果DPTR已经被使用,则必须保护,并且在执行完查表后恢复,每次查表时只要置DPTR为表首地址就可以了。第36页,课件共88页,创作于2023年2月数据交换指令实现片内RAM区的数据双向传送,n=0~7i=0,1。XCHA,Rn ;(A)←→(Rn)XCHA,direct ;(A)←→(direct)XCHA,@Ri ;(A)←→((Ri))XCHDA,@Ri ;(A)3~0←→((Ri))3~0

SWAPA ;(A)7~4←→((Ri))3~0

例3-7第37页,课件共88页,创作于2023年2月堆栈操作指令实现对数据或断点地址保护PUSHdirect ;SP←(SP)+1,(SP)←(direct)POPdirect;direct←((SP)),SP←(SP)-1注意书上的警示第38页,课件共88页,创作于2023年2月数据传送指令总结MOV:源操作数和目的操作数都在片内RAM中;MOVX:实现外部RAM与内部累加器A的数据传送;MOVC:两条专用查表指令,ROM与A之间的数据传送;以累加器A为目的寄存器的传送指令会影响PSW中的奇偶标志位,其余传送指令对所有标志位均无影响;@Ri中i的范围是0和1;Rn中的n的范围是0~7每条指令中只能有1个Rn或@Ri。

如:MOVR1,@R0×MOVA,@R2×第39页,课件共88页,创作于2023年2月例:顺序执行下列指令序列,求每一步执行结果MOVA,#30H ;A=30HMOV4FH,A ;(4FH)=30HMOVR0,#20H ;R0=20HMOV@R0,4FH ;(20H)=30HMOV21H,20H ;(21H)=30H第40页,课件共88页,创作于2023年2月例:堆栈操作例:设A=02,B=56H,执行下列指令后,SP=30H,A=02,B=56HSBR:MOVSP,#30H;设栈底 PUSHA PUSHB MOVA,#0 MOV B,#01

POP B POPA 第41页,课件共88页,创作于2023年2月例设内部RAM中(30H)=40H,(40H)=10H,P1口作输入口,(P1)=0CAH,程序及执行后的结果如下:MOVR0,#30H ;单元地址30H送R0中MOVA,@R0 ;R0间接寻址,将30H单元内容送AMOVR1,A ;A送R1MOVB,@R1 ;R1间接寻址,将40H单元内容送BMOV@R1,P1 ;将P1内容送40H单元MOVP2,P1 ;将P1内容送P2执行结果: (R0)=30H,(R1)=40H,(A)=40H, (B)=10H,(P1)=0CAH, (40H)=0CAH,(P2)=0CAH第42页,课件共88页,创作于2023年2月§3.4算术运算类指令算术运算指令执行的结果大多要影响到PSW中的某些位:OVCYACP第43页,课件共88页,创作于2023年2月不带进位的加法指令ADDA,#data ;A←(A)+dataADDA,direct ;A←(A)+(direct)ADDA,Rn ;A←(A)+(Rn)ADDA,@Ri ;A←(A)+((Ri))例3-8第44页,课件共88页,创作于2023年2月带进位的加法指令ADDCA,#data ;A←(A)+data+(Cy)ADDCA,direct ;A←(A)+(direct)+(Cy)ADDCA,Rn ;A←(A)+(Rn)+(Cy)ADDCA,@Ri ;A←(A)+((Ri))+(Cy)注意书上的说明例3-9,3-10第45页,课件共88页,创作于2023年2月带借位的减法指令SUBBA,#data ;A←(A)-data-(Cy)SUBBA,direct ;A←(A)-(direct)-(Cy)SUBBA,Rn ;A←(A)-(Rn)-(Cy)SUBBA,@Ri ;A←(A)-((Ri))-(Cy)注意书上的说明,最末两行例3-11第46页,课件共88页,创作于2023年2月加1指令INC A ;A←(A)+1INC direct ;direct←(direct)+1INC Rn ;Rn←(Rn)+1INC @Ri ;(Ri)←((Ri))+1INC DPTR ;DPTR←(DPTR)+1第47页,课件共88页,创作于2023年2月疑难指令详解——算术指令INCRi执行后Ri内容发生变化INC@Ri执行后Ri内容不发生变化,而Ri间接寻址单元的内容发生变化第48页,课件共88页,创作于2023年2月减1指令DEC A ;A←(A)-1DEC direct ;direct←(direct)-1DEC Rn ;Rn←(Rn)-1DEC @Ri ;(Ri)←((Ri))-1第49页,课件共88页,创作于2023年2月乘/除运算指令乘法指令MULAB ;BA←(A)×(B)除法指令

DIVAB ;A…B←(A)÷(B)第50页,课件共88页,创作于2023年2月十进制调整指令DAA ;若(AC)=1或A3~0>9,则A←(A)+06H ;若(Cy)=1或A7~4>9,则A←(A)+60H例3-14第51页,课件共88页,创作于2023年2月疑难指令详解——算术指令DAAIF[[(A3~0)>9]∨[(AC)=1] THEN(A3~0)(A3~0)+6ANDIF[[(A7~4)>9]∨[(CY)=1] THENA7~4)A7~4)+6在计算机中,遇到十进制调整指令时,中间结果的修正是由硬件自动进行的,用户不用考虑加6,只要在加法指令后紧跟一条“DAA”指令既可。第52页,课件共88页,创作于2023年2月算术运算指令总结加1减1指令不影响Cy第53页,课件共88页,创作于2023年2月§3.5逻辑运算及移位类指令逻辑运算的特点:按位进行。第54页,课件共88页,创作于2023年2月逻辑与运算指令ANLA,#data ;A←(A)∧dataANLA,direct ;A←(A)∧(direct)ANLA,Rn ;A←(A)∧(Rn)ANLA,@Ri ;A←(A)∧((Ri))ANLdirect,A ;direct←(direct)∧(A)ANLdirect,#data ;direct←(direct)∧data例3-16第55页,课件共88页,创作于2023年2月逻辑或运算指令ORLA,#data ;A←(A)∨dataORLA,direct ;A←(A)∨(direct)ORLA,Rn ;A←(A)∨(Rn)ORLA,@Ri ;A←(A)∨((Ri))ORLdirect,A ;direct←(direct)∨(A)ORLdirect,#data ;direct←(direct)∨data例3-17第56页,课件共88页,创作于2023年2月逻辑异或运算指令XRLA,#data ;A←(A)⊕dataXRLA,direct ;A←(A)⊕(direct)XRLA,Rn ;A←(A)⊕(Rn)XRLA,@Ri ;A←(A)⊕((Ri))XRLdirect,A ;direct←(direct)⊕(A)XRLdirect,#data ;direct←(direct)⊕data例3-17第57页,课件共88页,创作于2023年2月取反/清零指令累加器清零指令:CLRA ;0←A累加器取反指令:CPLA ;/A←A第58页,课件共88页,创作于2023年2月移位指令不带进位的循环左移指令RLA ;(A)n+1←(A)n,(A)0←(A)7

不带进位的循环右移指令RRA ;(A)n←(A)n+1,(A)7←(A)0

带进位的循环左移指令RLCA ;(A)0←Cy,(A)n+1←(A)n,Cy←(A)7, 带进位的循环右移指令RRCA ;(A)7←Cy,(A)n←(A)n+1,Cy←(A)0

例3-18第59页,课件共88页,创作于2023年2月逻辑运算指令总结循环移位必须在A中进行;字节的清零与取反只有A。第60页,课件共88页,创作于2023年2月§3.6控制转移类指令控制程序从原顺序执行地址转移到其他指令地址上,控制转移指令的分类:条件转移(比较转移,循环转移)无条件转移(相对转移,短转移,长转移,间接转移)子程序调用即返回第61页,课件共88页,创作于2023年2月无条件控制转移指令1、长转移指令 LJMPaddr16;PC←addr162、绝对转移指令 AJMPaddr11 ;PC←(PC)+2,PC10~0

←addr113、短转移指令 SJMPrel;PC←(PC)+2+rel4、变址寻址转移指令 JMP@A+DPTR;PC←(A)+(DPTR)例3-19,3-20第62页,课件共88页,创作于2023年2月疑难指令详解——转移指令JMPJMP@A+DPTR散转指令的表格中,一般存放的是无条件转移指令LJMPXXXX,由LJMPXXXX再转移到相应的处理程序,因此,要给每个入口地址展宽为3个字节,以便安放3字节的LJMP指令。第63页,课件共88页,创作于2023年2月累加器判零转移指令JZrel

;若(A)=0,则PC←(PC)+2+rel, 若(A)≠0,则PC←(PC)+2JNZrel

;若(A)≠0,则PC←(PC)+2+rel, 若(A)=0,则PC←(PC)+2第64页,课件共88页,创作于2023年2月比较条件转移指令CJNEA,#data,rel

;若(A)=data,则PC←(PC)+3,Cy←0 若(A)>data,则PC←(PC)+3+rel,Cy←0 若(A)<data,则PC←(PC)+3+rel,Cy←1CJNEA,direct,rel

;若(A)=(direct),则PC←(PC)+3,Cy←0 若(A)>(direct),则PC←(PC)+3+rel,Cy←0 若(A)<(direct),则PC←(PC)+3+rel,Cy←1第65页,课件共88页,创作于2023年2月比较条件转移指令CJNERn,#data,rel ;若(Rn)=data,则PC←(PC)+3,Cy←0 若(Rn)>data,则PC←(PC)+3+rel,Cy←0 若(Rn)<data,则PC←(PC)+3+rel,Cy←1CJNE@Ri,#data,rel ;若((Ri))=data,则PC←(PC)+3,Cy←0 若((Ri))>data,则PC←(PC)+3+rel,Cy←0 若((Ri))<data,则PC←(PC)+3+rel,Cy←1第66页,课件共88页,创作于2023年2月疑难指令详解——转移指令CJNECJNE指令在进行比较不相等时程序作相对转移,并指出其大小,以备作第二次判断。数值比较:(CY)=0,目的操作数>源操作数(CY)=1,目的操作数<源操作数第67页,课件共88页,创作于2023年2月疑难指令详解——转移指令CJNE程序转移:目的操作数=源操作数PC(PC)+3,CY0目的操作数>源操作数PC(PC)+3+rel,CY0目的操作数<源操作数PC(PC)+3+rel,CY1第68页,课件共88页,创作于2023年2月减1条件转移指令DJNZRn,rel

;Rn←(Rn)-1 若(Rn)≠0,则PC←(PC)+2+rel 若(Rn)=0,则PC←(PC)+2DJNZdirect,rel

;direct←(direct)-1 若(direct)≠0,则PC←(PC)+3+rel 若(direct)=0,则PC←(PC)+3第69页,课件共88页,创作于2023年2月疑难指令详解——转移指令DJNZ这是一组功能极强的循环转移指令可以派生出很多不同的应用和多重循环层次。内部RAM单元可以作为循环计数器。例3-21,3-22第70页,课件共88页,创作于2023年2月子程序概念什么是子程序?具有一定功能的程序段为什么要用子程序?减少编程的工作量,缩短程序的长度第71页,课件共88页,创作于2023年2月子程序特点

子程序:能完成某项特定功能的独立程序段,可被反复调用。为什么要用子程序,优点:

(1)不必重复书写同样的程序,提高编程效率;(2)程序的逻辑结构简单,便于阅读;(3)缩短了源程序和目标程序的长度,节省了程序存储器空间;(4)使程序模块化、通用化,便于交流,共享资源;(5)便于按某种功能调试。多次应用,完成相同的某种基本运算或操作的程序段,独立出来,标准化;需要时通过调用指令进行调用。可以节省存储空间,不容易出错。第72页,课件共88页,创作于2023年2月主程序与子程序之间的关系第73页,课件共88页,创作于2023年2月子程序调用LCALLaddr16

;PC←(PC)+3 (SP)←(SP)+1,SP←(PC)7~0 (SP)←(SP)+1,SP←(PC)15~8 PC←addr16ACALLaddr11

;PC←(PC)+2 (SP)←(SP)+1,SP←(PC)7~0 (SP)←(SP)+1,SP←(PC)15~8 PC10~0←addr11注意堆栈的变化!!!第74页,课件共88页,创作于2023年2月返回指令RET ;PC15~8←((SP)),SP←(SP)-1 PC7~0←((SP)),SP←(SP)

-1RETI ;PC15~8←((SP)),SP←(SP)-1 PC7~0←((SP)),SP←(SP)

-1注意p57最末的警示第75页,课件共88页,创作于2023年2月控制转移指令总结控制转移指令通过改写PC的当前值,从而改变CPU执行程序的顺序,使程序发生跳转。子程序调用和返回指令也使程序发生转移。熟记LJMP,LCALL第76页,课件共88页,创作于2023年2月空操作指令NOP ;PC←(PC)+1第77页,课件共88页,创作于2023年2月§3.7位操作类指令89C51有一个结构完整的

温馨提示

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

评论

0/150

提交评论