单片机-教案-课件-80C51的指令系统_第1页
单片机-教案-课件-80C51的指令系统_第2页
单片机-教案-课件-80C51的指令系统_第3页
单片机-教案-课件-80C51的指令系统_第4页
单片机-教案-课件-80C51的指令系统_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 80C51的指令系统指令格式及3.180C51的寻址方式3.2数据传送指令 (29条)3.3算数运算指令 (24条)3.4逻辑运算与循环类指令(24条)3.5控制转移类指令 (17条)3.6位操作类指令 (17条)3.72022/10/1613.1 指令格式及常用符号3.1.1 指令系统的概述 指令是计算机根据人的意图所执行的操作命令,是与计算机内部结构、硬件资源密切联系的。某种计算机所有指令的集合称为指令系统。 MCS-51/52系列单片机的指令系统共有111条指令编码少:其中49条是单字节指令,45条是双字节指令,17条是三字节指令。执行周期短:其中有64条指令的执行时间为单机器周

2、期,45条指令的执行时间为双机器周期,乘法和除法指令只需4个机器周期。位操作指令丰富:2022/10/162机器语言:计算机唯一能够识别的指令,由二进制数“0”和“1”编码构成,也成为目标代码,执行速度最快。汇编语言指令是在机器语言基础上,用英文单词或英文单词缩写表示机器语言指令的操作码(助记符)用符号表示操作数或者操作数的地址。将汇编语言翻译为机器语言的目标代码称为汇编。2022/10/163 书写格式注意:操作码不能缺少操作数个数可为:1、2、3个2个操作数的指令,目的操作数在左边一般格式标号:操作码 目的操作数,源操作数;注释3.1.2 符号指令的书写格式2022/10/164 描述符号

3、Rn(n=07)-当前工作寄存器组中的寄存器R0R7之一Ri(i=0,1)-当前工作寄存器组中的寄存器R0或R1 -间址寄存器前缀#data -8位立即数#data16-16位立即数direct-片内低128个RAM单元地址及SFR地址addr11-11位目的地址addr16-16位目的地址rel-8位地址偏移量,范围:128127bit-片内RAM位地址、SFR的位地址()-表示 地址单元或寄存器中的内容/ -位操作数的取反操作前缀()-表示 所指地址单元的内容 -表示数据传输的方向2022/10/1653.2.1 寄存器寻址寻址方式:寻找(源)操作数或指令转移地址的方式80C51单片机有7

4、种寻址方式3.2 80C51的寻址方式操作数在寄存器中寻址空间:R0R7、A、B(AB形式)和DPTR特点:传送和执行速度快【例】若(R0)=30H, 执行MOV A,R0后,(A)=30H 2022/10/1663.2.2 直接寻址操作码后字节存放的是操作数的地址寻址空间:片内RAM低128字节SFR(符号形式)另一类直接寻址是转移目标地址的寻址。如:LJMP ADDR16【例】若(50H)=3AH , 执行MOV A,50H后,(A)=3AH 2022/10/1673.2.3 寄存器间接寻址寄存器中的内容是操作数的地址寻址空间:片内RAM(Ri、SP)片外RAM(Ri、DPTR)【例】若(

5、R0)=30H,(30H)=5AH 执行MOV A,R0后,(A)=5AH 片内:MOV片外:MOVX2022/10/1683.2.4 立即寻址操作数在指令编码中寻址空间:ROM对于MOV DPTR,#2100H指令,立即数高8位“21H”装入DPH 【例】执行MOV A,#50H 结果:(A)=50H 2022/10/1693.2.5 变址寻址操作数地址:基地址+偏移量寻址空间:ROM变址寻址还用于跳转指令,如JMP A+DPTR 【例】(A)0FH (DPTR)=2400H 执行MOVC A,A+DPTR”后结果:(A)=88H 2022/10/16103.2.6 相对寻址用于跳转指令,实

