第一章 单片机基础知识(二)_第1页
第一章 单片机基础知识(二)_第2页
第一章 单片机基础知识(二)_第3页
第一章 单片机基础知识(二)_第4页
第一章 单片机基础知识(二)_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1.48051指令系统1.4.1寻址方式1.4.2指令说明1.4.3伪指令8051指令系统指令是指挥计算机执行某种操作的命令。汇编语言指令用助记符表示。一台计算机所有指令的集合,称为该计算机的指令系统,它是表征计算机性能的重要标志。每台计算机都有它自己特有的指令系统。80C51汇编语言需用40多种助记符表征30多种指令功能。通过这些助记符,与指令中的源地址、目的地址组合成80C51的111条指令。指令格式MCS-51汇编语言指令格式如下:[标号:]操作码[操作数][;注释]START:MOVA,30H;A←(30H)标号标号是程序员根据编程需要给指令设定的符号地址,可有可无;每个子程序的第一条语句都必须有标号;由字母开头的字母数字序列,如LOOP,TIME1;标号后必须用冒号;在程序中,不可以重复使用。操作码

操作码表示指令的操作种类,规定了指令的具体操作及实现的功能。是指令的助记符。

比如:ADD(加操作),MOV(数据的传送操作)。操作数操作数是指令的操作对象,表示参加运算的数据或数据的地址。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CPLA指令;第1个操作数与操作码之间用若干空格分隔;有两个操作数,如MOVA,#00H指令,操作数之间以逗号相隔;有三个操作数,如CJNEA,#00H,NEXT指令,操作数之间也以逗号相隔。注释

注释是对指令的解释说明,用以提高程序的可读性和维护性,一般说明指令或程序的功能;注释前必须以“;”和指令分开,注释在每条指令后都可以设有。指令中符号的意义说明Rn

当前工作寄存器中的某一个,即R0~R7;Ri

R0或者R1Direct

单片机内部RAM低128字节中的某个字节地址,

或者是某个专用寄存器的名字;#data8位(1字节)立即数#data1616位(2字节)的立即数Addr1616位目的地址,在LJMP和LCALL的指令中采用Addr1111位目的地址,只在AJMP和ACALL指令中采用Rel

相对转移指令中的偏移量。DPTR

数据指针(由DPH和DPL构成)Bit

内部RAM(包括专用寄存器)中可寻址位的地址或名字A

累加器ACCBB寄存器@

间接寻址标志

/

加在位地址前,表示对该位状态取反(X)

某寄存器或某单元的内容((X))

由X间接寻址的单元中的内容←

箭头右边的内容传递给箭头左边1.4.1寻址方式寄存器寻址直接寻址寄存器间接寻址立即寻址变址寻址相对寻址位寻址MCS-51有7种不同的寻址方式:1.寄存器寻址寄存器寻址是对由指令选定的工作寄存器(R0~R7)进行读/写。对累加器A、寄存器B、数据指针DPTR、位处理累加器CY等,也可当作寄存器方式寻址。

比如:MOVA,R7 INCDPTR ADDA,R0例如,设R7的内容为40H,则执行指令:MOVA,R7R7MOVA,R7A

XX40H40H2.直接寻址直接寻址方式是由指令直接给出操作数地址。直接寻址方式可访问两种地址空间:特殊功能寄存器地址空间,这是唯一能寻址特殊功能寄存器的寻址方式。内部数据存储器RAM的00~7F地址空间。例如指令:MOVA,62H MOVPSW,#20H

62HMOVA,62H55HXXA55H3.寄存器间接寻址寄存器间接寻址方式以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够用于寄存器间接寻址的寄存器有:R0、R1、DPTR和PC。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。如指令格式为:

