微机原理第3章续.ppt_第1页
微机原理第3章续.ppt_第2页
微机原理第3章续.ppt_第3页
微机原理第3章续.ppt_第4页
微机原理第3章续.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

第三节8086/8088的指令系统(续1) 三、逻辑运算和移位指令 (一)逻辑运算指令 (二)移位指令 (三)循环移位指令,三、逻辑运算和移位指令 (一)逻辑运算指令 1、AND 逻辑“与”指令 2、TEST 测试指令 3、OR 逻辑“或”指令 4、XOR 逻辑“异或”指令 5、NOT 逻辑“非”指令 特点:8086可以对8位,或16位操作数执行逻辑操作。 逻辑运算是按位操作,操作数应该是位串而不是数。,1、AND(Logical and)逻辑“与”指令 格式:AND dest, src ;B/W src: 立即数、通用寄存器、存储器 dest: 通用寄存器、存储器。 执行操作:进行“与”运算 (两位中有一位为0,则结果为0,否则为1) 操作类型:AND AL,0FH AND CX,DI AND SI,MEM_NAME AND ALPHA DI, AX AND word ptrSI,0FFFEH,注意: “与”指令中操作数不能同时为存储器; 影响标志位: CF0F=0,A未定义,SF,ZF,PF反映操作的结果。 “与”指令的用途: (1) 清CF , 自己“与”自己. 操作数不变 ,CF=0 例:AND AL ,AL; 结果:操作数不变 ,CF=0。 (2) 若使操作数中若干位保持不变,则若干位与“1”相与; 而若干位置为“0 “的场合,则若干位与“0” 相与。 例: 若(AL)=43H AND AL, 0FH ; (AL)=03H, (AL)03不变; ;(AL)47=0H,屏蔽高4位。,“与”指令应用举例: 例1:将英文小写字母ASCII转换成大写。 小写英文字母ASCII为:az 61H7AH 大写英文字母ASCII为:AZ 41H5AH 程序: MOV AL, a AND AL,0DFH ;(AL)=41H,0110 0001,0100 0001,1101 1111,61H,41H,DFH,2、 TEST测试指令 格式: TEST dest , src; (dest)(src) src: 立即数、通用寄存器、存储器 dest:通用寄存器、存储器 执行操作:二个操作数相与的结果不存,置标志位 操作类型举例: TEST BH, 7 TEST SI , BP TEST DI ,TABLEBX TEST SI,CH TEST word ptrBX, 6ACEH,用途:常常用来检测一些条件是否满足,但又不希望改 变原有的操作数的情况下用,常在此指令后边加一条 条件转移指令。 例:判断Al中数据的奇偶性 设: (AL)= 0AEH 程序: MOV AL,0AEH ;(AL)=0AEH TEST AL,01H JZ EVEN ;结果=0为偶数转EVEN 奇数处理 EVEN:偶数处理 检测(AL)的最低位是否为0,若为0转EVEN,3、OR(Logical inclusive or)逻辑“或”指令 格式:OR dest, src; dest:通用寄存器、存储器。 src:立即数、通用寄存器、存储器 执行操作: 进行按位“或”运算 例: OR BL,0F6H OR AH, BL OR CL ,BETABXDI OR GAMMASI ,DX OR MEM_BYTE , 80H,注意: “或”指令中操作数不能同时为存储器; 影响标志位: CF0F=0,A未定义,SF,ZF,PF反映操作的结果。 用途: (1)清CF , 自己与自己“或”,操作数不变,CF=0 例: OR AL ,AL ;(AL)不变,CF=0 (2)使某个操作数若干位保持不变,若干位与“0”或 ; 而要使若干位置1,若干位与“1”或 。 (3) 将两个操作数信息组合。 若(AL)=03H 用OR指令组合使(AL)=33H=3 。 OR AL,30H ;(AL)=33H,4、XOR(Logical exclusive or)逻辑“异或”指令 格式:XOR dset , src ;B/W dest:通用寄存器、存储器。 src:立即数、通用寄存器、存储器 执行的操作:对指令的两个操作数进行按位“异或”运算 二位不相同时为1, 相同时为0 XOR DI, 23F6H XOR SI , DX XOR CL , BUFFER XOR MEMBX,AX XOR byte ptrBP, 3DH,注意: “异或”指令中操作数不能同时为存储器; 影响标志位: CF0F=0,A未定义,SF,ZF,PF反映操作的结果。 用途:若要对某些特定位求反,其余位保持不变 让某些特定位与“1”异或,其余位与“0”异或 应用举例: 例1: 将AL中的第1,3,5,7位求反,0,2,4,6位保持不变。 XOR AL,0AAH,例2: 比较三条(AX)清“0”指令: XOR AX, AX ;清AX , 清CF, SUB AX, AX ;清AX , 清CF, MOV AX , 0 ;清AX ,不影响标志位, XOR清“0”指令在多字节累加程序中十分有用。,5、NOT(Logical not )逻辑“非”指令 格式: NOT src ;B/W 执行操作: 字节求反:(src)0FFH-(src) 字求反:(src) 0FFFFH-(src) 源操作数:通用寄存器、存储器,不能是立即数。 操作类型举例: NOT AH NOT CX NOT BYTE PTR BP NOT WORD PTR COUNT,综合举例: 1使某些位置“0”。 IN AL,61H;(AL)= B 想使此位为0 执行指令: AND AL, 即可。 2. 使某些位置“1”。 IN AL,61H;(AL)= 执行指令: OR AL, 想使此位为“1” 3. 使某些位求反: IN AL,61H ;(AL)= 0 XOR AL, 0 0 0 0 0 0 1 0 1 ,0FDH,02H,02H,逻辑指令应用小结: (1)AND指令常用来对指令的指定位清“0”。 (2)OR指令常用来对某些位置1。 (3)XOR指令用在程序开头,使某个寄存器清“0”。 (4)NOT指令对某个数据取反,+1成补码。 (5)TEST指令用来检测指定位为1,还是0。,(二)移位指令 (8086有8条移位指令) : 1、 算术逻移位指令( 4条 ): (1,2) SHL/SAL逻辑左移/算术左移指令 (3) SHR 逻辑右移指令 (4) SAR 算术右移指令 2、循环移位( 4条): (1) ROL 不含CF循环左移指令 (2) ROR 不含CF循环右移指令 (3) RCL 含CF循环左移指令 (4) RCR 含CF循环右移指令,1、 算术逻移位指令( 4条 ): (1)、 SHL/SAL(Shift logical left/shift arithmetic left)逻辑左移/算术左移指令 格式: SHL dest ,cnt ;逻辑左移指令 SAL dest ,cnt ;算术左移指令 dest : 通用寄存器、存储器 cnt : 表示移位次数 cnt=1,1可写在指令中。 cnt1,用CL存放移位次数,SHL/SAL指令操作示意图如下图所示: 指令格式举例: SHL AH,1 SAL SI, CL SAL WORD PTRBX ,1 SHL BYTE PTRBX, CL,dest,dest : 寄存器、存储器 指令格式举例:SHR BL , 1 SHR AX , CL SHR BYTE PTR DI+BP,1 SHR WORD PTR BLOCK ,CL,dest,(2)、SHR (Shift logical right )逻辑右移指令 格式: SHR dest ,cnt ;逻辑右移指令, B/W 执行操作:相当于无符号数2 SHR指令操作示意图如下图所示:,dset,dest :寄存器、存储器 指令格式举例:SAR AL , 1 SHR DL , CL SHR WORD PTR TABLESI,1 例:20/2=-10,(3)、SAR (Shift arithmetic right )算术右移指令 格式: SAR dest ,cnt ;算术右移指令, B/W 执行操作:相当于带符号数的2功能, SAR指令操作示意图如下图所示,应用举例: (BX)=84F0H (1) 若(BX)无符号数,求(BX)/2 SHR BX,1 ; (BX)=4278 CF=0,OF=1,SF=0,ZF=0 (2) 若(BX)带符号数,求(BX)/4 MOV CL,02H 或 SAR BX,1 SAR BX,CL SAR BX,1,算术移位与逻辑移位的区别:,(1)算术移位把操作数看作带符号数,故右移时最高位(符号位)不变;而左移1位时,若最高位与CF不同,说明移位前后符号位有变化,则溢出标志OF=1,表示有溢出。逻辑移位把操作数看作无符号数,故右移时最高位补0;而左移时,当左移1位时,与算术左移不同之处在于:通过CF判断是否产生溢出CF=1,表示有溢出 (2)左移1位相当于乘以2,其中的数值有可能超出给定范围,因此,有溢出问题;而右移1位相当于除以2,不存在溢出问题。,2、循环移位( 4条): ROL,ROR,RCL,RCR ROL,ROR 不含CF循环移位指令,操作数移动8次后还原。 RCL,RCR 含CF循环移位指令,操作数移动9次后还原。 影响标志OF、CF,dest,指令格式举例:ROL BH , 1 ROL DX , CL ROL WORD PTR TABLEDI,1 ROL BYTE PTR ALPHA ,CL,(1)、ROL (Rotate left )不含CF循环左移指令 格式: ROL dest ,cnt ;不含CF循环左移指令, B/W 执行操作:ROL指令操作示意图如下图所示 移动8次后操作数还原。,影响标志OF、CF 情况: 左循环移动1次后: 移位后,看最高有效位(符号位)是否发生变化: 如果移位后,最高有效位与CF不等,则:OF=1, 否则,OF=0 CF根据实际情况设置。 左循环移动多次后: OF 值不定。 CF=从目标操作数移出的最后一位。 SF、ZF、PF、AF不受影响。,(2)、ROR (Rotate right )不含CF循环右移指令 格式: ROR dest ,cnt ;不含CF循环右移指令, B/W 执行操作:ROR指令操作示意图如下图所示 右移8次后操作数还原。,dest,指令格式举例:ROR CX , 1 ROL BH , CL ROL BYTE PTRBETA , 1 ROL WORD PTR COUNT , CL,影响标志OF,CF情况: 右循环移动1次后: 如果移位后,最高位次高位,则OF=1;否则:OF=0。 CF根据实际情况而定。 右循环移动多次后: OF 值不定。CF=从目标操作数移出的最后一位。 SF、ZF、PF、AF不影响。,(3)RCL(Rotate left through carry)含CF循环左移指令 格式: RCL dest ,cnt ;含CF循环左移指令, B/W 执行操作:RCL指令操作示意图如下图所示 左移9次后操作数还原。,dest,指令格式举例:RCL BX , 1 RCL DL , CL RCL BYTE PTR ARRAYDI , 1 RCL WORD PTR SI+BP , CL,(4)RCR(Rotate right through carry)含CF循环右移指令 格式: RCR dest ,cnt ;含CF循环左移指令, B/W 执行操作:RCR指令操作示意图如下图所示 右移9次后操作数还原。,dest,指令格式举例:RCR DI, 1 RCR SI , CL RCR WORD PTRSI+BX+3, 1 RCL BYTE PTRPORT, CL,移位指令共同点: 所有移位指令都可以作B/W操作。 指令中的 dest : 寄存器、存储器寻址方式。 cnt : 表示移位次数 cnt=1,1可写在指令中 cnt1,用CL存放移位次数 ,不能是其他寄存器。 如: SAL AX,1 MOV CL,4 SAL AX,CL 利用移位指令编制,/程序,执行时间比直接用,/指令快,,四、串操作指令(String manipulation ) “串”就是内存中一段地址相连的字节或字。 串操作-对串中各项进行操作,也叫数据块操作。 8086有5种基本操作: 1、MOVS(Move string) 串传送指令 2、CMPS(Compare string) 串比较指令 3、SCAS(Scan string) 搜索串指令 4、LODS(Load from string) 从串取指令 5、STOS (Store in to string)存入串指令,特点: 源操作数用SI寻址,隐含DS值为段地址,可用段跨越前缀; 目标操作数用DI寻址,隐含ES为段地址。 可以只有源操作数,可以只有目标操作数,可能二者都有 每次操作对SI、DI 调整: DF=1,DI、SI自动-1(字节)或-2(字); DF=0,DI、SI自动+1(字节)或+2(字)。 与上述指令基本配合使用前缀有: REP(Repeat)重复 REPE/REPZ相等/为零则重复。 REPNE/REPNZ不相等/不为零则重复,REP 重复串操作执行过程:,REP执行流程图,如:REP MOVS ,注意: (CX)减1操作不影响标志 ZF标志由串操作决定 当(CX)=0或ZF=0时退出循环,REPZ执行流程,如:REPZ CMPS 串操作重复执行的条件是:cx不为0并且ZF=1,注意: (CX)减1操作不影响标志 ZF标志由串操作决定 当 (CX) = 0或ZF=1时退出循环,REPNZ执行流程,如:REPNZ CMPS 串操作重复执行的条件是:CX不为0且ZF0,(一)MOVS、STOS、LODS指令 MOVS(Move String) 串传送 LODS(Load from String) 从串取指令 STOS(Store into String) 存入串指令,MOVS(Move string)串传送 (1) MOVS dest,src;(ES):(DI)(DS):(SI) MOVSB (字节);(SI)(SI)1,(DI)(DI)1 MOVSW (字); (SI)(SI)2,(DI)(DI)2 当方向标志 DF=0时 用“+” DF=1时 用“-” 该指令不影响标志位,如: MOVSB ; ES:DI DS:SI * MOV单指令不能完成 存储单元之间的数据传送; MOVS指令就是为解决存储单元之间数据传送而设置的。,例:将内存的数据段中以AREA1为首地址的100个数据,传送到附加段中的AREA2为首地址的区域。,应用MOV指令编程: LEA SI,AREA1 LEA DI,AREA2 MOV CX,100 LOOP1:MOV AL,SI MOV ES:DI,AL INC SI INC DI DEC CX JNE LOOP1,用MOVS串操作指令编程: LEA SI,AREA1 LEA DI,AREA2 MOV CX,100 CLD REP MOVSB,数据段,附加段,归纳:在执行MOVS指令时,应该先做好以下准备工作: (1) 数据段中源串首地址(如反向传送到末地址)存入SI寄存器中 (2) 附加段中目的串首地址(或反向传送末地址)存入DI寄存器中 (3) 数据串长度存入CX寄存器 (4) 建立方向标志 建立方向标志介绍两条指令: CLD(clear direction flag) 功能:DF=0,执行串处理指令时 可以使地址自动+1或+2 STD(set direction flag) 功能:DF=1,执行串处理指令时可以使地址自动-1或 -2,LODS(Load from string) 从串取指令 LODS src;(字节)(AL)(DS):(SI), (SI)(SI) 1 (字)(AX)(DS):(SI),(SI)(SI)2 LODSB (字节) LODSW (字),功能:该指令把由(SI)指定的数据段中某单元内容 (AL)/(AX)中。 DF=0,(SI)(SI)+1或+2 DF=1,(SI)(SI)-1或-2,LODS应用注意: (1) 指令允许用段跨越前缀来指定非数据段的存储区。 (2) 该指令不影响标志位。 一般说来, 它一般不与REP联用,每重复一次,累加器的内容就改变一次。 (AL)中只能保持最后一个元素。 有时缓冲区中的一串字符需要多次取出测试时可用本指令。 适用于在一个循环中,用基本串操作指令构成复杂串操作时很有用。,3. STOS(Store into string)存入串指令 将(AL)或(AX) (ES):(DI),(DI) 1或2(DI) STOS dest;(字节) (ES):(DI)(AL) ,(DI) (DI) 1 (字) (ES):(DI)(AX),(DI) (DI) 2 STOSB (字节) STOSW (字),例:在附加段STORE开始存5个空格 程序: MOV AL,20H ;_ (AL) MOV CX,5 LEA DI,STORE CLD REP STOSB ;(ES):(DI) (AL) (DI) (DI)+1,用途:STOS与REP联用时,(CX)缓冲区长度,用来建立一串相同的值。,学习LODS,STOS指令应用 例:内存的DS段中有一个首地址为BLOCK补码表示的有符号数的数据块。要求将正,负数分别存于二个缓冲区(ES): 存放正数的缓冲区首址为PUOS-DATA, 存放负数的缓冲区首址为MINUS-DATA。 设:源数据块用SI寻址, 正数的目的区用DI寻址 负数的目的区用BX寻址 循环次数 ( CX ),LEA SI,BLOCK LEA DI,PUOS-DATA LEA BX,MINUS-DATA MOV CX,COUNT,传送过程: 用LODS指令把源数据取入(AL)中, 检查其符号,确定正、负, 若为正数用STOS指令送至正数缓冲区, 若是负数,把(DI)与(BX)交换,仍使用STOS传送, 传送完后再将(DI)与(BX)交换,恢复原值。,START:LEA SI,BLOCK LEA DI,PUOS-DATA LEA BX,MINUS-DATA MOV CX,COUNT CLD GOON: LODSB JNZ MINS JMP AGAIN MINS: AGAIN:DEC CX JNZ GOON HLT,TEST AL,80H,STOSB,XCHG BX,DI STOSB XCHG BX,DI,MOV ES:BX,AL INC BX,(二) 与 REPE/REPZ 联合工作的CMPS和SCAS指令 REPNE/REPNZ REPE/REPZ 当相等/为零时重复串操作 格式:REPE(或REPZ)CMPS SCAS 1、CMPS(Compare string) 串比较指令 2、SCAS (Scan string) 串扫描指令,搜索指令,1、CMPS(Compare string ) 串比较指令 CMPS dest,src;字节操作:(SI) (SI)1,(DI)(DI) 1 字操作:(SI) (SI)2,(DI) (DI)2 (ES) :(DI)-(DS):(SI),结果不存,置标志。 CMPSB (字节) CMPSW (字),注意:两数相减,只影响标志,不影响操作数。 其它操作规定与MOVS同。,学习REPZ CMPSB指令 利用CMPS指令对STRING1和STRING2二个字符串进行比较,如相同在RESULT单元送00H,不同送0FFH。 MOV SI,OFFSET STRING1 MOV DI,OFFSET STRING2 MOV CX,COUNT CLD REPZ CMPSB OUTPT: HLT,JNZ UNMAT ;,UNMAT:MOV RESULT,0FFH,MOV RESULT,0 ;,JMP OUTPT,ES:STRING2,0FFH,2、SCAS(Scan string) 串搜索(扫描)指令 (DI)字符串起始地址,(AL)或(AX)关键字 格式:SCAS dest SCASB(字节);(AL)-(ES):DI),(DI) (DI)1 SCASW(字); (AX)-(ES):DI),(DI) (DI)2,AL/AX,DI,ES,AL/AX (ES):(DI),注意:(AL)或(AX)-目的串 两数相减,只影响标志,不影响操作数。 其它特性与MOVS同,REPNE SCASB指令应用 例:要搜索的关键字放在(AL)或(AX)中,搜索某一数据块或字符串中有无关键字,若有,把搜索次数记下来;否则,bx送0,表示没有要搜索的关键字。 LEA DI,BLOCK MOV CX,COUNT MOV BX, COUNT MOV AL,CHAR DONE: HLT,SCASB,REPNE,JZ FOUND,FOUND: SUB BX,CX ;把搜索次数记下来,MOV BX,0 JMP DONE,DI,82H,56H,57H,FFH, ,ES:BLOCK, , ,应用举例: 例:一个数据块由大小写英文字母、数字、其他符号组成, 用CR(ASCII码0DH)结束。数据块首地址为BLOCK1。 将其传送到BLOCK2为首地址的内存区,并将英文中小 写英文字母(az)转换成大写英文字母(AZ),其余不变。 分析: 大小写英文字母中相应ASCII码的关系: az相应ASCII码为:61H7AH AZ相应ASCII码为:41H5AH 英文中小写英文字母(az)转换成大写英文字母(AZ): 只要将小写的ASCII码减去20H即可。 程序和流程图如下:,程序: LEA SI , BLOCK1 LEA DI , BLOCK2 CLD NEXT: LODSB CMP AL , 0DH JZ DONE CMP AL , 61H JC OK CMP AL , 7BH JNC OK SUB AL , 20H OK: STOSB JMP NEXT DONE: HLT,流程图,例题,1 设DATA为数据段中0076H单元的符号名,其中存放的字为3412H,问执行下列指令后,BX寄存器内容为多少? (1)MOV BX,DATA (2) LEA BX,DATA 2. 下列程序段执行时AL的值是多少?并标出各条指令执行后OF/SF/ZF/CF各标志位的变化? XOR AL,AL MOV AL,7FH ADD AL,1 ADD AL,80H MOV AH,2 SUB AL,AH,OF=0,SF=0,ZF=1,CF=0,AL=00H OF=0,SF=0,ZF=1,CF=0,AL=7FH OF=1,SF=1,ZF=0,CF=0,AL=80H OF=1,SF=0,ZF=1,CF=1,AL=00H OF=1,SF=0,ZF=1,CF=1,AL=00H OF=0,SF=1,ZF=0,CF=1,AL=0FEH,3. 已知AX=03D8H,BX=55AAH,在执行下列指令后,AX=? NOT AX NEG AX AND AX,BX OR AX,BX XOR AX,BX CMPAX,BX TEST AX,80H OR AX,80H AND AX,0FH XOR AX,0FH,0FC27H 0FC28H 0188H 57FAH 5672H 03D8H 03D8H 03DFH 0008H 03D7H,4. 写出完成下列操作的指令组 (1)将累加器AX清零,并将进位标志CF清零 (2)取AX的低四位 (3)将BX的高8位置1,其他位不变 (4)不用取立即数,也不用存储单元中的数据,使AL=-1,BL=0,CL=1,(1)XOR AX,AX 或AND AX,0 或SUB AX,AX (2)AND AX,000FH (3)OR BX,0FF00H (4)XOR BL,BL MOV CL,BL MOV AL,BL INC CL SUB AL,CL,作业:,阅读以下程序段,说明其运行结果 (1) MOV DX,0F100H MOV DH,DX MOV AH,DX 初值: (F100H)=41H (4100H)=42H 结果: (AH)=? (2) MOV SI,2100H MOV 2800H,SI MOV SP,2800H POP DI 结果: (DI)=? (SP)=?,(3) MOV SI,2000H MOV DI,3000H MOV SP,0FF00H PUSH SI PUSH DI XCHG SI,DI MOV AL,SI MOV BL,DI POP SI POP DI 初值: (2000H)=31H (3000H)=61H 结果: (AL)=? (BL)=? (DI)=? (SI)=? (SP)=? 说明以下8086指令是否正确,如果不正确,简述理由 ADD BL,0F100H INC 2000H SUB ES,20H MUL BL,CL AND 0FH,AL DIV 08H CMP SI,DI SAL AX,5,阅读以下程序段 MOV SI,4000H MOV DI,4100H MOV AL,SI ADD AL,DI DAA MOV DI,AL MOV AL,SI+1 ADC AL,DI+1 DAA MOV DI+1,AL (1) 根据给定的初值,说明运行结果 (4000H)=63H, (4001H)=54H, (4100H)=88H, (4101H)=29H 结果: (4100H)=? (4101)=? (2) 在以上程序段中,当执行ADD AL,DI指令后,但尚未执行DAA指令时,(AL)=? (CF)=? (ZF)=? (SF)=? (AF)=? (OF)=? (PF)=? (3) 在以上程序段中,当第一次执行DAA指令后, (AL)=? (CF)=? (ZF)=? (SF)=? (AF)=? (OF)=? (PF)=? (4) 如果在以上程序段中去掉两条DAA指令,但是初值不变,则运行结果为? (4100H)=? (4101H)=?,阅读以下程序段 START: LEA BX,TABLE MOV CL,BX LOOPER: INC BX MOV AL,BX CMP AL,0AH JNC X1 ADD AL,30H X1: ADD AL,37H JMP NEXT NEXT: MOV BX,AL DEC CL JNZ LOOPER (1) 假设从地址TABLE开始,10个存储单元的内容依次为:05H,01H,09H,0CH,00H,

温馨提示

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

评论

0/150

提交评论