6、现程序分支Rel常用符号地址表示,离源地址不要超过(128127 ) 【例】若rel为75H,PSW.7为1,JC rel存于1000H开始的单元。 执行JC rel指令后,程序将跳转到1077H单元取指令并执行。 2022/10/16113.2.7 位寻址寻址位数据寻址空间片内RAM位空间SFR位空间【例】位地址00H内容为1,MOV C,00H执行后,位地址PSW.7的内容为1。位寻址方式实质属于位的直接寻址。 2022/10/16123.3 数据传送类指令(29条)一般不影响标志寄存器PSW的状态。 传送类指令有两大类 一般传送( MOV ) 特殊传送,如: MOVC MOVX PUSH

7、、POP XCH、XCHD SWAP 2022/10/16133.3.1 一般传送指令16位传送(仅1条)MOV DPTR,#data16; DPTR data16例:执行指令 MOV DPTR,#1234H 后 (DPH)=12H,(DPL)=34H。8位传送通用格式: MOV , ; 2022/10/1614 以A为目的【例3-9】若(R1)= 20H,(20H)= 55H。执行指令 MOV A,R1 后,(A)= 55H。2022/10/16151、将R1内容传送至AMOV A,R12、将立即数16H传送至AMOV A,#16H3、将R0指示的内存单元20H单元传送至AMOV R0,#2

8、0HMOV A,R04、将30H的内容传送至AMOV A,30H2022/10/1616 以Rn为目的【例3-10】执行指令 MOV R6,#50H 后,(R6)= 50H例:如何将R1的内容传送给R2? MOV A,R1MOV R2,A2022/10/1617 以direct为目的【例3-11】若(R1)=50H,(50H)=18H,执行指令 MOV 40H,R1 后,(40H)=18H 2022/10/1618 以Ri为目的【例3-12】若(R1)=30H,(A)=20H,执行指令 MOV R1,A 后,(30H)=20H。 2022/10/16191、将20H开始的32个单元全部清0 M

9、OV A , #00H ;A000H MOV R0,#20H ;R020H MOV R7,#20H ;R7计数,R732 LP1:MOV R0,A ;R0指示单元清0 INC R0 ;R0R0+1 DJNZ R7,LP1 ;R7 R7-12022/10/16203.3.2 特殊传送指令 以DPTR内容为基址读ROM中常数表项指令MOVCROM中可以存放程序代码,还经常存放常数表 MOVC A,A+DPTR;A (A)+(DPTR) 以PC内容为基址MOVC A,A+PC ;A (A)+(PC)常数表存放约束小,称为远程查表指令。占用DPTR 常数表存放约束大,称为近程查表指令。不占用DPTR

10、2022/10/16211、LED显示器09的字形显示码存放在程序存储器中的情况如下:210AH:0C0H 字符“0”210BH:0F9H 字符“1”210CH:0A4H 字符“2”210DH:0B0H 字符“3”从段码表中取出“3”并送LED端口为1200H显示,可用如下指令完成:2100H:MOV A,#0AH2102H:MOVC A,A+PC2103H:MOV DPTR,#1200H2106H:MOVX DPTR,A2022/10/1622 读片外RAM读片外RAM及接口单元数据的指令MOVX片外RAM中经常存放数据采集与处理的中间数据 MOVX A,DPTR ;A (DPTR)MOVX

11、 A,Ri ;A (Ri) 写片外RAMMOVX DPTR,A ;(DPTR)AMOVX Ri,A ;(Ri)A注意:用Ri寻址时,高8位地址由P2口提供 2022/10/16231、将74H的内容送到片外RAM3000H单元 MOV A,74H MOV DPTR,#3000H MOVX DPTR,A2、将片外RAM2040H的内容送到片内 RAM20H单元。 MOV DPTR #2040H MOVX A,DPTR MOV 20H,A2022/10/1624 入栈指令PUSH堆栈操作指令PUSH和POP堆栈是一片存储区,遵循“后进先出”原则,栈顶由SP指示。80C51的堆栈设在片内RAM低端的