MOVA,@R0 MOVXA,@R1 MOVXA,@DPTR在指令形式中,对内部RAM还是对外部RAM寻址,区别在于对外部数据RAM的操作仅有数据传送类指令,且用MOVX的符号形式。以R0作为间址寄存器方式:MOVA,@R0以DPTR作为间址寄存器方式:MOVXA,@DPTR55HAR055H取出地址78H78H3FFFHADPTR3FFFH取出地址78H78H4.立即寻址立即寻址方式由指令直接给出操作数寻址。立即操作数用前面加有#号的8位或16位数来表示。“#”符号称为立即数符号。例如指令:

MOVA,#40H

MOVDPTR,#2CA5H

MOV 30H,#40H

A

XXMOVA,#40H40HMOVDPTR,#2CA5HDPL

DPH

XX2CHXXA5H5.变址寻址基址寄存器加变址寄存器间接寻址方式,以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,这二者内容之和为有效地址。例如:

JMP@A+DPTR MOVCA,@A+PC MOVCA,@A+DPTR

这种寻址方式特别适用于查表。DPTR为16位字长,可指向64KB的任何单元;@A+PC可指向以PC当前值为起始地址的256B单元。指令:MOVCA,@A+DPTR

工作过程:3055H相加=3055HADPTR3000H取出地址A55H66H66H6.相对寻址相对寻址方式以PC的当前值为基准,加上指令中给出的相对偏移量(rel)形成有效转移地址。相对偏移量是一个带符号的8位二进制数。主要用于实现程序的分支转移。在跳转程序中有一种相对寻址方式,如:

JZrel DJNZR0,rel例如执行指令:

SJMP

08H程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H7.位寻址位寻址方式对位地址中的内容作位操作的寻址。由于单片机中只有内部RAM和特殊功能寄存器的部分单元有位地址(两者统一编址,地址空间为00H~FFH),因此位寻址只能对有位地址的这两个空间做寻址操作。位寻址是一种直接寻址方式,由指令给出直接位地址。但与直接寻址不同之处在于,位寻址只给出位地址,而不是字节地址。例如:

SETB20H

MOV32H,C

ORLC,5AH

其中,C为进位位地址,而其他是直接位地址。CLRP1.0;将单片机的P1.0清“0”。SETBP1.0;将单片机的P1.0置“1”。P1.0X“0”0P1.0P1.0X“1”1P1.01.4.2指令说明MCS-51单片机指令系统包括111条指令按功能可以划分为以下5类:数据传送和交换指令(29条)

算术运算指令(24条)逻辑运算指令(24条)控制转移指令(17条)位操作指令(17条)1.数据传送和交换指令数据传送类指令共29条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。可分为两类,一类为单纯的数据传送,另一类为数据交换。源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。一、内部数据传送指令1)以累加器为目的的传送指令:

MOVA,#data;A←data MOVA,direct;A←(direct) MOVA,Rn;A←(Rn) MOVA,@Ri;A←((Ri))AXXA33H30H33H结果Eg:MOVA,30HEg:MOVA,#10HAXX30H10H结果10HAXXA33HR233H55H78HA78HR055H取出地址Eg:MOVA,@R0Eg:MOVA,R2注意:在使用Ri进行间址寻址时,只能够使用R0和R1。2)以通用寄存器Rn为目的的传送指令:

MOVRn,A;Rn←(A) MOVRn,direct;Rn←(direct) MOVRn,#data;Rn←dataR2R2XX33HA33HEg:MOVR2,AEg:MOVR2,30HEg:MOVR2,#30HR2R2XX55H30H55HR2XXR230H30H3)以直接地址为目的的传送指令:

MOVdirect,#data;direct←dataMOVdirect1,direct2;direct1←(direct2)MOVdirect,A;direct←(A)MOVdirect,@Ri;direct←((Ri))MOVdirect,Rn;direct←(Rn)Eg:MOV30H,#33H

30H30HXX33H33H30H30HXX55H31H55HEg:MOV30H,31HEg:MOV30H,@R0Eg:MOV30H,AEg:MOV30H,R3地址55H78H30H78HR0取出55H30H30HA33HXX33H30H30HR333HXX33H4)以通用寄存器间接地址为目的的传送指令:

