汇编语言知识点_第1页
汇编语言知识点_第2页
汇编语言知识点_第3页
汇编语言知识点_第4页
汇编语言知识点_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、精品好资料学习推荐第一章十进制与二进制之间的转换(P2)降幂法除法十进制与六进制之间的转换(P5)降幂法除法补码表示:正数:采用符号绝对值法 负数:先写出对应的正数的补码表示,然后再将其按位数求反,最后末尾加1,就可以得到负数的补码表示补吗运算:二进制数按位求反后在末尾加1第二章一、 存储容量1K = 1024 =210 (Kilo) 1M =1024K = 220 (Mega) 1G = 1024M = 230 (Giga)1个二进制位:bit (比特)8个二进制位:Byte(字节) 1Byte = 8bit2个字节:1 Word (字) 1Word = 2Byte = 16bit二、 存储

2、单元地址和内容1存储器以字节(8 bit)为编程单位2每个字节单元都有唯一的地址编码3地址用无符号整数来表示(编程用十六进制表示)4一个字要占用相继的两个字节5低位字节存入低地址,高位字节存入高地址6字单元地址用它的低地址来表示7机器以偶地址访问(读 / 写)存储器三、 物理地址 = 16 段地址 + 偏移地址四、 存储器的分段:20 根地址线:地址范围 00000H FFFFFH (1MB)机器字长16位:仅能表示地址范围 0000H FFFFH(64KB)小段:每16个字节为一小段,共有64K个小段段起始地址:小段首地址段的大小: 64K 范围内的任意字节五、 存储器的逻辑分段优点: 允许

3、程序在存储器内重定位;允许实模式程序在保护模式下运行;有利于程序和数据的分离。六、 中央处理器 8086/8088寄存器组:通用寄存器数据寄存器:AX,BX,CX,DX变址寄存器:SI、DI 指针寄存器:SP、BP控制寄存器: IP、FLAGS段寄存器:CS、DS、SS、ES七、 标志寄存器 ( FLAGS / PSW )条件标志位:OF 溢出标志 SF符号标志 ZF 零标志 CF 进位标志AF 辅助进位标志PF奇偶标志控制标志位:DF 方向标志IF中断标志TF陷阱标志八、 寄存器与存储器的比较:寄存器:在CPU内部 ;访问速度快;容量小,成本高;用名字表示;没用地址存储器:在CPU外部;访问

4、速度慢;容量大,成本低;用地址表示;地址可用各种方式形成第三章寻址方式操作数所在位置物理地址(PA)格式注意1.立即寻址存储器的代码段无MOV AL, 5只能用源操作数操作数和源操作数的长度一致2.寄存器寻址寄存器(唯一)无MOV AX, BX字节寄存器只有AH AL BH BL CH CL DH DLCS 不能用 MOV 指令改变,源操作数和目的操作数的字长一致3.直接寻址存储器段地址+位移量MOV AX,ES:2000HMOV AX,VALUEMOV AX,2000H默认的段地址存储在DS中遇到BP的段地址存储在SS可以使用段跨越前缀4.寄存器间接寻址存储器段地址+基址/变址MOV AX,

5、BXMOV AX,ES:BX可用的寄存器:BX BP SI DI不允许使用AX、CX、DX 存放偏移地址(EA)SRC 和 DST 的字长一致 使用BP时,默认的数据段是SS,其余都是DS5.寄存器相对寻址存储器段地址+基址/变址+位移量MOV AX,COUSIMOV AX,ES:COU+SIMOVAX,COU+SI可以使用段跨越前缀6.基址变址寻址存储器段地址+基址+变址MOV AX,BX+SIMOV AX,BXSI可以使用段跨越前缀7.相对基址变址存储器段地址+基址+变址+位移量MOV AX,MASKBXSIMOV AX.MASKBX+SI可以使用段跨越前缀九、 数据传送指令传送指令 MO