12、128个单元,向上生长。 PUSH direct ;SP(SP)1,(SP)(direct) 出栈指令POPPOP direct ;(direct)(SP),SP (SP)1 注:堆栈用于子程序调用时保护返回地址,或者用于保护子程序调用之前的某些重要数据(即保护现场),还可以用于数据交换。 2022/10/1625利用堆栈完成40H与50H单元内容的交换的示例 MOV SP,#6FH;将堆栈设在70H以上RAM空间PUSH 40H ;将40H单元的“23H”入栈,之后(SP)=70H PUSH 50H ;将50H单元的“45H”入栈,之后(SP)=71HPOP 40H ;将SP指向的71H单元

13、的内容弹到40H单元,之后(SP)=70HPOP 50H ;将SP指向的70H单元的内容弹到50H单元,之后(SP)=6FH(a)初始状态 (b)2条PUSH指令执行后 (c)2条POP指令执行后2022/10/1626 字节交换指令XCH数据交换指令XCH、XCHD和SWAP数据交换属于同时进行的双向传送 【例3-20】若(R0)=80H,(A)=20H。 执行指令 XCH A,R0 后,(A)=80H,(R0)=20H。 2022/10/1627 半字节交换指令XCHD【例3-21】若(R0)30H,(30H)67H, (A)20H。执行指令 XCHD A,R0 指令后,(A)27H,(3

14、0H)60H。 XCHD是间址操作数的低半字节与A的低半字节互换。SWAP是累加器的高低4位互换【例3-22】若(A)30H,执行指令SWAP A后,(A)03H 。 2022/10/16281、编程将内部数据存储器20H30H内容置1.2、试编写8字节外部数据存储器到内部数据存储器的数据传送程序,外部数据存储器地址为40H47H,内部数据存储器的范围为30H37H。2022/10/16293.4 算数运算类指令(24条)算数运算结果要影响PSW中标志位 CY为1,无符号数(字节)加减发生进位或借位 OV为1,有符号数(字节)加减发生溢出错误 溢出标志位OV = D7C D67 = 1 0 =

15、 1 AC为1,十进制数(BCD码)加法的结果应调整 P为1,存于累加器A中操作结果的“1”的个数为奇数 标志位意义标志位与相关指令影响 指令标志ADD、ADDC、SUBBDAMULDIV CY00ACOVP2022/10/1630算数运算影响标志位示例【例3-23】有2个参与相加的机器数,一个是84H,另一个是8DH。试分析运算过程及其对状态标志的影响。结果:CY为1;AC为1 ;OV为1 ;P为0 2022/10/16313.4.1 加法不带进位加法【例3-24】若有2个无符号数存于累加器A和RAM的30H单元,即(A)=84H,(30H)=8DH,试分析执行指令 ADD A,30H 后的

16、结果。由于对无符号数相加,要考察CY。由上页图可知,CY=1,因此知道运算的结果发生了进位,即实际值应该是100H+11H。所以,编程者应确保单字节无符号数运算结果不要超过255 2022/10/1632【例3-25】若有2个有符号数存于累加器A和RAM的30H单元,即(A)=84H,(30H)=8DH,试分析执行指令 ADD A,30H 后的结果。 有符号数相加,只需考察溢出标志OV即可。由上图可见OV=1,因此可知运算的结果发生了溢出,这说明累加器A中的结果已经不是正确的值了。 溢出标志位OV = D7C D6C = 1 0 = 1 编程者应确保单字节有符号数运算结果不超过-128127。

17、否则,就要将数据用多字节表示或在程序运行中对状态标志进行判断: 无符号数用JNC或JC,有符号数要用JNB或JB。 2022/10/1633带进位加法(这组指令方便了多字节加法的实现) 这4条指令的功能是把源操作数所指示的内容和A中的内容及进位标志Cy相加,结果存入A中。运算结果对PSW中相关位的影响同上述的4条加法指令。 带进位加法指令一般用于多字节数的加法运算,低位字节相加时和可能产生进位,可以通过带进位加法指令将低位字节的进位加到高字节上去。高位字节求和时必须使用带进位的加法指令。 2022/10/1634多了加进位标志位CY,主要用于多字节的加运算两个双字节数存放在内部RAM 30H、