MOV@Ri,A;(Ri)←(A) MOV@Ri,direct;(Ri)←(direct) MOV@Ri,#data;(Ri)←dataEg:MOV@R1,AEg:MOV@R1,30HEg:MOV@R1,#30H55HAR1(地址)55H78H78H55H30HR1(地址)55H78H78H55H30HR1(地址)55H30H5)数据指针赋值指令当要对片外的RAM和I/O接口进行访问时,或进行查表操作时,通常要对DPTR赋值。指令为:MOVDPTR,#data16Eg:将数据指针DPTR指向存于ROM中的表格首地址。

MOVDPTR,#TABLEDPTRDPTRXXXX2000H2000HEg:将数据指针DPTR指向外部RAM的2000H单元。

MOVDPTR,#2000H6)堆栈操作指令堆栈操作指令包含入栈(PUSH)和出栈(POP)。在使用堆栈之前要首先给堆栈指针SP赋值。指令格式:PUSHdirectPOPdirect注意:先入后出原则程序举例:

MOVSP,#30HPUSHSBUF;SP←(SP)+1,31H←(SBUF)PUSH60H;SP←(SP)+1,32H←(60H)……POP60H;60H←(32H),SP←(SP)-1POPSBUF;SBUF←(31H),SP←(SP)-1(SP+1)栈底(SP+2)入栈出栈(SP)二、片外数据传递指令外部数据传送是指片外数据RAM和累加器A之间的相互数据传送。片外数据存储器只能使用寄存器间接寻址方式,有4条指令:

MOVXA,@DPTR;A←((DPTR))片外

MOVXA,@Ri;A←((Ri))片外

MOVX@DPTR,A;(DPTR)片外←(A)

MOVX@Ri,A;(Ri)片外←(A)注意:该指令用于在单片机和外部RAM、扩展I/O的数据传送;使用Ri时,只能访问低8位地址为00H~FFH地址段;使用DPTR时,能访问0000H~FFFFH地址段。三、程序存储器数据传送指令(查表指令)从程序存储器读取数据,向累加器A传送。指令格式:

MOVCA,@A+DPTR;A←((A)+(DPTR))MOVCA,@A+PC;A←((A)+(PC))3055H相加=3055HA66HDPTR3000H取出地址A55H66HEg:MOVDPTR,#3000HMOVA,#55HMOVCA,@A+DPTR四、字节交换指令字节交换指令指内部RAM中的某个单元和累加器A之间进行数据交换,可以是整个字节,也可以是半个字节。包含3种交换方式:1、整字节交换指令:

XCHA,Rn;(A)←→(Rn)XCHA,direct;(A)←→(direct)XCHA,@Ri;(A)←→((Ri))A内部RAM单元2、半字节交换指令将累加器A的低4位和R0或R1的低4位进行交换,各自的高4位保持不变。

XCHDA,@Ri;(A)3~0←→((Ri))3~0指令执行后A0A1A2A3D4D5D6D7(Ri)D0D1D2D3A4A5A6A7AD0D1D2D3D4D5D6D7(Ri)A0A1A2A3A4A5A6A7A执行指令前3、累加器A高低半字节的交换指令

SWAPA执行前A7A6A5A4A3A2A1A0执行后A3A2A1A0A7A6A5A4例:假设在执行指令之前(A)=70H,则在指令执行完后,(A)=07H。执行前01110000执行后000001112.算术运算指令算术运算指令有加法、减法、乘法和除法四类,除加1和减1指令,其他所有的指令都将影响PSW的标志位。一、不带进位的加法指令

ADDA,Rn

;A←(A)+(Rn)

ADDA,direct;A←(A)+(direct) ADDA,@Ri

;A←(A)+((Ri)) ADDA,#data;A←(A)+data例:将内部RAM中40H和41H单元的数相加,再把和送到42H单元。

