《微机原理与接口技术》PPT电子课件教案-第四章 80868088的指令系统.ppt_第1页
《微机原理与接口技术》PPT电子课件教案-第四章 80868088的指令系统.ppt_第2页
《微机原理与接口技术》PPT电子课件教案-第四章 80868088的指令系统.ppt_第3页
《微机原理与接口技术》PPT电子课件教案-第四章 80868088的指令系统.ppt_第4页
《微机原理与接口技术》PPT电子课件教案-第四章 80868088的指令系统.ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

1,一、概述 1. 程序语言简介 2. 8086/8088指令格式简介 二、8086/8088的寻址方式 1. 立即数寻址 2. 寄存器寻址 3. 直接寻址 4. 寄存器间接寻址 5. 寄存器相对寻址 6. 基址加变址寄存器 7. 相对基址加变址寄存器 8. 隐含寻址 三、与转移地址有关的寻址方式,第四章 8086/8088的指令系统,2,一、概述 1.程序语言简介 2. 8086/8088指令格式简介 1. 程序语言简介 (1) 指令、指令系统和程序 (2) 机器码和机器语言 (3) 助记符和汇编语言 (4) 高级语言,3,(1) 指令、指令系统和程序 cpu是一个可以完成一些基本操作的电子器件。 用编码表示cpu的一个基本操作,称为一条指令。 全部指令集称为指令系统。,指令系统反映 cpu的基本功能,,4,一个cpu的指令系统是固定的, 不同类型的cpu其指令系统不同; 同一系列向上兼容。 程序是为要解决的问题编写出来的指令集合。 用户为解决自己的问题所编写的程序称为源程序。,5,(2) 机器码和机器语言 用二进制数编码表示的指令,称为机器指令或机器码。 机器语言是机器码及其使用的一组规则。 用机器语言编写的程序称为目标程序。 机器语言特点:cpu能直接识别的唯一语言 面向机器,可直接被计算机执行 执行速度快,占用内存空间小 编程效率低、可读性差、可移值性差 应用:显示设备简单的单片机 家用电器、固化在rom上的程序等,6,(3) 助记符和汇编语言 助记符是有助记忆、并能描述指令功能的符号。 通常是指令功能的英文单词的缩写。 例 数的传送指令用助记符mov 加法用add,转移用jmp等 用助记符等表示的指令称为汇编格式指令 例 mov al, 0 汇编语言是汇编格式指令、伪指令及其使用的一组规则。 用汇编语言编写的程序称汇编语言程序。,7,例 将地址为2000h和2001h 的两内存单元内容相加, 结果存在地址2002h单元中,程序如下: a0 00 20 02 06 01 20 a2 02 20,地址总线ab,数据总线db,控制总线cb,地 址 译 码 器,1010 0000 0000 0000 0010 0000 0000 0010 0000 0110 0000 0001 0010 0000 1010 0010 0000 0010 0010 0000,a0 00 20 02 06 01 20 a2 02 20,mov al , 2000h add al , 2001h mov 2002h, al,数据暂存器,flags标志 寄存器,控制电路,指令译码器,ax bx cx dx si di bp sp,指 令 队 列,总线 接口控制电路,运 算 器,ip,地址加法器,ds es,ss cs,8,上例 将地址为2000h和2001h 的两内存单元内容相加, 结果存在地址2002h单元中。,汇编格式指令与机器指令一一对应 用汇编语言编好的程序, 必须翻译成机器码表示的程序,计算机才能运行。 汇编程序是将汇编语言程序翻译成机器语言的一种系统程序。,用机器码编程: a0 00 20 02 06 01 20 a2 02 20,用汇编语言编写的确程序段为: mov al , var1 add al , var2 mov var3 , al,9,汇编语言和机器语言编写的程序: 面向机器,反映机器运行的实际过程, 与计算机的硬件结构和指令系统密切相关 算法是用计算机的指令, 寄存器等描述, 要了解cpu的编程结构、寻址方式、指令系统才能设计程序 占内存少,执行速度快 编写繁琐、调试困难 汇编语言相对于机器语言编写的程序: 汇编语言程序,易读易懂,便于修改。,10,(4) 高级语言 高级语言是独立于机器、面向过程或对象的语言。 算法是按照人的思维方式给出,比较接近人的自然语言。 上例 高级语言程序段为: var3 = var1 + var2 由编译程序将高级语言源程序翻译目标程序, 即用机器码表示的程序,机器才能执行。 (不同类型机器由于指令系统不同,它们的编译程序不同) fortran、 basic、 c等均是高级语言。 使用高级语言编程,效率高,可读性、可移植性强。,11,(1) 操作码 指明cpu要执行什么样的操作。 是一条指令必不可少的部分,用助记符表示。,2. 8086/8088指令格式简介,12,操作数来源 指明操作数所在的地方,有三种来源: 操作数在指令中,称立即数操作数 如 mov al , 9 操作数在寄存器中,称寄存器操作数 指令中给出用符号表示的寄存器名。 如 mov al , 9 操作数在内存单元中,称存储器操作数或内存操作数 指令中给出该内存单元的地址。用 表示存储器操作数 如 mov al , 2000h ,13,14, 无操作数: 指令只有一个操作码,没有操作数。,有两种可能: 有些操作不需要操作数。 如 hlt,nop等处理机控制指令。 操作数隐含在指令中。 如 stc , clc等处理机控制命令。 aaa , daa等调整指令。,15, 单操作数: 指令中给出一个操作数。,有两种可能: 有些操作只需要一个操作数 如 inc al ; (al) (al)+ 1 有些操作将另一个操作数隐含在指令中 如 mul bl ; (ax) (al)(bl),16,17,操作数类型,指令应指明参与操作的数是字节还是字,即操作数的类型。 通常操作数的类型可由操作数本身隐含给出。 只在特殊情况下需要指明。,8086/8088: 有的操作既可对字节操作,又可对字操作 有的操作只允许对字操作,18, 指令中有寄存器操作数,由寄存器操作数决定类型。,例 : mov bx, al ;字节操作, bx al mov bx , ax ;字操作, bx al, bx+1 ah,19, 指令操作数中无寄存器,则由内存操作数的类型决定。,20, 指令中无类型的依据,需对存储器操作数加类型说明。,用 ptr 属性伪操作说明类型。 mov byte ptr bx , 0 字节操作, bx 0 mov word ptr bx , 0 字操作, bx 0, bx+1 0,21,执行速度,寄存器操作数 立即数操作数 存储器操作数,三条指令: 操作类型相同,都是传送指令,且目的操作数相同, 不同的是:源操作数。,22,cpu 总线 内存,mov al , bl mov al , 0 mov al , bx ,ds,es,ss,cs,ip,数据暂存器,flags标志 寄存器,执行部件控制电路,指令译码器,ax bx cx dx,ah,bh,ch,dh,si,di,bp,sp,al,bl,cl,dl,寄存器组,指 令 队 列,总线 接口控制电路,运 算 器,地址加法器,、 指令1 指令2 指令3 指令4 、 数据1 数据2 数据3 、,地址总线ab,数据总线db,控制总线cb,地 址 译 码 器,23,对同一类型指令,执行速度:,24,二、8086/8088的寻址方式 指明操作数的来源,即寻找(得到)操作数的方法。,25,以数据传送指令mov为例介绍寻址方式。 指令 mov dst, src 执行 (dst) (src) 即: 源操作数的内容不变, 目的操作数 源操作数,26,立即数寻址 操作数直接存放在指令中,紧跟在操作码之后,作为指令的一部分, 存放在代码段里,这种操作数称为立即数。 操作数在指令中,取来指令立即可得到操作数。称该操作数为立即 数。 立即数可以是8位或16位(16位的立即数是高位字节放在高地址,低位字节放在低地址) 。 应用场合: 立即数常用来给寄存器或内存单元赋初值。,例1 mov ax , 2056h 结果 ( ah ) = 20h ( al ) = 56h 例2 mov al , 78 h 结果 ( al ) = 78h,注意:只能用于源操作数字段,不能用于目的操作数字段。,低地址,高地址,27,2. 寄存器寻址方式 操作数在寄存器中,指令中指定寄存器名 8 位操作数, 用 8 位寄存器: ah、al、bh、bl、ch、cl、dh、dl 16 位操作数,用 16 位寄存器: ax、bx、cx、dx、sp、bp、si、di cs、ds、ss、es 这种寻址方式因为操作数在寄存器中 不需要访问存储器的运算速度较高。,28,例1 mov ax , 2056h 执行后:(ax)=2056h 例2 mov bl , ah 执行前:(bl) = 12h, (ah) = 78h 执行后:(bl) = 78h , (ah) = 78h,29,立即数寻址、寄存器寻址的操作数, 不用在取完指令后再到内存中取数。,cpu 总线 内存,ds,es,ss,cs,ip,数据暂存器,flags标志 寄存器,执行部件控制电路,指令译码器,ax bx cx dx,ah,bh,ch,dh,si,di,bp,sp,al,bl,cl,dl,寄存器组,指 令 队 列,总线 接口控制电路,运 算 器,地址加法器,、 指令1 指令2 指令3 指令4 、 数据1 数据2 数据3 、,地址总线ab,数据总线db,控制总线cb,地 址 译 码 器,30,例 编程将cl寄存器的内容传送到21000h单元中。,mov ax, 2000h mov ds, ax ; (ds) = 2000h mov di, 1000h ; (di) = 1000h mov ds: di , cl ;(21000h) = (cl),地址 21000h2000:1000h,编程时, ds 存放段地址2000h di 存放偏移地址1000h,如指令 mov ds: di , cl,功能:将cl寄存器中的内容传送到以ds为段值,di为偏移值的内存单元中,31,3直接寻址方式(direct addressing) 操作数地址的位偏移量,直接包含在指令中,存放在代码段中指令操作码之后, 但操作数一般存放在数据段中, 必须先求出操作数的物理地址, 然后再访问存储器才能取得操作数。 或16d 物理地址 : pa (10h) (ds)+ea ibmpc机允许数据存放在数据段以外的其它段中。 此时应在指令中指定段跨越(可以是cs,ss,es)。,32,直接寻址方式要点: 存储器操作数的有效地址ea在指令中直接给出。 例 mov al, 1000h 默认段寄存器为ds。 操作数所在内存单元的物理地址为: pa = ( ds )10h + ea,33,cpu 总线 内存,、 指令1 指令2 指令3 指令4 、 数据1 数据2 数据3 、,34,例:mov ax , 1000 h 若 ( ds ) = 2000h 内存操作数的物理地址为: pa = ( ds )10h +ea = 2000h 10h + 1000h = 21000h 执行后 (ax)= 3040h,思考: 指令 mov ax,1000h 与指令mov ax, 1000h有什么不同?,35,在汇编语言程序中,不直接用数值 表示偏移地址, 用符号代替数值表示地址,称符号地址(变量名)。,例 符号buffer表示一个地址。 mov ax , buffer 或写成 mov ax , buffer 源操作数为buffer指向的内存单元的内容,符号地址( 变量名)经汇编连接后,与一个确定的数值地址相对应 可用操作符offset 获取变量的偏移地址。 故 pa = ( ds )10h + offset buffer 指令执行结果 ( ax ) = 0b0a h 如:buffer在附加段中, 则应指定段跨越。(段跨越或可以是cs ss 作为段寄存器) mov ax,es:buffer 或mov ax,es:buffer,36,4. 寄存器间接寻址(register indirect addressing) 操作数放在存储器里,操作数的有效地址ea由寄存器给出, 寄存器的内容为操作数的有效地址。 可用的寄存器有 bx、si、di 、bp 如: mov al, bx mov ah, si mov dl, di mov dh, bp ,37,38,使用bx、si、di的寄存器寻址,默认段寄存器为ds,cpu 总线 内存,ds,es,ss,cs,ip,数据暂存器,psw标志 寄存器,执行部件控制电路,指令译码器,ax bx cx dx,ah,bh,ch,dh,si,di,bp,sp,al,bl,cl,dl,寄存器组,指 令 队 列,总线 接口控制电路,运 算 器,地址加法器,、 指令1 指令2 指令3 指令4 、 数据1 数据2 数据3 、,地址总线ab,数据总线db,控制总线cb,地 址 译 码 器,39,使用bp的寄存器寻址,默认段寄存器为ss,cpu 总线 内存,40,例: mov ax , di 若 ( ds ) = 3000h ( di ) = 2000h 则内存操作数的物理地址为: pa = ( ds )10h + ( di ) = 32000h 执行后 (ax) = (32000h) = 400bh,思考: 指令 mov ax, di 与指令mov ax, di有什么不同?,41,例: mov ax , bp 若 ( ss ) = 4000h ( bp ) = 3000h 则内存操作数的物理地址为: pa = ( ss )10h + ( bp ) = 43000h 指令执行后 (ax) = (43000h) = 0102h,42,用 si、di、bx 、bp作为间接寻址允许段超越 指令中可以指定段超越前缀来取得其他段中的数据。 例:mov es:di, ax mov dx, ds:bp 这种寻址方法可以用于表格处理。,43,5. 寄存器相对寻址(register relative addressing) 或变址寻址 (index addressing) 操作数的有效地址是一个基址或变址寄存器的内容 和指令中指定的8位或16位位移量(displacement)之和。 可 用的寄存器有 bx、di 、si、bp , 与寄存器间接寻址相同 如: mov al, bx +10h mov ah, di+20h mov dl, 30h si mov dh, 40h bp ,44,默认段寄存器的关系与寄存器间接寻址相同,允许段跨越。 使用bx、si、di,默认段寄存器为ds (bx) pa = ( ds )10h + (si) + 偏移量 (di) 使用bp,默认段寄存器为ss pa = ( ss )10h + ( bp ) + 偏移量,45,例: mov ax , bx+30h 若 ( ds ) = 2000h ( bx ) = 1000h 则内存操作数的物理地址为: pa = ( ds )10h + ( bx ) + 30h = 21030h 指令执行后: (ax) = (21030h) = 8976h,46,例: mov ax ,60h bp 若 ( ss ) = 3000h ( bp ) = 200h 则内存操作数的物理地址为: pa = ( ss )10h + ( bp ) + 60h = 30260h 指令执行后: (ax) = (30260h) = 0abch,47,6. 基址加变址寻址 操作数的有效地址由一个基址寄存器与一个变址寄存器之和给出。 可用的基址寄存器为 bx 、bp ,变址寄存器为 si 、di。 如 mov al, bx+si mov ax, bxdi mov dl, bp+si mov dx, bpdi ,48,49,使用bx的基址加变址寻址,默认段寄存器为ds,cpu 总线 内存,50,使用bp的基址加变址寻址,默认段寄存器为ss,cpu 总线 内存,51,例: mov ax , bx + si 若 ( ds ) = 4000h ( bx ) = 2000h ( si ) = 100h 则内存操作数的物理地址为: pa = ( ds )10h + ( bx ) + ( si ) = 42100h 指令执行后 (ax) = (42100h) = 2345h,52,7. 相对基址加变址寻址(relative based indexed addressing) 操作数的有效地址由 基址寄存器、变址寄存器、偏移量( 8位或16位)三者之和给出。 可用的寄存器与基址加变址寻址方式相同 基址寄存器有 bx、bp 变址寄存器有 si、di 如 mov al, bx+si +10h mov ax,20h bxdi mov dl, bp+si+30h mov dx,40h bpdi ,53,54,例: mov ax , bx + si + 10h 若 ( ds ) = 4000h ( bx ) = 3000h ( si ) = 200h 则内存操作数的物理地址为: pa = ( ds )10h + ( bx ) + ( si ) + 10h = 43210h 指令执行后 (ax) = (43210h) = 8877h,55,实验:利用debug学习寻址方式 在debug下汇编下列指令,并查看每条指令执行后的结果: mov bx, 2000h mov bx, cs,思考:如何查看指令mov bx, cs 执行后的结果?,用r命令可以吗?,操作数bx在哪里?,它的内存地址如何构成?,56,d:debug ;进入debug -a ;汇编指令 126c:0100 mov bx, 2000 126c:0103 mov bx, cs 126c:0105 -r ;查看指令执行前寄存器的内容 ax=0000 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=126c es=126c ss=126c cs=126c ip=0100 nv up ei pl nz na po nc 126c:0100 b80020 mov ax,2000 -d ds:2000 l20 ;查看指令执行前内存单元的内容 126c:2000 00 44 cd 21 88 16 34 db-f6 c2 80 74 33 a0 33 d4 .d.!4t3.3. 126c:2010 24 0c 75 09 a0 51 dc 0a-06 4d dc 74 19 7a 21 a8 $.uq.m.t.z!. -t=100 ;单步执行指令 ax=0000 bx=2000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=126c es=126c ss=126c cs=126c ip=0103 nv up ei pl nz na po nc 126c:0103 8c0f mov bx,cs ds:2000=4400 -t ;单步执行指令 ax=0000 bx=2000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=126c es=126c ss=126c cs=126c ip=0105 nv up ei pl nz na po nc 126c:0105 0475 add al,75 -d ds:2000 l10 ;查看指令执行后内存单元的内容 126c:2000 6c 12 cd 21 88 16 34 db-f6 c2 80 74 33 a0 33 d4 l!4t3.3. -q ,57,寻址方式的几点说明:,58,1不自创寻址方式 内存操作数地址只能由bx、bp、si、di 给出, 它们的组合也不是任意的。,59,只有存储器操作数需用段跨越的前缀 mov es:si,cx mov al, ds:bp mov es : ax , 0 mov cs: cx, 22h,60,61,d:debug -a 0afa:0100 mov cl, ax error 0afa:0100 mov ax, dx error 0afa:0100 mov al, cx error 0afa:0100 mov cx, bp+bx error 0afa:0100 mov ah, si+di error 0afa:0100 mov bl, ax+cx error 0afa:0100 -,利用debug可判断下列寻址方式错:,62,2偏移量可用符号地址给出 例: mov ax , mask bx 若( ds)= 1000h (bx)= 300h offset mask = 2000h pa = ( ds ) 10h + ( bx ) + offset mask = 12300h 执行后 ( ax ) = 6b5a h,63,3. 段超越前缀的使用(自学),为减小指令长度, cpu采用默认关系获取段地址。,但可使用段超越前缀可强行改变这种默认关系。,64,使用段超越前缀的指令比不使用的指令要多占一个字节。,65,使用段超越前缀的物理地址计算,例: mov ax,es: bx ,使用段超越的前缀后,段地址由指定的段寄存器给出, 不再遵循默认关系。,pa =(es) 10h + (bx),而不等于 (ds) 10h + (bx),66,只有存储器操作数需用段超越的前缀 mov es:si,cx mov al, ds:bp mov es : ax , 0 mov cs: cx, 22h,67,汇编语言程序结构 程序由数条语句构成, 每条语句占一行。 指令性语句(指令语句) 指示性语句(伪指令语句) 分段结构 程序按段编写, 与8086内存分段编址相对应; 每段由伪操作segment开始、 由ends结束。 程序最后为end结束语句, 后跟一启动地址, 指示程序开始执行的第一条语句。 程序中用到内存操作数, 应按操作数的寻址方式, 给相应的段寄存器赋值。,; 将cl的内容传送到变量var中 data segment ;数据段 var db ? data ends code segment ;代码段 assume cs:code,ds:data start: mov ax, data mov ds , ax mov var, cl mov ah , 4ch int 21h ;返回dos code ends end start,68,段内转移只需改变 (ip) 段内转移包括两种寻址方式:直接 ,间接。 段间转移改变(cs)(ip) 段间转移包括两种寻址方式: 直接 ,间接。 功能: 用来确定转移指令及call指令的转移地址。 以转移指令为对象来分析各种转移地址寻址方式。,三、与转移地址有关的寻址方式,69,(一)段内直接寻址(intrasegment direct addressing) (二)段内间接寻址(intrasegment indirect addressing) (三)段间直接寻址(intersegment direct addressing) (四)段间间接寻址:(intersegment inderect addressing),70,(一)段内直接寻址(intrasegment direct addressing),转向有效地址 : ea=(ip)当前+ 指令中指定的8位或16位位移量。 相对寻址方式含义: ea(即转向的有效地址) 用相对于(ip)当前值的位移量表示。 位移量: 位移量 = ea -(ip)当前 对于近转:16位位移量可正可负,一般范围是3276832767 对于短转:8位位移量可正可负, 范围是 128127, 这种寻址方式适用于条件转移及无条转移指令。 当用于条件转移指令时,位移量只允许 8 位; 用于无条件转移指令时,位移量 8 位时称为 短跳转。,71,指令汇编语言格式: jmp near ptr progia ;(ip)(ip)当前+16位位移量 jmp short quest ; (ip)(ip)当前+8位位移量 调用指令(call)也适用。 progia quest 均为转向符号地址,机器中用 位移量表示。 汇编指令中: 16位位移量,则在符号地址前加操作符 near ptr 。 8位位移量 : 前引用标号(标号后定义 ),则在符号地址前加操作符short。 后引用标号(标号先定义 ),则在符号地址前不必加操作符short 。,72,jmp near ptr progia; (ip)(ip)当前+16位位移量,段内直接寻址 jmp near ptr progia,op,00h,12h,.,.,op,03h,offset progia=172ah,(ip),当前,=,052ah,16位的位移量,3172ah-3052ah,存储器,跳转,cs=3000h,73,(二)段内间接寻址(intrasegment indirect addressing) 转向有效地址是一个寄存器或一个存储单元的内容. 存储单元的内容用除立即数以外的任何一种寻址方式取得。 转向有效地址用来取代ip寄存器的内容。 这种寻址方式和以下二种段间寻址方式都不能用于条件转移指令。 * 条件转移指令只能适用段内直接寻址的8位位移量。,74,汇编格式:jmp bx jmp word ptr bp + table 其中: word ptr 操作符,属性定义符 (bp)+ table 寻址所得地址是一个字的有效地址, 由有效地址形成物理地址里的内容即为转向有效地址ip。 转向物理地址的计算公式:pa=10h(cs)+(ip),75,段内间接寻址方式的转移指令中转移的有效地址的计算方法: 举例: 指令执行前: 设:(ds)=2000h,(bx)=1256h,(si)=528fh, table equ 20a1h, (232f7h)=3280h,(264e5h)=2450h 例1、jmp bx 指令执行后: (ip)=1256h,76,例2、jmp word ptr table bx 指令执行后: pa= 10h(ds)+(bx)+table = 232f7h (ip) = (232f7h) = 3280h 例3、jmp word ptr bxsi 指令执行后: pa= 10h (ds)+(bx)+(si)= 264e5h (ip) =( 264e5h) = 2450h 注意:如果指令操作数已被定义为16位的存储器,则: word ptr 可以省去。,设:(ds)=2000h,(bx)=1256h,(si)=528fh , table equ 20a1h, (232f7h)=3280h,(264e5h)=2450h,77,(三)段间直接寻址:(intersegment direct addressing),指令中直接提供了转向段地址和偏移地址。,用指令中指定的偏移地址 (ip) 用指令中指定的段地址 (cs) 完成了从一段到另一段的转移操作,指令汇编语言格式: jmp far ptr next_prog next_prog 转向的符号地址 far ptr 段间转移操作符 offset next_prog (ip) seg next_prog (cs),jmp指令,2000h,78,(四)段间间接寻址(intersegment inderect addressing) 用存储器中二个相继字的内容取代ip、cs以达到段间转移目的。 存储单元的地址是 由指令指定除立即数方式和寄存器方式以外的任何一种寻址方式取得。 指令汇编语言格式: jmp dword ptr inters+bx dword ptr双字操作符,转向地址双字(段间转移) inters +bx数据寻址方式为直接变址寻址方式 * 段间转移必须是无条件

温馨提示

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

评论

0/150

提交评论