18、31H单元及40H、41H单元,设低位在前,高位在后,求和结果存放在30H、31H。 MOV A,30H ;取低8位ADD A,40H ;低8位相加MOV 30H,A ;存结果MOV A,31H ;取高8位ADDC A,41H ;高8位带进位加MOV 31H,A ;存结果例:35加1 这一组指令的功能是将操作数所指定的单元或寄存器中的内容加1。其结果送回原操作数单元中。 2022/10/1636设R0=7EH,DPTR=10FEH,(7EH)=0FFH,(7FH)=38H,执行下列指令INC R0;(7EH)=00HINC R0 ;R0=7FHINCR0 ;(7FH)=39HINC DPTR

19、;DPTR=10FFHINC DPTR ;DPTR=1100HINC DPTR ;DPTR=1101H2022/10/1637十进制调整DA A ;调整A的内容为正确的BCD码 两个压缩的BCD码按二进制相加后,必须经过调整方能得到正确的和。注意:该指令必须用在加法指令后边否则出错。 这条指令是在进行BCD码加法运算时,用来对BCD码的加法运算结果自动进行修正(主要是高、低4位是否+6)。另外,对BCD码的减法运算不能用此指令来进行修正。执行十进制调整指令后,PSW中的CY表示结果的百位值 2022/10/1638 计算机中只能使用二进制数,所有在计算机中使用的字符和数字都要用特定的二进制编码

20、表示,编码方法很多,常用的有ASCII码(American Standard Code for Information Interchange)和BCD码。BCD 码 (Binary Coded Decimal)BCD码的概念 用四位二进制数表示一个十进制数码的编码方法,称为二-十进制码,即BCD码。BCD码表示的数叫BCD数,即二进制编码的十进制数。常用8421BCD码:十进制数 0 1 2 3 4 5 6 7 8 9BCD码 0000 0001 0010 0011 0100 0101 0110 0111 1000 100139【例3-24】若(A)0110 1001B,表示的BCD码为 (

21、R2)0101 1000B,表示的BCD码为 ,执行指令: ADD A,R2DA A(A)0010 0111B,即 且(CY)1,即正确的结果为:127 2022/10/16403.4.2 减法带借位减法用此组指令完成不带借位的减法,只需先清CY为0即可 CY为1,表示D7位需借位 AC为1,表示D3位需借位 OV为1,表示“D6有借位D7无借位”或“D7有借位D6无借位”2022/10/1641【例3-25】若(A)=C9H,(R2)=54H,(CY)=1,试分析指令SUBB A,R2执行后,累加器的内容及状态标志。 (A):1 1 0 0 1 0 0 1(201) (CY): 1(1)1

22、1 0 0 1 0 0 0(R2): 0 1 0 1 0 1 0 0(84)结果:0 1 1 1 0 1 0 0(116)即:(A)=74H,(CY)=0,(AC)=0,(OV)=1,(P)=0。分析:数据为无符号类型。该指令执行前CY=1,说明此指令不是运算的最低字节,即在此指令执行之前,一定执行过低字节的减法并产生了借位。因此,本次相减(201-1-84=116=74H)结果为74H。2022/10/1642减1这组指令仅 DEC A 影响P标志。其余指令都不影响标志位的状态。无DPTR减1指令。2022/10/16433.4.3 乘法仅有一条乘法指令 MUL AB ;A与B相乘 ;BA

23、(A)(B) 无符号 结果:B中为积的高8位,A中为积的低8位。 CY总是被清0;OV=1表示积大于FFH 此条指令的功能是实现两个8位无符号数的乘法操作,2个数分别存在累加器A和寄存器B中。乘积为16位,积的低8位在A中,积的高8位在B中。若积大于255,溢出标志位OV置位,否则复位,而Cy位总是为0。乘法指令是整个指令系统中执行时间最长的2条指令之一,它需4个机器周期(48个振荡周期)才能完成一次乘法操作。2022/10/16443.4.4 除法仅有一条除法指令DIV AB ;A (A)(B) (商),B AB(余) 无符号 结果:A中为商的整数部分,B中为余数 CY总是被清0;OV=1表