MOVA,40HADDA,41HMOV42H,A加法运算对PSW标志位的影响1、在上例中,如果运算结果超出FFH(255),将产生进位——PSW的CY位将被置1。2、若预先说明40H和41H中放置的是有符号数,则在运算指令“ADDA,41H”执行后,还要检查PSW中溢出位OV的状态,如果OV位为1,则运算结果错误。溢出产生的条件:在运算时,如果D6位和D7位中一个有进位而另一个无进位,则OV=1,溢出。二、带进位的加法运算该类指令主要用于多字节的加法运算ADDCA,Rn;A←(A)+(Rn)+(CY)ADDCA,direct;A←(A)+(direct)+(CY)ADDCA,@Ri;A←(A)+((Ri))+(CY)ADDCA,#data;A←(A)+data+(CY)如果加数和被加数是无符号数,则在计算后要注意是否产生进位。如果加数和被加数是有符号数,则在计算后要注意是否溢出,只要溢出,则运算结果错误;如果无溢出,则注意是否有进位。例:加数存放在内部RAM的41H(高位)和40H(低位),被加数存放在43H(高位)和42H(低位),将它们相加,和存放在46H~44H中。程序:

CLRCMOVA,40HADDA,42HMOV44H,AMOVA,41HADDCA,43HMOV45H,ACLRAADDCA,#00HMOV46H,A三、加1指令INCA;A←(A)+1

INCRn;Rn←(Rn)+1

INCdirect;direct←(direct)+1

INC@Ri;(Ri)←((Ri))+1

INCDPTR;DPTR←(DPTR)+1

注意:以上所有指令不会影响PSW中的各个标志位。例:设(A)=FFH,(R0)=25H,(26H)=3AH,(DPTR)=2000H执行程序:INCA

INCR0

INC@R0

INCDPTR

结果为:(A)=00H,(R0)=26H,(26H)=3BH,(DPTR)=2001H四、减1指令DECA;A←(A)-1

DECRn;Rn←(Rn)-1

DECdirect;direct←(direct)-1

DEC@Ri;(Ri)←((Ri))-1注意:减1指令也不会影响PSW的各个标志位。思考:设(A)=FFH,(R0)=27H,(26H)=3AH

执行程序:DECA

DECR0

DEC@R0

结果(A)=____,(R0)=______,(26H)=______。

五、减法指令

SUBBA,Rn

;A←(A)-(Rn)-(CY)

SUBBA,direct;A←(A)-(direct)-(CY)

SUBBA,@Ri

;A←(A)-((Ri))-(CY)

SUBBA,#data;A←(A)-data-(CY)如果减数和被减数是无符号数,则在计算后要注意是否产生借位。如果减数和被减数是有符号数,则在计算后要注意是否溢出,只要溢出,则运算结果错误;如果无溢出,则注意是否有借位。例:设(A)=C9H,(R2)=54H,(CY)=1,执行指令SUBBA,R21100100101010100

-1

01110100结果:(A)=74H,借位位(CY)=0。六、乘法运算

MULAB

指令含义:将(A)×(B),乘积的低位字节放在A中,高位字节放在寄存器B中。七、除法运算DIVAB指令含义:将(A)÷(B),将商放入A,余数放入寄存器B中。对PSW标志位的影响:Cy位被清0乘积大于FFH时,OV位为1。如果除数(B)=0,则OV位被置1,表示除法无意义,不能进行。八、十进制调整指令DAA这条指令用于对BCD编码的十进制数相加结果进行调整。例:

00100101(25)BCD

+00111000(38)BCD

01011101(5DH)

61相应程序:

MOVR2,#25HMOVA,#38HADDA,R2DAA注意:DAA指令只能跟在ADD或ADDC加法指令后,不适用于减法。

3.逻辑运算指令该类指令包含与、或、非、清0、异或和移位指令等共24条。执行这些指令时一般不影响程序状态字寄存器PSW,仅当目的操作数为ACC时对奇偶标志位有影响。