6、VCPU内部寄存器之间的数据传送指令格式:MOV DST, SRC执行操作:(DST) (SRC)注意: *DST、SRC 不能同时为段寄存器 MOV DS, ES * DST、SRC 不能同时为存储单元*立即数不能直接送段寄存器 MOV DS, 2000H * DST 不能是立即数和CS*不影响标志位交换指令 XCHG指令格式:XCHG OPR1, OPR2执行操作:(OPR1) (OPR2)例:XCHG BX, BP+SI XCHG AL, BH注意: * 两个操作数字长一致 * 两个操作数都不能是段寄存器* 两个操作数都不能是立即数* 两个操作数不能同时是存储单元* 可以采用除立即寻址方

7、式外的任何一种寻址方式。* 不影响标志位地址传送指令 LEA、LDS、LES1.有效地址送寄存器指令: LEA REG, SRC执行操作: (REG) SRC2.指针送寄存器和DS指令:LDS REG, SRC执行操作: (REG) (SRC)(DS) (SRC+2)相继二字 寄存器、DS3.指针送寄存器和ES指令: LES REG, SRC执行操作: (REG) (SRC)(ES) (SRC+2)相继二字 寄存器、ES注意: * 源操作数必须为存储器操作数* 目的操作数必须是一个16位通用寄存器,不能是段寄存器* 源操作数可以是除立即寻址和寄存器寻址以外的任意一种寻址方式* 不影响标志位堆栈

8、操作指令 PUSH、POP1.进栈指令: PUSH SRC执行操作: (SP) (SP) 2 ( (SP)+1, (SP) ) (SRC)出栈指令: POP DST执行操作: (DST) ( (SP)+1, (SP) ) (SP) (SP) + 2堆栈:先进后出的存储区,段地址存放在SS中,SP在任何时候都指向栈顶,进出栈后自动修改SP。注意:* 堆栈操作必须以字为单位。 * 不影响标志位 * 不能用立即寻址方式 PUSH 1234H * DST不能是CSPOP CS 堆栈的用途:临时保存寄存器的内容。PUSH AXPUSH BXPUSH CX ;其间用到AX、BX、CXPOP CX ; 后进

9、先出POP BXPOP AX标志操作指令LAHF、SAHF、PUSHF、POPF 、CLC、STC、CMC、CLD、STD、LI、STI标志传送指令:1.标志送AH指令: LAHF执行操作: (AH) (FLAGS的低字节)2.AH送标志寄存器指令:SAHF执行操作: (FLAGS的低字节) (AH)注意:* LAHF不影响标志位* SAHF影响CF、PF、AF、ZF、SF标志进栈指令:PUSHF执行操作:(SP) (SP) - 2 ( (SP)+1, (SP) ) (FLAGS)标志出栈指令:POPF执行操作:(FLAGS) ( (SP)+1, (SP) ) (SP) (SP) + 2注意:

10、PUSHF和POPF经常一起联用,完成保护、维护标志寄存器的内容或改变标志位的值。标志位操作指令:清进位标志指令CLC CF 0置进位标志指令STC CF 1进位标志取反指令CMC CF CF清方向标志指令CLD DF 0置方向标志指令STD DF 1清中断允许标志指令 CLI IF 0置中断允许标志指令 STI IF 1注意: * 只影响本指令指定的标志十、 加减法指令:加法指令:ADD DST, SRC 执行操作: (DST) (SRC) + (DST)带进位加法指令: ADC DST, SRC 执行操作: (DST) (SRC) + (DST) + CF加1指令: INC OPR 执行操

11、作:(OPR) (OPR) + 1注意: * 除INC指令不影响CF标志外,均对状态标志位有影响。各加法指令对条件标志位的影响:SF=1,结果为负 ZF=1,结果为0 CF=1,和的最高有效位有向高位的进位OF=1,两个操作数符号相同,而结果符号与之相反CF 位表示 无符号数 相加的溢出。OF 位表示 带符号数 相加的溢出。减法指令: SUB DST, SRC 执行操作: (DST) (DST) - (SRC)带借位减法指令: SBB DST, SRC 执行操作: (DST) (DST) - (SRC) - CF减1指令: DEC OPR 执行操作: (OPR) (OPR) - 1求补指令:

12、NEG OPR 执行操作: (OPR) - (OPR)比较指令: CMP OPR1, OPR2 执行操作: (OPR1) - (OPR2)各减法指令对条件标志位(CF/OF/ZF/SF)的影响:CF=1,被减数的最高有效位有向高位的借位 或 CF=1减数转换为加法运算时无进位OF=1 两个操作数符号相反,而结果的符号与减数相同CF 位表示 无符号数 减法的溢出。OF 位表示 带符号数 减法的溢出。NEG 指令对CF/OF的影响CF=0,操作数为0 OF=1,操作数为-128(字节运算)或-32727(字运算十一、 乘除运算指令无符号数乘法指令: MUL SRC带符号数乘法指令: IMUL SR

13、C执行操作:字节操作数 (AX) (AL) * (SRC)字操作数 (DX, AX) (AX) * (SRC)注意: * 目的操作数必须是累加器* AL (AX) 为隐含的乘数寄存器。* AX (DX,AX) 为隐含的乘积寄存器。* SRC不能为立即数。* 除CF和OF外,对条件标志位无乘法指令对 CF/OF 的影响:MUL指令: CF,OF =00乘积的高一半为零11否则IMUL指令: CF,OF =00乘积的高一半是低一半的符号扩展 11否则例:(AX) = 16A5H,(BX) = 0611H(1) MUL BX ; (DX, AX) (AX) * (BX) ; 16A5*0611=00

14、89 5EF5 ; (DX)=0089H (AX)=5EF5H CF=OF=1(2) IMUL BL ; (AX) (AL) * (BL) ; A5*11 5B*11=060B F9F5 ; (AX) = 0F9F5H CF=OF=1无符号数除法指令: DIV SRC带符号数除法指令: IDIV SRC执行操作:字节操作 (AL) (AX) / (SRC) 的商(AH) (AX) / (SRC) 的余数字操作 (AX) (DX, AX) / (SRC) 的商 (DX) (DX, AX) / (SRC) 的余数注意:* AX (DX,AX) 为隐含的被除数寄存器。* AL (AX) 为隐含的商寄

15、存器。* AH (DX) 为隐含的余数寄存器。* SRC不能为立即数。* 对所有条件标志位均无定义。十二、 类型转换指令CBW AL AX执行操作:若(AL)的最高有效位为0,则(AH)= 00H,若(AL)的最高有效位为1,则(AH)= FFHCWD AX (DX,AX)执行操作:若(AX)的最高有效位为0,则(DX)= 0000H,若(AX)的最高有效位为1,则(DX)= FFFFH例:(AX) = 0BA45HCBW ; (AX)=0045H CWD ; (DX)=0FFFFH (AX)=0BA45H注意: * 无操作数指令* 隐含对AL 或AX 进行符号扩展* 不影响条件标志位十三、

16、逻辑运算指令逻辑非指令:NOT OPR * OPR不能为立即数执行操作: (OPR) (OPR) * 不影响标志位CFOFSFZFPFAF00*无定义逻辑与指令:AND DST, SRC执行操作: (DST) (DST) (SRC)逻辑或指令:OR DST, SRC执行操作: (DST) (DST) (SRC)异或指令: XOR DST, SRC执行操作: (DST) (DST) (SRC)测试指令: TEST OPR1, OPR2执行操作: (OPR1) (OPR2)十四、 移位指令逻辑左移 SHL OPR, CNT逻辑右移 SHR OPR, CNT算术左移 SAL OPR, CNT(同逻辑

17、左移)算术右移 SAR OPR, CNT循环左移 ROL OPR, CNT循环右移 ROR OPR, CNT带进位循环左移 RCL OPR, CNT带进位循环右移 RCR OPR, CNT注意:* OPR可用除立即数以外的任何寻址方式* CNT=1,SHL OPR, 1CNT1,MOV CL, CNTSHL OPR, CL ; 以SHL为例* 条件标志位:CF = 移入的数值1 CNT=1时,最高有效位的值发生变化 0 CNT=1时,最高有效位的值不变移位指令:SF、ZF、PF 根据移位结果设置,AF无定义循环移位指令:不影响 SF、ZF、PF、AF十五、 控制转移指令: 无条件转移指令JMP

18、 条件转移指令JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、JP / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、JLE / JNLE、 JCXZ 循环指令LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE 子程序调用和返回指令CALL、RET 中断与中断返回指令INT、INTO、IRET十六、 与转移地址有关的寻址方式:用来确定转移指令及转子指令的转向地址段内寻址段内直接寻址 JMP NEAR PTR NEXT段内间接寻址 JMP TABLE BX 段间寻址段间直接寻址 JMP FAR PTR NEXT段间间接寻

19、址 JMP DWORD PTR BX 无条件转移指令:段内直接短转移:JMP SHORT OPR执行操作:(IP) (IP) + 8位位移量段内直接近转移:JMP NEAR PTR OPR执行操作:(IP) (IP) + 16位位移量段内间接转移:JMP WORD PTR OPR执行操作:(IP) (EA)段间直接远转移:JMP FAR PTR OPR执行操作:(IP) OPR 的段内偏移地址(CS) OPR 所在段的段地址段间间接转移:JMP DWORD PTR OPR执行操作:(IP) (EA) (CS) (EA+2)注意: * 不影响标志位十七、 条件转移指令注意: * 只能使用段内直接

20、寻址的8 位位移量* 不影响标志位(1) 根据单个条件标志的设置情况转移格式测试条件JZ(JE) OPR ZF = 1JNZ(JNE) OPR ZF = 0JS OPR SF = 1JNS OPR SF = 0JO OPR OF = 1JNO OPR OF = 0JP OPR PF = 1JNP OPR PF = 0JC OPR CF = 1JNC OPR CF = 0(2) 比较两个无符号数,并根据比较结果转移格式 测试条件 JB (JNAE,JC) OPR CF = 1JNB (JAE,JNC) OPR CF = 0JBE (JNA) OPR CFZF = 1 JNBE (JA) OPR

21、CFZF = 0* 适用于地址或双精度数低位字的比较(3) 比较两个带符号数,并根据比较结果转移*适用于带符号数的比较 格式 测试条件JL (JNGE) OPR SFOF = 1JNL (JGE) OPR SFOF = 0JLE (JNG) OPR (SFOF)ZF = 1 JNLE (JG) OPR (SFOF)ZF = 0 (4) 测试 CX 的值为 0 则转移格式 测试条件JCXZ OPR (CX)=0十八、 循环指令注意:* CX 中存放循环次数* 只能使用段内直接寻址的8 位位移量* 不影响标志位LOOPLOOPZ / LOOPELOOPNZ / LOOPNE执行步骤: (1) (C

22、X) (CX) 1(2)检查是否满足测试条件,如满足则(IP) (IP) + 8位位移量,实行循环;不满足则 IP 不变,退出循环循环指令:LOOP OPR测试条件:(CX) 0为零或相等时循环指令:LOOPZ(LOOPE) OPR测试条件:ZF=1 且 (CX) 0不为零或不相等时循环指令:LOOPNZ(LOOPNE) OPR测试条件:ZF=0 且 (CX) 0十九、 例:求首地址为 ARRAY 的 M 个字之和,结果存入 TOTALMOV CX, MMOV AX, 0MOV SI, AXAGAIN: ADD AX, ARRAYSIADD SI, 2LOOP AGAINMOV TOTAL,

23、AX二十、 串处理指令 串处理指令 串重复前缀 LODSB / LODSW REP STOSB / STOSW REPE / REPZ MOVSB / MOVSW REPNE / REPNZ SCASB / SCASW CMPSB / CMPSWLODS 从串取指令: LODS SRC LODSB (字节) LODSW (字)执行操作:字节操作:(AL)(SI), (SI)(SI)1字操作:(AX)(SI), (SI)(SI)2注意: * LODS 指令一般不与 REP 联用* 源串一般在数据段中(允许使用段跨越前缀来修改), 目的串必须在附加段中* 不影响条件标志位STOS 存入串指令:ST

24、OS DSTSTOSB (字节)STOSW (字)执行操作:字节操作:(DI)(AL), (DI)(DI)1字操作:(DI)(AX), (DI)(DI)2MOVS 串传送指令:MOVS DST, SRCMOVSB (字节)MOVSW (字)例:MOVS ES: BYTE PTR DI, DS: SI执行操作:(1) (DI) (SI)(2) 字节操作:(SI)(SI)1, (DI)(DI)1字操作: (SI)(SI)2, (DI)(DI)2方向标志 DF=0 时用 + ,DF=1 时用 - 。SCAS 串扫描指令: SCAS DST SCASB (字节) SCASW (字)执行操作:字节操作:

25、(AL) - (DI), (DI)(DI)1字操作:(AX) - (DI), (DI)(DI)2CMPS 串比较指令:CMPS SRC, DSTCMPSB (字节)CMPSW (字)执行操作: (1) (SI) - (DI)根据比较结果置条件标志位:相等 ZF=1;不等 ZF=0 (2) 字节操作:(SI)(SI)1, (DI)(DI)1字操作: (SI)(SI)2, (DI)(DI)2REP (与 MOVS / STOS配合工作)执行操作:(1) 如 (CX)=0 则退出 REP,否则转(2)(2) (CX) (CX) -1(3) 执行 MOVS / STOS / LODS (4) 重复 (

26、1) (3)REP MOVS:将数据段中的整串数据传送到附加段中。源串(数据段) 目的串(附加段)执行 REP MOVS 之前,应先做好:(1) 源串首地址(末地址) SI(2) 目的串首地址(末地址) DI(3) 串长度 CX(4) 建立方向标志 ( CLD 使 DF=0,STD 使 DF=1 ) REPE / REPZ REPNE / REPNZ (与CMPS 和 SCAS配合工作)执行操作: (1) 如 (CX)=0 或 ZF=0 (ZF=1) 则退出串操作,否则转(2) (2) (CX)(CX) -1 (3) 执行 CMPS / SCAS(4) 重复 (1) (3)例:从一个字符串中查

27、找一个指定的字符mess db COMPUTERlea di, mess mov al, T mov cx, 8 cld repne scasb例:比较两个字符串,找出它们不相匹配的位置lea si, mess1lea di, mess2mov cx, 8cldrepe cmpsb例:反向传送lea si, mess1+7lea di, mess2+7mov cx, 8STdrep movsb第四章二十一、 标号和变量(1)标号和变量都是标识符。标识符组成:字母 az ,数字 09,专用字符 ? . _ $标识符的组成规则:最大长度为31,第一个字符不能是数字,不区分字母的大小写,不能是汇编语

28、言的保留字(2)标号和变量的异同:不同:标号:用于汇编指令语句中,以冒号结束,在代码段中定义,经常在转移指令或call指令变量:用于伪指令语句中,不允许有冒号,在数据段或附加段中定义,经常在操作数字段出现相同:都有三种属性:段属性、偏移属性、类型属性二十二、 伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。处理器选择伪操作段定义伪操作程序开始和结束伪操作数据定义及存储器分配伪操作表达式赋值伪操作地址计数器与对准伪操作基数控制伪操作二十三、 段定义伪操作data segment ; 定义数据段 data ends;-ext

29、ra segment ; 定义附加段 extra ends;-code segment ; 定义代码段 assume cs:code, ds:data, es:extrastart: mov ax, data mov ds, ax ; 段地址 段寄存器 code ends end start说明:语句序列段假定伪指令ASSUME格式: ASSUME 段寄存器名:段名(这里只是一种指明,段寄存器的实际值,必须在程序中使用传送指令来赋值,cs除外)二十四、数据定义及存储器分配伪操作: 变量 助记符 操作数 , 操作数 , ; 注释 助记符:DB DW DD DF DQ DT例:DATA_BYTE

30、DB 10,4,10H,?DATA_WORD DW 100,100H,-5,?LABEL 伪操作: name LABEL type例:BYTE_ARRAY LABEL BYTEWORD_ARRAY DW 50 DUP (?) tos LABEL WORD表达式名 EQU 表达式ALPHA EQU 9BETA EQU ALPHA+18BB EQU BP+8说明:1、AB EQU DATA_ONE+2 (表达式中的标号和变量要先定义,例如: DATA_ONE)2、 “ = ” 伪操作 (允许重复定义) EMP = 7 EMP = EMP+1数值回送操作符: OFFSET、SEG、TYPE、 LEN

31、GTH、SIZE OFFSET / SEG 变量 / 标号功能:回送变量或标号的偏址 / 段址TYPE 变量 / 标号 / 常数DBDWDDDFDQDTNEARFAR常数1246810-1-20LENGTH 变量功能:回送由DUP定义的变量的单元数,其它情况回送1SIZE 变量功能:LENGTH * TYPE例:ARRAY DW 100 DUP (?)TABLE DB ABCDADD SI, TYPE ARRAY ; ADD SI, 2ADD SI, TYPE TABLE ; ADD SI, 1MOV CX, LENGTH ARRAY ; MOV CX, 100MOV CX, LENGTH T

32、ABLE ; MOV CX, 1MOV CX, SIZE ARRAY ; MOV CX, 200MOV CX, SIZE TABLE ; MOV CX, 1属性操作符: PTR、段操作符、SHORT、 THIS、HIGH、LOW类型 PTR 表达式 MOV WORD PTR BX, 5段操作符MOV ES: BX, ALSHORT 标号 JMP SHORT NEXTTHIS 类型 TA EQU THIS BYTE TD DW 1234H NEXT EQU THIS FAR MOV AX,2HIGH和LOW CONS EQU 1234HMOV AH, HIGH CONS MOV AL, LOW

33、CONS 第五章二十五、 分支程序设计(1) 条件控制(2) 逻辑尺控制(3) 地址跳跃表(值与地址有对应关系的表)第六章二十六、 CALL 调用指令段内直接近调用:CALL DST执行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (IP) + 16位位移量段内间接近调用:CALL DST执行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (EA)段间直接远调用:CALL DST执行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (CS) (SP) (SP) - 2 ( (SP)+1,(SP)

34、 ) (IP) (IP) 偏移地址 (CS) 段地址段间间接远调用:CALL DST执行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (CS) (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (EA) (CS) (EA+2)RET 返回指令段内近返回:RET执行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2段内带立即数近返回:RET EXP段间远返回:RET执行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2 (CS) ( (SP)+1,(SP) ) (SP) (SP) + 2段间带

35、立即数远返回:RET EXP二十七、 过程定义伪操作过程名 PROC NEAR ( FAR ) 过程名 ENDP(1)NEAR属性:调用程序和子程序在同一代码段中(段内调用)(2)FAR属性:调用程序和子程序不在同一代码段中(段间调用)二十八、 子程序调用与返回子程序调用:隐含使用堆栈保存返回地址call near ptr subp (1) 保存返回地址(2) 转子程序call far ptr subp (1) 保存返回地址(2) 转子程序子程序返回:ret二十九、 保存与恢复寄存器subt proc far push ax push bx push cx push dx pop dx pop cx pop bx pop ax retsubt endp三十、 子程序参数传递(1) 通过寄存器传送参数(2) 通过存储器传送参数(3) 通过地址表传送参数地址(4) 通过堆栈传送参数或参数地址(5) 多个模块之间的参数传送第七章三十一、 宏:源程序中一段有独立功能的程序代码。宏指

温馨提示

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

评论

0/150

提交评论