24、示除数为0 除法指令可以实现两个8位无符号数的除法。被除数放在A中,除数放在B中。指令执行后,商放在A中而余数在B中。进位标志Cy和溢出标志OV均清0,只有当除数为0时,A和B中的内容为不确定值,此时OV位置位,说明除法溢出。指令的执行时间也是4个机器周期,和乘法指令相同是执行时间最长的2条指令之一。 2022/10/16453.5 逻辑运算与循环类指令(24条)3.5.1 逻辑与 逻辑:与、或、异或、清0和取反 循环:左、右移,带进位位左、右移【例】(A)=C3H,(R0)=AAH,执行指令 ANL A,R0 后,(A)=82H【例】检测P1口低四位高四位不关心采用指令 MOV A,P1 A

25、NL A,#0FH 与操作常用于对某些不关心位进行“清0”,同时“保留”另一些关心位 2022/10/1646例:MOV A,30 ;取数ANL A,#0FH ;屏蔽高4位MOV 40H,A ;存低4位MOV A,30H ;再取ANL A,#0F0H ;屏蔽低4位SWAP A ;高低4位交换MOV 41H,A ;存高4位压缩BCD码拆成单字节BCD码设30H单元内容为56H,将高低四位拆开存放在40H,和41H 拆字程序 06H 05H40H41H42H 00000110B 06H 01010110B 56H 00001111B 0FH 01010000B 50H 01010110B 56H

26、11110000B F0H 与操作:4710(1)将R0的内容传送到R1; MOV A,R0 MOV R1,A(2)内部RAM单元60H的内容传送到寄存器R2 MOV R2,60H(3)外部RAM单元1000H的内容传送到内部RAM单元60H; MOV DPTR,#1000H MOVX A,DPTR MOV 60H,A2022/10/1648 (4)外部RAM单元1000H的内容传送到寄存器R2; MOV DPTR,#1000H MOVX A,DPTR MOV R2,A (5)外部RAM单元1000H的内容传送到外部RAM单元2000H。 MOV DPTR,#1000H MOVX A,DPTR

27、 MOV DPTR,#2000H MOVX DPTR, A2022/10/164913若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少? MOV A,50H MOV R0,A MOV A,#00H MOV R0,A MOV A,#3BH MOV 41H,A MOV 42H,41H(A)=3BH,(R0)=40H,(40H)=00H,(41H)=3BH,(42H)=3BH。2022/10/165016试编写程序,完成两个16位数的减法:7F4DH2B4EH,结果存入内部RAM的30H和31H单元,30H单元存差的高8位,31

28、H单元存差的低8位。CLR CYMOV A,#4DHSUBB A ,#4EHMOV 31H,A ;保存低字节相减结果MOV A,#7FHSUBB A,#2BHMOV 30H,A ;保存高字节相减结果2022/10/165117试编写程序,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将其存放在R1中MOV A, R1ANL A,#0FHMOV R1,AMOV A,R2ANL A,#0F0HORL A,R12022/10/16523.5.2 逻辑或【例】(A)=C3H,(R0)=55H,执行指令 ORL A,R0 后,(A)=D7H【例】 将P1口的高4位设置为高电平,其他位不变。 O

29、RL P1,#0F0H 或操作常用于对某些关心位进行“置1”,不关心位保持不变 2022/10/1653将累加器的A低四位数据送P1口的高四位,P1口的低四位不变。 ANL A,#0FH SWAP A ANL P1,#0FH ORL P1,A2022/10/16543.5.3 逻辑异或【例】(P1)=59H,高四位取反,其他位不变,执行指令 XRL P1,#0F0H ;结果(A)=A9H 异或操作常用于对某些关心位进行“取反”,不关心位保持不变 2022/10/16553.5.4 累加器清0和取反 把A的内容取反,结果仍在A中。CPL ACLR A例 若(A)=A5H,执行指令 CLR A 之