一、逻辑与运算指令组逻辑与指令的功能是将源操作数内容和目的操作数内容按位相与,结果存入目的操作数指定单元,源操作数不变。

ANLA,Rn

;A←(A)Λ(Rn)

ANLA,direct;A←(A)Λ(direct)

ANLA,@Ri;A←(A)Λ((Ri))ANLA,#data;A←(A)ΛdataANLdirect,A;direct←(A)Λ(direct)

ANLdirect,#data;direct←(direct)Λdata例:(A)=78H,(R1)=37H,则执行指令

ANLA,R1后,(A)=H

(A)01111000

(R1)Λ00110111

(A)00110000程序设计:读入P1口的数据,将其低4位清0,高4位保留,再把结果放到内部RAM的40H单元。

MOVA,P1 ANLA,#0F0H MOV40H,A程序设计:将累加器A中压缩BCD码分为两个字节,形成非压缩BCD码,放入内部RAM的40H和41单元中。

MOV30H,A;保存A中的内容

ANLA,#00001111B;清高4位,保留低4位

MOV40H,A MOVA,30H;取原数据

ANLA,#11110000B;保留高4低,清低4位

SWAPA MOV41H,A二、逻辑或运算指令

ORLA,Rn

;A←(A)V(Rn)

ORLA,direct;A←(A)V(direct)

ORLA,@Ri;A←(A)V((Ri))ORLA,#data;A←(A)VdataORLdirect,A;direct←(A)V(direct)

ORLdirect,#data;direct←(direct)Vdata

或运算举例:假设(A)=60H,(30H)=79H,则执行指令

ORLA,30H后,(A)=H(A)01100000

(30H)V0111100101111001程序设计举例:将串口缓冲区SBUF中的数据送到内部RAM40H单元,再将其低7位(D6~D0)全部变成1. MOV40H,SBUF ORL40H,#7FH三、逻辑异或运算

XRLA,Rn

;A←(A)⊕(Rn)

XRLA,direct;A←(A)⊕(direct)

XRLA,@Ri;A←(A)⊕((Ri))XRLA,#data;A←(A)⊕dataXRLdirect,A;direct←(A)⊕(direct)

XRLdirect,#data;direct←(direct)⊕data异或原则是相同为0,相异为1

。异或指令可用于判断两个字节中的数据是否相等.程序设计:如果(40H)=(60H),将PSW中的F0位置1.CLRF0

MOVA,40H

XRLA,60H

JNZOUT

SETBF0四、累加器清0和取反指令累加器清0指令

CLRA;A←0累加器按位取反指令

CPLA;A←/A例:假设(A)=89H,在执行指令

CPLA后,(A)=H

89H=10001001取反:01110110=76H

五、累加器移位指令D0D1D2D3D4D5D6D71、循环左移

RLA01100101假设:(A)=0A6H,则在执行指令“RLA”后,(A)=4DH执行前(A):10110010执行后(A):D0D1D2D3D4D5D6D72、循环右移

RRA01100101假设:(A)=0A6H,则在执行指令“RRA”后,(A)=53H执行前(A):11001010执行后(A):3、带进位循环左移RLCA例:假设(A)=0A6H,(CY)=0;则在执行指令“RLCA”后,(A)=_____,(CY)=______执行前:CY←D7D6D5D4D3D2D1D0010100110101001100执行后:4、带进位位循环右移RRCA例:假设(A)=0A6H,(CY)=0;则在执行指令“RRCA”后,(A)=_____,(CY)=______执行前:CY→D7D6D5D4D3D2D1D0010100110110010100执行后:程序设计:将存储在内部RAM的40H和41单元中16位二进制数循环左移1位。

CLRC MOVA,40H RLCA MOV40H,A MOVA,41H RLCA MOV41H,A MOVA,40H ADDCA,#00H MOV40H,A 4.控制转移指令

