X86寻址方式与指令系统_第1页
X86寻址方式与指令系统_第2页
X86寻址方式与指令系统_第3页
X86寻址方式与指令系统_第4页
X86寻址方式与指令系统_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

ComputerArchitectureX86寻址方式与指令系统计算机体系结构·汇编语言核心课程Contents课程目录系统掌握X86架构的寻址方式与完整指令体系01X86体系结构概述02寻址方式详解03指令系统与格式04数据传送指令05算术运算指令06逻辑运算与移位指令07程序控制与串操作指令CHAPTER01X86体系结构概述从架构演进到寄存器组织,建立X86处理器的基础认知框架ArchitectureEvolutionX86架构发展历程X86架构自1978年诞生以来,经历了从16位到32位再到64位的三次重大演进,其核心的向后兼容设计哲学使其成为个人计算机领域最成功的指令集架构,至今仍主导着桌面与服务器市场。Intel8086处理器·1978年发布·首次定义X86指令集架构011978·8086处理器—Intel首次定义X86指令集架构,采用16位数据总线和20位地址总线,可寻址1MB内存空间021985·80386处理器—首次实现32位架构并引入保护模式与分页机制,为现代操作系统提供硬件级内存管理支持032003·X86-64扩展—AMD推出AMD64架构,在保持32位兼容性的同时支持64位运算和更大地址空间,后被Intel采纳04向后兼容哲学—每一代新处理器都能运行为前代编写的全部软件,保证庞大的软件生态不被破坏MICROPROCESSORARCHITECTURE8086微处理器基本结构8086处理器采用BIU与EU双单元并行架构,总线接口单元负责取指和总线访问,执行单元负责指令译码与运算,两者通过6字节指令队列协同工作,构成了早期流水线设计的雏形。总线接口单元(BIU)01负责所有外部总线操作,包括从内存取指令、读写数据端口,以及计算20位物理地址02内含6字节指令预取队列,可在EU执行当前指令时提前读取后续指令代码,实现取指与执行的重叠并行03管理四个16位段寄存器(CS/DS/SS/ES)和指令指针IP,通过段基址×16+偏移量计算物理地址BUSINTERFACE执行单元(EU)01从BIU的指令队列中取出指令进行译码和执行,不直接与外部总线交互02包含算术逻辑单元ALU,执行所有算术运算、逻辑运算和数据操作03管理通用寄存器组(AX/BX/CX/DX等)和16位标志寄存器FLAGS,记录运算结果的状态特征EXECUTIONUNITX86Architecture通用寄存器组织X86处理器的寄存器组织分为数据寄存器、指针与变址寄存器、段寄存器三大类,共14个16位寄存器。数据寄存器AX(累加器)算术运算和I/O操作的默认寄存器,可拆分为AH高8位和AL低8位独立使用BX(基址寄存器)常用于内存寻址中的基址计算,是寄存器间接寻址和基址变址寻址的核心CX(计数寄存器)LOOP循环指令和串操作重复前缀的默认计数器,CL位用于移位量指定DX(数据寄存器)乘除法运算中存放高位/低位扩展数据,I/O指令中作为端口地址寄存器AX·BX·CX·DX指针与变址寄存器SP(堆栈指针)始终指向堆栈段栈顶元素的偏移地址,PUSH/POP指令自动修改其值BP(基址指针)用于访问堆栈段中的数据,默认段寄存器为SS而非DS,常用于函数参数和局部变量访问SI(源变址)与DI(目的变址)串操作指令中分别作为源地址和目标地址指针,支持自动增量/减量SP·BP·SI·DI段寄存器CS(代码段)存放当前执行代码所在段的基地址,与IP配合确定下一条要执行指令的物理地址DS(数据段)指向程序数据所在段的基地址,大多数数据访问指令的默认段寄存器SS(堆栈段)与ES(附加段)分别指向堆栈区域和附加数据区域的段基址CS·DS·SS·ESX86Addressing段寄存器与存储器组织8086采用分段管理机制解决16位寄存器寻址1MB空间的矛盾,通过"段基址×16+偏移地址"公式将逻辑地址转换为20位物理地址,每个段最大64KB,四个段寄存器分别管理代码、数据、堆栈和附加数据区域。0120位地址总线可寻址1MB空间(2²⁰=1,048,576字节),但16位寄存器只能表示64KB范围,分段机制是解决这一矛盾的核心方案02物理地址计算公式:PA=段基址×16+偏移地址(EA),即段基址左移4位后与偏移地址相加,产生20位物理地址03四个段寄存器各有分工:CS指向代码段配合IP取指,DS指向数据段用于数据访问,SS指向堆栈段配合SP/BP,ES指向附加段用于串操作04逻辑地址不唯一性:不同的段基址:偏移组合可能指向同一物理地址,如DS=3000H偏移2000H与DS=2000H偏移12000H均指向物理地址32000H计算机内存条实物—8086分段机制的物理载体ADDRESSINGMODE物理地址与逻辑地址转换物理地址的计算严格依赖段寄存器与偏移地址的组合,不同间址寄存器对应不同的默认段寄存器——BX/SI/DI默认使用DS,BP默认使用SS。段超越前缀可以临时改变默认段选择,提供灵活的内存访问能力。计算示例01DS=1000H,BX=2345H→PA=1000H×16+2345H=12345H,BX间址默认使用数据段02SS=2000H,BP=0030H→PA=2000H×16+0030H=20030H,BP间址默认使用堆栈段03CS=0FFFFH,IP=0010H→PA=0FFFFH×16+0010H=0FFFF0H,8086复位后首条指令地址PA=Segment×16+Offset默认段寄存器规则BX、SI、DI作为间址寄存器时,默认段寄存器为DS(数据段),适用于大多数数据访问场景BP作为间址寄存器时,默认段寄存器为SS(堆栈段),因为BP主要用于访问函数参数和局部变量IP始终与CS配合,SP始终与SS配合,这两个组合不可更改段超越前缀允许临时覆盖默认段:MOVAX,ES:[BX]强制使用ES段,常用于串操作和跨段数据访问CHAPTER02寻址方式详解深入理解CPU定位操作数的八种核心方式,掌握汇编语言编程的基石X86Architecture·AddressingModes寻址方式总览8086寻址方式按操作数来源可分为三大类:指令内嵌型(立即/隐含)、寄存器型和存储器型(五种变体),另有专用于跳转的地址寻址。不同方式在执行速度、代码大小和灵活性上各有取舍,合理选择是高效汇编编程的关键。指令内嵌型In-InstructionOperand01立即寻址:操作数直接嵌入指令代码中,取出指令即获得数据,速度最快但只能用作源操作数02隐含寻址:操作数由指令隐含指定,如CLC指令隐含操作进位标志CF,无需显式给出最快寄存器型RegisterOperand01寄存器寻址:操作数存放在CPU内部通用寄存器中,指令给出寄存器名,访问速度仅次于隐含寻址02寄存器间接寻址:属存储器寻址方式,需访问外部存储器,速度较慢但能处理大量数据高速存储器型MemoryOperand01EA计算核心:五种方式区别在于有效地址计算方法——直接给出EA或以寄存器内容作为EA02灵活组合:基址、变址及其组合通过寄存器加位移量计算EA,灵活访问数组与结构体5种变体X86AddressingModes立即寻址与寄存器寻址立即寻址将操作数直接嵌入指令代码中,取指即取数,速度最快但仅限源操作数使用;寄存器寻址在CPU内部寄存器间传递数据,无需访问外部总线。执行速度对比相对执行周期(越低越快)01立即寻址:操作数嵌入指令代码,存放于代码段操作码之后,取指令同时即获得操作数,无需额外存储器访问周期。仅能作为源操作数。02立即数格式:8位或16位二进制补码表示有符号数。MOVAX,10合法;MOV10,AX非法——立即数不可作为目的操作数。03寄存器寻址:操作数在CPU内部通用寄存器中,指令给出寄存器编号,数据传送与运算完全在CPU内部完成,不占用总线周期。04典型流程:MOVAX,1234H(立即赋初值)→MOVBX,5678H→ADDAX,BX(寄存器寻址相加),执行后AX=68ACH,BX=5678H。X86寻址方式直接寻址与寄存器间接寻址直接寻址在指令中直接给出有效地址EA,适合访问固定存储单元;寄存器间接寻址将EA存放在BX/BP/SI/DI寄存器中,通过修改寄存器值实现动态内存访问。两者是存储器寻址的基础,后者为数组遍历和动态数据结构提供了关键支撑。直接寻址指令地址码部分直接给出操作数的有效地址EA,如MOVAX,[2000H],汇编器将变量名替换为偏移地址物理地址计算:PA=DS×16+EA,如DS=3000H、EA=2000H时,PA=32000H,从该单元读取操作数送入AX优点是简单直观、便于硬件实现;缺点是地址固定不可修改,只能访问固定存储单元,不适合处理动态数据寄存器间接寻址偏移地址EA存放在BX、BP、SI、DI寄存器之一中,格式为[R],如MOVAX,[BX]表示以BX内容为偏移地址段寄存器选择:BX/SI/DI间址时默认使用DS段,BP间址时默认使用SS段(堆栈段),可用段超越前缀修改示例:DS=1000H、DI=2345H、(12345H)=4354H,执行MOVBX,[DI]后,PA=12345H,BX=4354HADDRESSINGMODES基址寻址与变址寻址基址寻址以BX/BP内容加上位移量计算有效地址,适合访问结构体字段等固定偏移场景;变址寻址以SI/DI内容加上位移量计算有效地址,适合遍历数组元素等变址场景。两者通过引入位移量常量,在间接寻址基础上大幅提升了编程灵活性。基址寻址FORMULAEA=基址寄存器(BX/BP)+8/16位位移量,如MOVAX,08H[BX]SEGMENTBX默认DS,BP默认SS;位移量代表相对于基地址的固定偏移,适合结构体字段访问SCENARIO基址寄存器指向结构体首地址,位移量表示字段偏移,修改基址即可访问不同实例的同一字段变址寻址FORMULAEA=变址寄存器(SI/DI)+8/16位位移量,如MOVAX,TABLE[SI]SEGMENT默认段寄存器均为DS;位移量代表数组首地址,变址寄存器内容代表元素索引偏移SCENARIOTABLE为数组首地址符号常量,SI存放当前元素索引,循环中递增SI即可顺序访问数组各元素ADDRESSINGMODE基址变址寻址基址变址寻址将基址寄存器(BX/BP)与变址寄存器(SI/DI)的内容相加以计算有效地址,可选附加位移量,是8086中最灵活的存储器寻址方式。01EA=基址寄存器(BX/BP)+变址寄存器(SI/DI)+可选位移量[BX+SI]ARRAY[BX][SI]02基址只能选BX或BP,变址只能选SI或DI,同类寄存器不能组合[BX+BP]/[SI+DI]✗03段寄存器由基址决定:BX→DS,BP→SS;段超越前缀可覆盖SegmentOverridePrefix04二维数组:位移量=首地址,基址=行偏移,变址=列偏移2DArrayAccess汇编语言编程工作场景X86寻址方式与指令系统相对寻址方式相对寻址用于转移指令,以当前IP值加上有符号位移量计算目标地址,支持段内短跳转(-128~+127字节)和近跳转(±32KB范围)。其紧凑的编码格式使条件跳转指令仅需2字节,是实现分支和循环结构的基础。目标地址计算目标地址=当前IP值+有符号位移量(8位或16位补码),当前IP是取出转移指令后已自动指向下一条指令的地址IP+disp→Target短跳转SHORT8位位移量,范围-128~+127字节,所有条件转移指令(JZ/JNZ/JG等)均使用此格式,指令长度仅2字节仅2字节编码近跳转NEAR16位位移量,范围-32768~+32767字节,用于JMP等无条件转移,覆盖当前代码段内任意位置±32KB段内覆盖位置无关代码与绝对跳转的区别:相对寻址生成位置无关代码(PIC),程序在内存中整体移动后无需修改跳转地址,有利于代码重定位PIC可重定位X86AddressingModes寻址方式综合对比八种寻址方式在执行速度、灵活性和适用场景上形成完整的梯度关系:从最快的立即寻址到最灵活的基址变址相对寻址,应在代码效率与灵活性间取得平衡。8086寻址方式对比总表寻址方式有效地址EA计算操作数位置速度典型应用立即寻址无EA,操作数在指令中指令代码极快赋初值、常量运算寄存器寻址无EA,操作数在寄存器中CPU寄存器极快数据传递、快速运算直接寻址EA=disp16存储器中等访问固定变量寄存器间接EA=[BX/BP/SI/DI]存储器中等指针访问、动态寻址基址寻址EA=[BX/BP]+disp存储器较慢结构体字段访问变址寻址EA=[SI/DI]+disp存储器较慢数组元素遍历基址变址EA=[BX/BP]+[SI/DI]存储器较慢二维数组访问基址变址相对EA=[BX/BP]+[SI/DI]+disp存储器最慢复杂数据结构八种寻址方式从操作数位置、EA计算方法、速度和典型应用四个维度形成完整对比,编程时应按需选择CHAPTER03指令系统与格式掌握X86指令的编码结构、操作数规则与功能分类体系INSTRUCTIONFORMAT指令的基本格式X86指令采用变长编码格式,由操作码、MOD/RM字节、SIB字节、位移量和立即数五个可选字段组成,指令长度从1到15字节不等。MOD/RM字节是寻址方式编码的核心,用8位字段统一描述源操作数和目的操作数的寻址模式。01操作码字段指定指令执行的操作类型,主操作码占1字节,部分指令有第二、第三操作码字节扩展编码空间1–3BYTES02MOD/RM字节MOD字段(2位)指定寻址模式,REG字段(3位)指定寄存器操作数,R/M字段(3位)指定另一操作数的寻址方式8BITS03SIB字节Scale-Index-Base格式,用于编码更复杂的基址变址比例寻址,支持基址+索引×比例因子32-BITMODE04位移量与立即数分别用于存储器寻址的偏移常量和立即寻址的操作数常量,长度由寻址模式决定0–4BYTESINSTRUCTIONSETARCHITECTURE指令系统的分类体系X86指令系统按功能划分为六大类:数据传送、算术运算、逻辑移位、串操作、控制转移和处理器控制,共计数百条指令。理解这一分类体系有助于系统化学习和记忆指令,在实际编程中能快速定位所需的功能指令。数据操作类数据传送指令:MOV/XCHG/PUSH/POP等,在寄存器、存储器和堆栈之间传送数据,是最常使用的指令类别算术运算指令:ADD/SUB/MUL/DIV/INC/DEC等,执行整数和BCD码的算术运算,结果影响标志寄存器逻辑与移位指令:AND/OR/XOR/NOT/SHL/SHR/ROL/ROR等,执行位级操作和移位运算3CATEGORIES串与控制类串操作指令:MOVS/CMPS/SCAS/LODS/STOS等,对内存中连续数据串执行批量传送、比较和搜索操作,配合重复前缀REP可实现高效批量处理控制转移指令:JMP/CALL/RET/Jcc/LOOP/INT等,改变程序执行顺序,实现分支、循环和子程序调用,是结构化程序设计的核心条件与循环指令:JA/JB/JE/JNE/LOOPZ/LOOPNZ等,基于标志位状态实现条件分支和计数循环控制3CATEGORIES处理器管理类标志位操作指令:CLC/STC/CMC/CLD/STD/CLI/STI等,直接控制FLAGS寄存器中各标志位的状态处理器控制指令:HLT/WAIT/ESC/LOCK/NOP等,管理处理器运行状态和总线锁定,NOP常用于精确延时特权与同步指令:IN/OUT/STI/CLI/LOCK等,控制I/O端口访问、中断使能和总线同步机制3CATEGORIESX86InstructionSet操作数的类型与长度X86指令操作数分为寄存器、立即数和存储器三种类型,支持8位字节和16位字两种长度。源与目的操作数长度必须一致,存储器操作数长度不明确时需用PTR伪指令显式声明,数制表示遵循特定的后缀约定。寄存器操作数直接使用寄存器名(AX/BX/CX/DX等),8位操作使用AH/AL/BH/BL等,长度由寄存器名隐式确定AX/BX/CX/DX立即数操作数用常量表示,支持四种数制——二进制10110B、八进制234Q、十进制128D(或无后缀)、十六进制3FH(字母开头需加前导0如0FFH)B·Q·D·H存储器操作数用方括号或变量名表示,如[BX]、TABLE[SI];长度不明确时必须用BYTEPTR(字节)或WORDPTR(字)伪指令显式声明BYTEPTR/WORDPTR长度匹配规则双操作数指令中源和目的操作数长度必须一致,如MOVAX,[BX]中AX为16位则[BX]也按16位读取两个连续字节MOVAX,[BX]Chapter04数据传送指令掌握寄存器、存储器与堆栈之间的数据搬运机制X86INSTRUCTIONSET通用数据传送指令MOV实现源到目的的数据复制,受限于不能同时操作两个存储器单元等规则;XCHG实现双向交换;XLAT提供查表转换。理解限制是正确编写汇编代码的前提。MOV传送指令01MOVdest,src格式MOVdest,src,将源操作数复制到目的操作数,源值不变;支持reg↔reg、reg↔mem、reg/mem↔imm、seg↔reg/mem组合02核心限制:两个操作数不能同时为存储器操作数(需经寄存器中转),不能直接将立即数传送到段寄存器,CS不能作为目的操作数03MOVAX,1000H→MOVDS,AXMOVES,[BX]段寄存器传送示例:MOVAX,1000H→MOVDS,AX(两步完成数据段初始化),MOVES,[BX](从内存加载附加段基址)XCHG与XLAT01XCHGop1,op2XCHGop1,op2交换两个操作数的值,支持reg↔reg和reg↔mem组合,不能操作段寄存器,不能同时操作两个存储单元02XLATDS:[BX+AL]XLAT查表指令:以BX为表首地址、AL为索引偏移,将DS:[BX+AL]处的字节送入AL,常用于字符编码转换和数据映射表查询03指令对比总结:MOV为单向复制,XCHG为双向交换,XLAT为查表映射;三者均遵循操作数不能同时为存储单元的限制,且段寄存器操作有特殊约束STACKOPERATIONS堆栈操作指令堆栈遵循后进先出原则,向低地址方向生长,由SS:SP定位栈顶。PUSH先减SP再存数据,POP先取数据再加SP,两者必须严格配对使用。PUSHsrc:SP←SP−2,然后将16位源操作数存入SS:SP指向的存储单元;支持寄存器、存储器和段寄存器作为源操作数POPdest:将SS:SP指向的16位存储单元内容送入目的操作数,然后SP←SP+2;不能以CS段寄存器为目的操作数向低地址生长:初始SP指向栈底(高地址),每执行一次PUSH,SP减小2;每执行一次POP,SP增大2现场保护与恢复:子程序入口处PUSHAX/BX/CX/DX保存调用者寄存器,返回前POPDX/CX/BX/AX逆序恢复物理堆叠类比——数据按后进先出顺序存取X86指令系统标志位传送与地址传送标志位传送指令实现FLAGS与通用寄存器或堆栈间的状态交换,是中断处理和调试的关键;地址传送指令不访问数据而只获取地址,LEA还可用于高效算术计算。FLAGSTRANSFER标志位传送指令01LAHF/SAHFLAHF将FLAGS低8位(SF/ZF/AF/PF/CF)传送到AH;SAHF将AH写回FLAGS低8位,配合保存与恢复条件标志02PUSHF/POPFPUSHF将16位FLAGS整体压入堆栈;POPF从堆栈弹出16位到FLAGS,常用于中断服务程序保护与恢复处理器状态ADDRESSTRANSFER地址传送指令01LEAdest,src将源操作数有效地址EA(而非数据)装入16位目的寄存器,如LEABX,TABLE[SI]使BX=TABLE+SI,不访问内存02LEA算术用途LEAAX,[BX+SI+5]一条指令完成三数相加(BX+SI+5→AX),比ADD指令序列更高效03LDS/LESLDS从mem读4字节,低2字→reg、高2字→DS;LES类似但高2字送ES,用于初始化远指针Chapter05算术运算指令深入理解加减乘除指令的执行机制与标志位影响规律ArithmeticInstructions加法与减法指令ADD/SUB执行基本加减运算,ADC/SBB通过进位/借位标志支持多精度运算链式传播。CMP执行减法但不保存结果、仅设置标志位,是条件分支的判断基础。加法指令组01ADDdest,srcdest←dest+src,基本加法运算,影响全部六个状态标志位02ADCdest,srcdest←dest+src+CF,带进位加法,用于多精度运算中高位字传递低位进位03INCdestdest←dest+1,增量指令,影响OF/SF/ZF/AF/PF但不影响CF,常用于循环计数器减法指令组01SUB/SBBSUB:dest←dest−src;SBB:dest←dest−src−CF,带借位减法用于多精度减法链02NEGdestdest←0−dest,求补取反;如AX=0005H执行后AX=FFFBH(−5补码)03CMPdest,src执行dest−src但不保存结果,仅设置标志位,配合JE/JNE/JG/JL等条件跳转X86INSTRUCTIONS乘法指令MUL/IMUL乘积宽度为操作数两倍,被乘数隐含在AL/AX;溢出判断标准不同,均经CF/OF标志报告。8位乘法MUL/IMULsrc8→AX=AL×src8,无符号与有符号两种模式,乘积16位存于AX中8-BIT→AX16位乘法MUL/IMULsrc16→DX:AX=AX×src16,乘积32位高位存DX、低位存AXDX:AX溢出判断差异MUL高位非零即溢出;IMUL高位非低位符号扩展时溢出,均以CF=OF=1报告CF/OF状态标志不确定乘法执行后SF/ZF/AF/PF无意义,仅CF和OF可判断结果是否超出低位范围SFZFAFPFX86InstructionSet除法指令DIV/IDIV分别用于无符号和有符号除法,被除数宽度为除数的两倍,结果同时产生商和余数。商溢出或除数为0时触发类型0中断,编程时必须防范。8位除法DIVsrc8→AL=AX/src8(商),AH=AX%src8(余数)。被除数AX为16位,商和余数各8位。DIVsrc8→AL+AH16位除法DIVsrc16→AX=DX:AX/src16(商),DX=DX:AX%src16(余数)。被除数DX:AX为32位。DIVsrc16→AX+DX有符号除法IDIV需配合符号扩展指令:CBW将AL符号扩展到AX,CWD将AX扩展到DX:AX,确保被除数符号位正确传播。CBW·CWD异常处理商超出目标寄存器容量(8位商>255或16位商>65535)或除数为0时,CPU产生类型0中断(除法错误),程序必须预先检查。INT0·DivideErrorFLAGREGISTER标志位影响分析六个状态标志位从不同维度记录算术运算结果的特征:CF反映无符号进/借位,OF反映有符号溢出,ZF判断零结果,SF指示正负,PF统计奇偶,AF辅助BCD调整。理解标志位影响规律是编写正确条件分支代码的核心基础。算术指令对标志位的影响指令CFOFZFSFPFAFADD/ADC✓✓✓✓✓✓SUB/SBB✓✓✓✓✓✓CMP/NEG✓✓✓✓✓✓INC/DEC×不变✓✓✓✓✓MUL/IMUL✓✓××××DIV/IDIV××××××ADD/SUB/CMP影响全部六个标志位;INC/DEC不影响CF;MUL/IMUL仅确定CF和OF;DIV/IDIV对所有标志位均不确定CHAPTER06逻辑运算与移位指令掌握位级操作与数据移位的完整指令集与应用技巧X86INSTRUCTIONSET逻辑运算指令AND/OR/XOR/NOT对操作数各位独立执行布尔运算,广泛用于位掩码、位设置、位翻转和快速清零。01·基本逻辑运算ANDdest,src—按位与,常用于位掩码操作如ANDAL,0FH屏蔽高4位保留低4位ORdest,src—按位或,常用于设置特定位如ORAL,80H将最高位置1XORdest,src—按位异或,XORAX,AX清零AX(比MOVAX,0更高效)NOTdest—按位取反,每位0变1、1变0,不影响任何标志位02·测试指令TESTdest,src—执行AN

温馨提示

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

评论

0/150

提交评论