30、后,(A)=00H。 把A的内容清 0 ,结果仍在A中。利用取反指令,对40H单元内容求补。 MOV A,40H CPL A INC A MOV 40H,A573.5.4 逻辑清0和取反3.5.5 累加器循环移位2022/10/16583.6 控制转移类指令(17条)3.6.1 无条件转移短跳转AJMP addr11 ;PC (PC)+ 2,PC100 addr11 指令AJMP addr11称绝对转移指令,指令中包含有11位的转移地址,即转移的目标地址是在下一条指令地址开始的2k字节范围内。它把PC的高5位与指令第一字节中的第75位(第40位为00001)和指令的第二字中的8位合并在一起构成

31、16位的转移地址。该指令为两个字节,在实际使用中要注意跳转出范围的问题。2022/10/1659长跳转LJMP addr16 ;PC addr16 相对转移SJMP rel ;PC (PC)+ 2,PC (PC)+ rel 目标地址rel 对应范围为 127 128。 指令LJMP addr16称长跳转指令,允许转移的目标地址在64kB空间的范围内。指令SJMP rel是无条件相对转移指令又称短转移指令。该指令为双字节,指令中的相对地址是一个带符号的8位偏移量其范围为-128+127。负数表示向后转移,正数表示向前转移,该指令执行后程序转移到当前PC与rel之和所指示的单元。 2022/10/

32、1660【例】若“NEWADD”为地址1022H,PC的当前值为1000H。执行指令 SJMP NEWADD 后,程序将转向1022H处执行(rel=20H= 1022H1000H2)。解析如下:2022/10/1661 ORG 0000H LJMP MAIN ORG 0040H MAIN:MOV A,#0FEH LOOP:MOV P2,A LCALL D_1s RL A AJMP LOOP D_1s:MOV R6,#100D10ms:MOV R5,#40 DL:MOV R4,#123 NOP DJNZ R4,$ DJNZ R5,DL DJNZ R6,D10ms RET END2022/10/

33、1662散转移(间接长转移)JMP A+DPTR;PC (PC)+ 1,PC (A)+(DPTR) 可完成多条判跳指令的功能 【例】功能:当(A)=00H时,程序将转到 ROUT0处执行;当(A)=02H时,程序将转到 ROUT1处执行;。 MOV DPTR,#TABLE JMP A+DPTRTABLE:AJMP ROUT0 AJMP ROUT1 AJMP ROUT2 AJMP ROUT32022/10/16633.6.2 条件转移累加器判0转移比较不等转移比较两个操作数,不相等则转移,相等顺序执行作减法,影响标志位CY, 左 右,CY=0,无借位左 右,CY=1,有借位2022/10/166

34、4减1不为0转移2022/10/16651、将20H开始的32个单元全部清0将数据00H0FH写入20H开始的32个单元 MOV A , #00H ;A000H MOV R0,#20H ;R020H MOV R7,#20H ;R7计数,R732 LP1:MOV R0,A ;R0指示单元清0 INC R0 ;R0R0+1 INC A DJNZ R7,LP1 ;R7 R7-12022/10/1666将数据00H0FH写入RAM的30H3FH单元。可执行一下指令: MOV A,#00H MOV R0,#30HLOOP:MOV R0,A INC A INC R0 CJNE R0,#40H,LOOP20

35、22/10/1667【例】有一段程序如下,该程序执行后,(A)=10+9+8+7+6+5+4+3+2+1=37H MOV 23H,#0AH CLR ALOOPX:ADD A,23H DJNZ 23H,LOOPX SJMP $2022/10/16683.6.3 调用与返回调用 指令执行时将返回地址入栈 SP应设为合适值(默认值07H) 2022/10/1669 ORG 0000H LJMP MAIN ORG 0040H MAIN:MOV A,#0FEH LOOP:MOV P2,A LCALL D_1s RL A AJMP LOOP D_1s:MOV R6,#100D10ms:MOV R5,#40 DL:MOV R4,#123 NOP DJNZ R4,$ DJNZ R5,DL DJNZ R6,D10ms RET END2022/10/1670【例3】若(SP)=07H,标号“XADD”表示的实际地址为0345H,PC的当前值为0123

温馨提示

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

评论

0/150

提交评论