汇编语言复习提纲PPT课件.ppt_第1页
汇编语言复习提纲PPT课件.ppt_第2页
汇编语言复习提纲PPT课件.ppt_第3页
汇编语言复习提纲PPT课件.ppt_第4页
汇编语言复习提纲PPT课件.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

教材 IBM PC汇编语言程序设计主讲教师 陈宏联系方式 chenhong0327 汇编语言程序设计 1 总评成绩构成 考试成绩 70 平时成绩 10 20 实验成绩 20 10 考试时间 地点 11B102 2 考试题型 选择题20 填空题20 判断题10 程序分析题20 程序设计题30 考试范围 第1章 第11章 3 第1章基础知识 数制转换 R B O H 进制转换为十进制 十进制转换为R B O H 进制 R B O H 进制间的相互转换 补码数的表数范围 n 8 16 字符的表示 ASCII 0 9 A Z a z 空格 回车 换行 4 二进制 十进制及十六进制对应关系 二进制 八进制对应关系 5 课堂练习把十进制数65533转换成二进制 八进制和十六进制 参考答案 二进制 1111 1111 1111 1101B八进制 177775O十六进制 FFFDH 对不同机器字长n 8 16 32 64 补码的表数范围为 n 8 n 16 n 32 6 标准的ASCII码共128个字符 分为二类 非打印的和可打印的ASCII码 非打印ASCII码 这类编码用于控制性代码 共33个 如 BEL 响铃 07H DEL 删除 7FH CR 回车 0DH LF 换行 0AH 等 可打印ASCII码 共有95个 其中有 数字0 9的编码30H 39H大写字母A Z的编码41H 5AH小写字母a z的编码61H 7AH空格 Space 的编码20H 7 Intel8086 8088CPU共有14个十六位寄存器 分别为 通用寄存器8个 控制寄存器2个 段寄存器4个 8086寄存器 通用寄存器 控制寄存器 段寄存器 AXBXCXDXSPBPSIDI IP指令指针寄存器FLAGS标志寄存器 CS代码段寄存器DS数据段寄存器ES附加段寄存器SS堆栈段寄存器 第2章8086寄存器结构和使用 8 上述寄存器在某些指令中 或在某种场合下又有其默认的用法 通常是 1 AX的默认用法有 AX为十六位累加器 AL为八位累加器 在I O指令 IN OUT 中必须用AX或AL AX与DX配合组成32位数据 DX中存放高16位数据等 在乘法和除法指令中必须使用AX 2 BX常做为基地址寄存器 3 CX常用作计数器 在串操作或用循环指令 如LOOP等 中的循环计数必须选用CX 4 DX作为数据寄存器 在I O端口操作中存放端口地址 与AX配合形成32位数据 9 堆栈指针SP是指向堆栈段栈顶存储单元的偏移量 且总是指向栈顶 进栈与出栈的操作 字操作 皆由SP来指明偏移地址 堆栈指针SP就是这样的隐含使用 基址指针BP作地址指针时 默认的也是堆栈段 用BP作地址指针可以对堆栈中任何字节存储单元或字单元进行操作 这与SP所不同之处 但BP指明的存储单元可允许段跨越 指令指针寄存器IP与其它计算机和微处理器中程序计数器PC的作用类同 它是指令的地址指针 它用来存放代码段中的偏移地址 在程序运行的过程中 它始终指向下一条指令的首地址 称为当前IP 它与CS寄存器联用确定下一条指令的物理地址 10 PSW ProgramStatusWord 为程序状态字寄存器 这是一个16位寄存器 也称为标志寄存器 用来反映微处理器在程序运行时的某些状态 PSW寄存器中有9个标志位 其中6个标志位 OF SF ZF AF PF CF 作为状态标志 记载了刚刚执行完算术或逻辑运算指令后的某些特征 另外三个标志位为DF IF TF作为控制标志 完全由编程者设定 在执行某些指令时起控制作用 程序状态字寄存器PSW 8086的标志寄存器 11 DF DirectionFlag 方向标志 主要用在串处理指令中控制处理信息的地址增减的方向 当DF位置 1 时 使用STD指令 每次串操作后变址寄存器SI和DI自动减1 字节操作 或减2 字操作 这样就使串处理从高地址向低地址方向处理 当DF为 0 时 则使变址寄存器SI和DI自动加1 字节操作 或加2 字操作 使串处理从低地址向高地址方向进行 IF InterruptFlag 中断标志 这个标志位主要针对外中断中可屏蔽中断的开放或禁止 当IF 1 时 CPU允许响应可屏蔽中断 相反 IF 0 时 则不允许响应可屏蔽中断 这里所说的屏蔽即为 拒绝 之意 用STI指令使IF置 1 用CLI使IF 0 TF 又称陷阱标志 TrapFlag 又称跟踪标志 TraceTlag 或称单步标志位 用于单步方式操作 当TF 1 时 在执行完一条指令后 产生单步中断 这在DEBUG调试程序状态下 可以使指令单步运行 可逐一检查各寄存器内容 标志状态 存储器的检查或修改等等 TF 1 时为调试程序时所用 当程序调试成功后让TF 0 CPU正常工作不产生单步中断 控制标志位 12 第3章存储器的分段 基本概念 地址 内容 不同单元地址的定义等 实模式下最大寻址空间 段的最大寻址空间等 物理地址的计算 段地址 偏移地址 存储器地址的分段8086 8088CPU有20根地址总线A19A18 A1A0 可以访问存储器的最大容量为 220B 1048576B 1024KB 1MB在PC机里采用了存储器地址分段的办法 把IMB的存储空间划分成若干个段 Segment 每个段可由1 64KB 最大64KB 个连续的字节单元组成 每个段是一个可独立寻址的逻辑单位 13 逻辑地址与物理地址CPU访问主存必须传送出物理地址 而用户编程则使用逻辑地址 于是在8086 8088系列微型机中 每个存储单元都有两种形式的地址 物理地址 PhsysicalAddress 和逻辑地址 LogicalAddress 以及CPU内如何把程序员使用的逻辑地址形成物理地址 真实地址 的问题 每一个存储单元的物理地址是唯一的 就是这个单元的地址编码 CPU与存储器之间的任何信息交换 都必须使用20位的物理地址先行 经地址译码器后形成开门信号 把被访问的存储单元的 门 打开 方能进行数据交换 在程序设计中 程序员使用的是逻辑地址 而不使用物理地址 这不仅有利于程序的开发 且对存储器的动态管理也是有利的 一个逻辑地址是由段基值和偏移量 OFFSET 两部分组成 而且都是无符号的16位二进制数 14 物理地址的计算 计算公式 物理地址 段地址 10H 偏移地址 每个存储单元只有唯一的物理地址 但它却可以由不同的段地址和不同的偏移地址组成 15 第4章数据和指令的寻址方式 与数据有关的寻址方式 要求熟练分析源操作数和物理操作数的寻址方式 计算对应的物理地址 EA等 立即寻址MOVAX 2000H寄存器寻址MOVAX BX直接寻址MOVAX 1000H 寄存器间接寻址MOVAX SI 寄存器相对寻址MOVAX ARRAY DI 基址变址寻址MOVAX BX SI 相对基址变址寻址MOVAX ARRAY BX DI 16 需要注意的问题 1 对大多数指令而言 目标 目的 操作数不能使用立即寻址方式 2 EA只对存储器操作数 立即寻址和寄存器寻址无物理地址 3 对存储器操作数 能用于存放地址的寄存器是 BXBPSIDI 其它寄存器不能使用 4 对大多数指令而言 目标 目的 操作数和源操作数不能同时使用存储器操作数 5 计算物理地址时 BP默认与SS搭配 BX SI DI默认与DS搭配 17 例 DS 091DH SS 1E4AH AX 1234H BX 0024H CX 5678H BP 0024H SI 0012H DI 0032H 分析下列指令的寻址方式 并求出存储器操作数的物理地址 1 MOVCL 20H BX SI 解 源操作数相对基址变址寻址目的操作数寄存器寻址求物理地址 EA 20H BX SI 20H 24H 12H 56HPA DS 10H EA 091DH 10H 56H 09226H 2 MOV BP DI CX 解 源操作数采用寄存器寻址 目的操作数用基址变址寻址目标操作数的物理地址 EA BP DI 24H 32H 56HPA SS 10H EA 1E4AH 10H 56H 1E4F6H 18 第5章80X86的指令系统 数据传送指令 通用数据传送指令 MOVPUSHPOPXCHG 换码指令 XLAT 地址传送指令 LEALEABX ARRAY等价的指令MOVBX OFFSETARRAY 19 例 分析下列指令执行后 各寄存器的值 MOVAX 200HMOVBX 300HMOVCX 950HPUSHAXPUSHBXPUSHCX 其间用到AX BX CXPOPCXPOPBXPOPAX 该程序段执行完后 AX 200H BX 300H CX 950H POPAXPOPCXPOPBX 则执行完后 各寄存器的值 AX 950HBX 200HCX 300H 20 第5章80X86的指令系统 算术指令 加法指令 ADDADCINC 减法指令 SUBSBBDECCMPNEG 乘法指令 MULIMUL 除法指令 DIVIDIVCBWCWD 上述指令对标志位的影响 单个指令使用及在程序设计中的应用 21 例 综合运算举例 计算 V X Y Z 540 X其中X Y Z V均为16位带符号数 已分别装入X Y Z V单元中 要求计算结果把商存入AX 余数存入DX 第一步 完成乘法运算X Y MOVAX XIMULY第二步 保存计算结果 低位保存到CX 高位保存到BXMOVCX AXMOVBX DX注意 乘法运算完后 结果为32位数 22 算术指令 除法指令 第三步 完成求和运算 X Y ZMOVAX ZCWDADDCX AXADCBX DX 第四步 完成X Y Z 540SUBCX 540SBBBX 0第五步 完成V X Y Z 540 MOVAX VCWDSUBAX CXSBBDX BX 第六步 完成除法运算IDIVX结果 商送AX 余数送DX 23 乘法除法指令使用 例 分析指令执行后 AX的值 MOVAX 0FFFAHMOVBL AHIMULBL MOVAX 0A9HMOVBL 0E8HDIVBL AX 6 AX 0A900H 24 第5章80X86的指令系统 逻辑指令 逻辑运算指令 ANDORNOTXORTEST 移位指令 SHLSALSHRSAR 循环移位指令 ROLRORRCLRCR 串处理指令 REPMOVSCLDSTD 25 例 若要把AX中的高位字节置为0 低位字节内容保持不变 AX 789AH 处理完后 AX 9AH 例 若上例 AX 789AH 处理完后 要求 AX 78FFH 该用什么指令实现 ANDAX 0FFH ORAX 0FFH 例 寄存器清零的几种方式 XORAX AXMOVAX 0SUBAX AX 26 TEST的应用 该指令主要是用来测试目的操作数中 对应位是否为 1 测试时 对应位置为1 无关位设置为0 例 测试BX中D8是否为0 TESTBX 100H 即D8位置为1 其它位为0 结果 若ZF 1 则该位为0 若ZF 0 该位为1 例 测试AX中D15 D9 D7 D1 D0是否全为0 TESTAX 8283H 结果 若ZF 1 则这些被测试位全为0 若ZF 0 则这些被测试位中不全为0 27 例 乘2 除2的操作 在数的表示范围内 乘2操作用左移指令实现 除2操作用右移指令实现 无符号数用逻辑移位指令 带符号数用算术移位指令 乘2 MOVAX 100HMOVCL 4SHLAX CL 执行完后 AX 1000H即相当于乘以24 除2 MOVAX 100HMOVCL 2SHRAX CL 执行完后 AX 40H即相当于除以22 28 例 已知AX 0ABCDH CL 8 则下列指令执行后 AX的值是多少 SHLAX CLSHRAX CLSARAX CLROLAX CLRORAX CL AX 0CD00H AX 00ABH AX 0FFABH AX 0CDABH AX 0CDABH 29 例 分析下列程序段执行后 AX的值 XORAX AXMOVAX 0A2D5HMOVCL 3RCLAX CLADCAX 1234H 答 AX 28DFH 分析 第四条指令执行完 AX 16AAH CF 1 第五条指令注意要加上CF的值 AX 0 CF 0 AX 0A2D5H CF 0 AX 16AAH CF 1 AX 0A2D5H CF 0 AX 28DFH CF 0 30 串处理指令 串传送指令举例 例 在数据段datarea中有一个字符串 其长度为17 要求把它们转送到附加段extra中的一个缓冲区 程序如下 先完成数据段和附加段定义 其中源串放在数据段 目的串放在附加段 datareasegment 定义数据段mess1db personalcomputer datareaendsextrasegment 定义附加段mess2db17dup 在存储器中分配17个字节单元的空间extraends 31 codesegmentassumecs code ds datarea es extra movax datareamovds ax 数据段地址送dsmovax extramoves ax 附加段地址送es leasi mess1 mess1首地址送sileadi mess2 mess2首地址送dimovcx 17 字符串大小cld 地址自动增量方式repmovsb 重复实现串复制 codeends 32 第5章80X86的指令系统 条件转移指令 测试单个标志的转移指令 测试ZF的指令 JZ JE JNZ JNE 测试SF的指令 JS JNS 测试OF的指令 JO JNO 测试PF的指令 JP JPE JNP JPO 测试CF的指令 JB JC JNAE JNB JNC JAE 33 无符号 带符号的转移指令 循环指令 LOOP 34 例 判断AX当前值的正负 非零数 若为正数 则置CX为50 否则令CX为200 程序段一 CMPAX 0JNSLMOVCX 200JMPNEXTL MOVCX 50NEXT 比较AX是否为0 若AX为0 则转移 若AX不为0 则令CX 200 跳转到NEXT 程序段二 ADDAX 0JSLMOVCX 50JMPNEXTL MOVCX 200NEXT 程序段三 用ZF测试 TESTAX 8000HJNZLMOVCX 50JMPNEXTL MOVCX 200NEXT 35 例 已知X为16位的数 判断X是奇数还是偶数 若为奇数 则令Z X 若为偶数 令Z 0 程序段一 用ZF测试 MOVAX XTESTAX 1JNZLMOVZ 0JMPNEXTL MOVZ AXNEXT 程序段二 用CF测试 MOVAX XBTAX 0JCLMOVZ 0JMPNEXTL MOVZ AXNEXT SHRAX 1 36 例 设X Y均为存放在BUF1和BUF2单元中的16位带符号数 满足X 100转移到TOOHIGH去执行 否则作X Y 如出现溢出 则转移到OVERFLOW去执行 否则计算 X Y 并把结果存入RESULT中 主要的程序段为 MOVAX BUF1 取X值CMPAX 100JGTOOHIGH X 100转SUBAX BUF2 X Y AXJOOVERFLOW 溢出转OVERFLOWJNSNEXT 为非负数 则转NEXTNEGAXNEXT MOVRESULT AXTOOHIGH OVERFLOW 37 例 X Y为两个带符号双精度数 已分别存放于DX AX及BX CX中 要求编制一个程序使X Y时 转向L1执行 X Y时转向L2执行 X Y时转L3执行 主要程序段如下 CMPDX BX 先比较高16位为带符号数JGL1JLL3CMPAX CX 再比较低16位为无符号数JAL1JBL3L2 L1 L3 38 例 M字数组的首地址ARRAY 试编写一个程序 求出该数组的内容之和 不考虑溢出 并把结果存入TOTAL中 程序段如下 MOVCX M 循环次数MOVAX 0 AX寄存器清0MOVSI AX SI寄存器清0LSTART ADDAX ARRAY SI ADDSI 2LOOPLSTARTMOVTOTAL AX 结果送TOTAL 39 例 已知ARRAY为字数组 有200个元素 试统计该数组中零的个数 把结果放在BX中 程序段如下 XORBX BX BX清零MOVCX 200 数组元素个数LEASI ARRAY 数组首地址送SICLD DF 0AGAIN LODSW 从数组取一个数CMPAX 0 比较是否为零JNZNEXT 不为零则跳转INCBX 为零则统计个数NEXT DECCX CX减一JNZAGAIN 不为零则继续统计 程序段也可改写为 XORBX BXMOVCX 200LEASI ARRAYAGAIN MOVAX SI CMPAX 0JNZNEXTINCBXNEXT ADDSI 2LOOPAGAIN 程序段也可改写为 XORBX BXMOVCX 200MOVSI 0AGAIN MOVAX ARRAY SI CMPAX 0JNZNEXTINCBXNEXT ADDSI 2DECCXJNZAGAIN 40 第6章汇编语言程序格式 段定义伪操作 数据定义及存储器分配伪操作DBDWDDDFDQDTDUP 表达式赋值伪操作EQU 使用特点 差别 41 数据定义及存储器分配伪操作 DUP操作可以嵌套 试给出下列变量所占用的存储空间 字节数 ARRAYDB ABC 200DUP 20 10DUP EF 5 6 10 TESTDW1 2 10DUP 20DUP 9 5DUP 7 6 5 10 例 DUP嵌套使用ARRAY3DB100DUP 0 2DUP 1 2 0 3 占用的存储单元数为 100 1 2 1 1 1 1 700B 答案 1 ARRAY8403 TEST6424 42 例 试分析下列程序段执行完后 AX的值 ORG3200HARRAYDB abc EVENLISTDW1 2 3 4 5 MOVCX 3LEABX LIST SHLCX 1 ADDBX CX MOVAX BX 答案 AX 320EH BX 3204H CX 6 BX 320AH 43 第7 10章程序设计 找最大 最小值问题 奇数 偶数 正 负数判断 个数统计问题 累加求和问题 求平均数问题 数的大小判断和归类问题 字符串复制问题 不等数判断 求绝对值问题 44 分支程序设计举例 例 已知X Y是字变量 编制完整的程序段实现如下要求 1 当X和Y均大于0时 A 3 2 当X和Y均等于0时 A 2 3 当X和Y均小于0时 A 1 4 其他情况 A 0 分析 这是个多重分支结构的程序 可以先判断X 即X 0 再判断Y的情况 若Y 0 则执行A 3 否则A 0 依此类推 可以完成其它操作 45 程序分支部分的流程框图 46 参考程序 数据段 定义相关变量 分配储存空间 datasegment 定义x y a变量xdw ydw adw dataends codesegment 代码段assumecs code ds datastart movax datamovds ax 设置ds 47 参考程序 cmpx 0jgl1 大于0则转移L1cmpx 0 比较x的大小 此指令可省略jll5 小于0则转移到L5cmpy 0 比较y 0 jnzzero 不等则转移到ZEROmova 2 令a 2jmpexit 结束分支部分 l5 cmpy 0 比较y是否小于0 jnlzero 不小于则转移到ZEROmova 1 令a 1jmpexit 48 参考程序 l1 cmpy 0 比较y是否大于0jngzero 不大于则转移到ZEROmova 3 大于则令a 3jmpexitzero mova 0 令a 0 exit movah 4ch 返回int21hcodeendsendstart 49 例 已知有四个16位带符号数W X Y和Z 试编写程序 若四个数中有一个为0 则把另外三个单元清零 若四个数都不为0 则求其累加和 不考虑溢出 并保存到BUF单元中 参考程序 DATASEGMENTWDW 定义变量XDW YDW ZDW BUFDW DATAENDSCODESEGMENTASSUMECS CODE DS DATA 50 START MOVAX DATAMOVDS AXCMPX 0JZZEROCMPY 0JZZEROCMPZ 0JZZEROCMPW 0JZZEROMOVAX WADDAX X 四个数累加ADDAX YADDAX ZMOVBUF AXJMPNEXT 置四个数为0ZERO MOVW 0MOVX 0MOVY 0MOVZ 0NEXT MOVAH 4CHINT21HCODEENDSENDSTART 51 例 从STR1为起始地址的100个字符 依次传送到以STR2为起始地址的连续字节存储单元中 设两个数组不发生重叠 试用不同寻址方式编写循环程序 方法一 采用寄存器间接寻址方式编写循环程序 DATASEGMENTSTR1DB AB D 共100个字符STR2DB100DUP DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXLEABX STR1 取源数组首址LEASI STR2 取目标数组首址MOVCX 100 置循环次数LOP MOVAL BX MOV SI AL 完成字符传送INCBX 修改地址指针INCSI LOOPLOPMOVAH 4CHINT21HCODEENDSENDSTART 52 方法二 用寄存器相对寻址方式编写循环程序 DATASEGMENTSTR1DB AB D 共100个字符STR2DB100DUP DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXMOVSI 0MOVCX 100LOP MOVAL SI STR1 MOV SI STR2 ALINCSILOOPLOPMOVAH 4CHINT21HCODEENDSENDSTART 53 方法三 采用基址变址寻址方式编写循环程序 DATASEGMENTSTR1DB AB D 共100个字符STR2DB100DUP DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXMOVBX OFFSETSTR1LEABP STR2MOVSI 0MOVCX 100LOP MOVAL BX SI MOVDS BP SI AL 段超越指向数据段INCSILOOPLOPMOVAH 4CHINT21HCODEENDSENDSTART 54 方法四 采用串传送指令编写循环程序 数据段定义如方法三 此处略 CODESEGMENTASSUMECS CODE DS DATA ES DATASTART MOVAX DATAMOVDS AXMOVES AX 附加段的段首址与数据段重叠LEASI STR1 取原串首址LEADI STR2 取目的串首址MOVCX 100 取字符长度CLD 增址方问REPMOVSBMOVAH 4CHINT21HCODEENDSENDSTART 55 例 从字节变量X单元开始 连续存放有100个无符号数 从中找出最大者送入MAX字节单元中 分析 可把第一个数先送到AL中 将AL中的数与后面的99个数逐个进行比较 如果AL中的数大于或等于与之相比较的数 则转下一个数进行比较 若AL中的数小于相比较的数 则把相比较的数送入AL中 保证AL中的数始终处于较大的数 比较99次之后最大数必定在AL中 最后把AL中的数送入MAX单元 程序编写如下 DATASEGMENTXDB106 135 101 210 共100个MAXDB DATAENDSSTAKSEGMENTSTACKDW20HDUP STAKENDS 56 CODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXLEABX XMOVAL BX MOVCX 99LOP INCBXCMPAL BX JAEL1MOVAL BX L1 LOOPLOPMOVMAX ALMOVAH 4CHINT21HCODEENDSENDSTART 57 例 已知字数组ARRAY 有50个元素 试编写程序 从中找出最大值 把结果放在MAX中 DATASEGMENTARRAYDW50DUP MAXDW DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXLEASI ARRAYMOVCX 49MOVAX SI ADDSI 2AGAIN CMPAX SI JGNEXTMOVAX SI NEXT ADDSI 2LOOPAGAINMOVMAX AXMOVAX 4C00HINT21HCODEENDSENDSTART 58 例 已知字数组ARRAY 有N个元素 试编写程序 把数组中的正数累加 结果放在SUM中 不考虑溢出 并统计正数个数 保存到COUNT DATASEGMENTARRAYDWNDUP SUMDW0COUNTDW0DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXLEASI ARRAYMOVCX N AGAIN MOVAX SI CMPAX 0JLENEXTADDSUM AXINCCOUNTNEXT ADDSI 2LOOPAGAINMOVAX 4C00HINT21HCODEENDSENDSTART 59 例 试编写程序 求级数12 22 32 的前n项和刚大于1000的项数n 并在屏幕上显示结果 用十六进制 注

温馨提示

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

评论

0/150

提交评论