控制转移类指令的功能是根据要求修改程序计数器PC的内容,以改变程序的运行流程,实现转移。80C51指令系统中有17条控制程序转移类指令。它们是无条件转移和条件转移、绝对转移和相对转移、长转移和短转移、调用和返回指令等。这类指令多数不影响程序状态标志寄存器。一、无条件转移指令1、长转移指令

LJMPaddr16说明:PC无条件跳转到addl6地址,可在64KB范围内转移,称为长转移指令

。2、绝对转移指令

AJMPaddr11

例:

AJMPMM……MM:MOVA,#00H说明:PC无条件转向到addl1地址可在2KB范围内转移,称为绝对转移指令。3、短跳转指令(相对转移指令)

SJMP

rel说明:PC←PC+2+rel,rel是偏移量,它是8位有符号数,范围-128~+127即向后跳转128B,向前可跳转127B4、间接转移指令

JMP@A+DPTR说明:

PC←A+DPTRPC,该指令主要用于多分支的跳转程序设计。跳转的目标地址是累加器A和数据指针DPTR之和。二、条件转移指令所谓条件转移,指指令中规定的条件满足时,程序跳转到目标地址。1、累加器判零转移指令JZ

rel

;如(A)=0,跳到目标语句,PC←PC+2+rel

;如(A)≠0,顺序执行下一条指令

JNZrel

;如(A)≠0,跳到目标语句,PC←PC+2+rel

;如(A)=0,顺序执行下一条指令2、比较转移指令CJNEA,#data,rel;A=(direct),顺序执行

;A>(direct),PC←PC+3+rel,CY←0

;A<(direct),PC←PC+3+rel,CY←1CJNEA,direct,relCJNERn,#data,relCJNE@Ri,#data,rel3、循环转移指令

DJNZRn,rel

;Rn←Rn-1

;Rn≠0,PC←PC+2+rel

;Rn=0,顺序执行

DJNZdirect,rel程序设计举例:将内部RAM中30H~3FH的数依次送到70H~7FH单元中。

MOVR0,#30H;数据源首地址

MOVR1,#70H;数据存放目标首地址

MOVR2,#10H;数据个数LOOP:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR2,LOOPEND三、子程序调用和返回指令1、长调用指令

LCALLaddr16;PC←PC+3,SP←SP+1,

;(SP)←PC.7~PC.0,SP←SP+1, ;(SP)←PC.15~PC.8,PC←addr16例:LCALLDELAY;调用DELAY子程序2、绝对调用指令

ACALLaddr11;PC←PC+2,SP←SP+1,

;(SP)←PC.7~PC.0,SP←SP+1, ;(SP)←PC.15~PC.8,;PC.10~PC.0

←addr113、子程序返回指令

RET

;子程序调用返回;PC.15~PC.8←(SP),SP←SP-1

;PC.7~PC.0←(SP),SP←SP-14、中断服务子程序返回指令

RETI;PC.15~PC.8←(SP),SP←SP-1

;PC.7~PC.0←(SP),SP←SP-1说明:用于中断程序返回,执行该指令同时清除优先级状态触发器四、空操作指令指令格式:

NOP;PC←PC+1

说明:只进行取指令和译码,不进行任何操作,故为空操作,常用于产生一个机器周期延时5.位操作指令

(17条)一、位传送指令

MOVC,bit;Cy←(bit) MOVbit,C;bit←(Cy)例:MOVC,00H;将00H位的状态传送给CYMOVP1.0,C;将CY位的状态传给P1口的第0位程序设计:将00H位内容与7FH位内容交换

MOVC,00H MOV01H,C MOVC,7FH MOV00H,C MOVC,01H MOV7FH,C二、位置“1”和清“0”

CLRbit;bit←0 CLRC;Cy←0 SETBbit;bit←1 SETBC;Cy←1例:将P1口的第7位置成高电平。

SETBP1.7三、位逻辑运算指令

ANLC,bit;C←(C)Λ(bit) ANLC,/bit;C←(C)Λ(/bit) ORLC,bit;C←(C)V(bit) ORLC,

温馨提示

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

评论

0/150

提交评论