微机原理-debug指令详解WORD_第1页
微机原理-debug指令详解WORD_第2页
微机原理-debug指令详解WORD_第3页
微机原理-debug指令详解WORD_第4页
微机原理-debug指令详解WORD_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、文档可能无法思考全面,请浏览后下载! 微机原理 debug指令详解一、DEBUG概述 DEBUG是在DOS状态下面供程序员使用的程序调试工具。它可以用来检查内存中任何地址中的内容以及修改特定地址中的内容。DEBUG还可以用于逐指令执行某个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件与磁盘扇区。此外,DEBUG还可以用于读写端口中的数值。 在DEBUG状态下,所有数据都作为字节序列,可以用DEBUG把任何类型的文件读入内存中。DEBUG能够处理的数据为两种: 十六进制数和ASC码,使用两位数表示十六进制数据(09,AF)。在DEBUG中涉及内存中的数据时,要指定数据所在的

2、内存单元的地址,地址的输入格式是: 段地址: 位移。如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。前100H字节保留给程序段前缀使用(称PSP结构,包含程序执行的各种信息),该区域用于建立DOS与程序之间的联系。在DEBUG中,使用四位十六进制数表示地址(09,AF)。DEBUG输入数据时有两种方法: 提示方法和非提示方法。在提示方法下,输入要求输入数据的命令,后跟保存数据的地址。执行后可以看到该地址中已有的内容及一个冒号提示符。此时可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到“”提示符。在非提示方法下,输入保持数据的内存地址以及要输入的数据。

3、DEBUG的启动: 进入DOS状态下,键入DEBUG ,按ENTER键,如: C:>DEBUG ,则屏幕显示: 符号“”是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。 DEBUG的退出: 在DEBUG的提示符后输入Q命令,按ENTER键,则退出DEBUG返回DOS。 DEBUG的使用: 在DEBUG的提示符后输入DEBUG命令,按ENTER键。 二、DEBUG 命令详解 A命令 格式:A地址 功能:将指令直接汇编成机器码输入到内存中。 参数说明:地址指定存放键入汇编语言指令的内存单元的位置。 C命令 格式:C源地址范围目的地址 功能:比较两内存区域中的内容是否相同。若不

4、同则按字节显示其地址和内容,若相同则不显示任何内容。 11 / 11参数说明:源地址范围指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。目的地址 指定要比较的第二个内存区域的起始地址。 D命令 格式:D地址 或D起始地址目的地址 功能:以内存映象方式显示内存中的数据。 参数说明:指定要显示内容的内存单元的起始地址和结束地址,或起始地址和长度。如果不指定 地址,Debug将从以前 d 命令中所指定的地址范围的末尾开始显示 128个字节的内容;第一次从DS:100处开始显示。 E命令 格式:E地址 字节串 或E地址功能:从指定的地址开始修改内存值。 参数说明:地址指定存放字节串第一个

5、内存的位置,字节串是要放入内存单元中的数据。 F命令 格式:F地址范围 字节或字节串 功能:将要填写的字节或字节串填入由地址范围指定的存储器中。 参数说明:地址范围指定要填充内存区域的起始和结束地址,或起始地址和长度。字节或字节串 指定要输入的数据,可以由十六进制数或引号包括起来的字符串组成。 G命令 格式:G=起始地址 断点 功能:执行正在调试的程序,当达到断点时停止执行, 并且显示寄存器标志和下一条要执行的命令。 参数说明:=起始地址指定当前在内存中要开始执行的指令所在的内存单元的地址。如果不指定=起始地址,DEBUG将从 CS:IP 寄存器中的当前地址开始执行程序。断点 指定可以设置为

6、g 命令的部分的 1 到 10 个临时断点。 H命令 格式:H数值数值 功能:分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。 参数说明:数值表示从 0 到 FFFFh 范围内的任何十六进制数字。 I命令 格式:I端口地址功能:从指定的端口输入并显示(用十六进制)指定端口中的数据(字节)。 参数说明:端口地址指定要读取数据的端口地址。 L命令 格式:L地址盘号:逻辑扇区号扇区数功能:将一个文件或盘的绝对扇区装入存储器。 参数说明:地址 指定要在其中加载文件或扇区内容的内存空间的起始位置。盘号: 指定包含读取指定扇区的磁盘的驱动器。该值是数值型,表示为:0 = A, 1 = B, 2

7、 = C, 等。逻辑扇区号 指定要加载其内容的第一个扇区的十六进制数。 扇区数 指定要加载其内容的连续扇区的十六进制数。 M命令 格式:M地址范围起始地址功能:把地址范围内的存储器单元的内容移到起始地址的指定地址中 参数说明:地址范围 指定要复制内容的内存区域的起始和结束地址,或起始地址和长度。起始地址 指定要将 range 内容复制到该位置的起始地址。 N命令 格式:N盘号: 路径 文件名 扩展名功能:定义DEBUG使用的文件。 参数说明:盘号: 路径 文件名 扩展名指定文件所在的盘符,路径,文件名和扩展名。 O命令 格式:O端口地址 数据功能:发送数据(字节)到指定的输出端口。 参数说明:

8、端口地址指定要写入数据的端口地址,数据 指定要向端口地址 中写入的字节值。 P命令 格式:P=地址 数据 功能:执行一个子程序调用指令,循环指令,中断指令或一个重复字符串指令,停止在下一条指令上。 参数说明:=地址 指定第一 条要执行指令的位置。如果不指定地址,则默认地址是在 CS:IP 寄存器中指定的当前地址,数据 指定在将控制返回给 Debug 之前要执行的指令数,默认值为 1。 Q命令 格式:Q 功能:退出DEBUG返回DOS。 参数说明:无参数。 R命令 格式:R寄存器 功能:1. 显示单个寄存器的内容,并提供修改功能。2. 显示所有寄存器内容, 再加上字母标志位状态以及要执行的下一条

9、指令。3. 显示8个标志位状态, 并提供修改功能。 参数说明:寄存器指定要显示其内容的寄存器名。 S命令 格式:S地址范围 字符串功能:在指定的地址范围内查找给定的字符串。 参数说明:地址范围 指定要搜索范围的开始和结束地址。字符串 指定要搜索的字节值或字符串。字符串应包括在引号中。 T命令 格式:T=地址 指令条数功能: 逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。 参数说明:=地址 指定第一 条要执行指令的位置。如果不指定地址,则默认地址是在 CS:IP 寄存器中指定的当前地址,指令条数 指定在将控制返回给 Debug 之前要执行的指令数,默认值为 1。 U命令 格式:U起始

10、地址或者地址范围功能:将内存中的内容转换为汇编语句。 参数说明:起始地址或者地址范围指定要反汇编代码的起始地址和结束地址,或起始地址和长度。 W命令 格式:W地址 盘符: 起始扇区 扇区数 功能:将内存中的数据写入磁盘中。 参数说明:地址指定要写到磁盘文件的文件或部分文件的起始内存地址。如果不指定 address,Debug 程序将从 CS:100 开始。盘符: 指定包含目标盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C,等等。起始扇区 指定要写入第一个扇区的十六进制数。扇区数 指定要写入的扇区数。 XA命令 格式:XA页面数 功能:分配扩展内存的指定页面数 参数说明:页面数

11、 指定要分配的扩展内存的 16KB 页数。 XD命令 格式:XD 释放的句柄 功能:释放指向扩展内存的句柄。 参数说明:释放的句柄 指定要释放的句柄。 XM命令 格式:XM 要映射扩展内存的逻辑页面号 映射到的物理页面号 句柄 功能:将属于指定句柄的扩展内存逻辑页映射到扩展内存的物理页。 参数说明:要映射扩展内存的逻辑页面号指定要映射到物理页的扩展内存的逻辑页面号。映射到的物理页面号指定将映射到的物理页面号。 句柄指定句柄。 XS命令 格式:XS 功能:显示有关扩展内存状态的信息。 参数说明:无参数 A命令使用 说明:用于小段程序的汇编及修改目标程序,所有输入的数字均默认为十六进制,并且不需要

12、以“h”字符结尾。用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到 CS:0100区域,则在它上次停止处开始汇编。 注意: 1. 直接在A命令下输入跳转指令时,跳转指令后应跟跳转到的语句所在内存单元的地址,不能跟标号;使用跳转指令时,可以指定跳转指令的属性:near,far。near 前缀可以缩写为 ne。如下例所示: -a0100:0100 0100:0100 jmp 102 0100:0102 jmp near 105 0100:0105 jmp far 10a 2. 汇编语言指令所涉及到的操作数可以是字操作数也可以是字节操作数,在语句不能判别操

13、作数的类型时,可以使用前缀 word ptr 或者前缀 byte ptr 指定操作数的类型。缩写分别是 :wo 和 by。如下列所示: -a0100:0100 0100:0100 dec word ptr 100 0100:0102 dec wo ptr 100 0100:0105 dec byte ptr 100 2. 在DEBUG下,应注意区分立即操作数和内存地址的操作数,使用包括在中括号 ( )中 的操作数表示内存地址。 3. 在DEBUG下,能够使用的伪指令仅有DB和DW两个,分别用于定义字节和字操作数,此时定义的操作数被存放在该定义指令所在的内存空间中。如下列所示(注意内存空间的变换

14、,why?): -a 0100:0100 0100:0100 DB ABCDEFG 0100:0107 C命令使用 说明:如果 源地址范围和目的地址中内存单元的数据相同,Debug 将不显示任何内容而直接返回到 Debug 提示符。如果有差异,Debug将按如下格式显示: 源地址 源地址中内容 目的地址中内容目的地址 如下列所示: -C CS:100 105 DS:300;(假定CS=0AF6;DS=1000) 0AF6:0100 88 00 1000:0300 0AF6:0101 C0 00 1000:0301 0AF6:0102 89 00 1000:0302 0AF6:0103 D8 0

15、0 1000:0303 0AF6:0104 65 00 1000:0304 0AF6:0105 66 00 1000:0305 D命令使用 说明:当使用 d 命令时,Debug分两个部分显示内存单元内容:左边显示内存单元中存放的十六进制数;右边显示左边的十六进制所表示的ASCII字符,所有不可打印字符用句号(.)表示。每行显示16个字节的内容,在第八和第九个字节之间有一个连字符“ 。 从键盘键入下面命令: -d cs:100 10f Debug 按以下格式显示地址范围中的内容(假定CS=0AF6): 0AF6:0100 77 61 6E 67 78 69 61 6F-69 6A 6B FF 0

16、E 00 01 FF wangxiaoijk. 键入以下命令,Debug 将从 CS:100 开始显示 20h 个字节的内容: -d cs:100 l 20 键入以下命令,Debug 将显示范围从 DS 段的 100h 到 115h 中所有字节的内容: -d 100 115 注意:在D命令中若不指定段寄存器,默认规定为DS。 E命令使用 说明:当使用E命令时,有两种使用格式: 1、 用E命令中包含的字节串替换从指定的地址开始的多个字节的内容; 2、 E命令后不跟字节串,则允许按顺序方式显示和修改内存值,按下空格键显示下一字节内容,若想修改,直接输入相应值;按下减号键显示上一字节内容,若想修改,

17、直接输入相应值。 3、 停止执行 e 命令。按 ENTER 键。在任何字节位置都可以按 ENTER。 注意: 1. 若地址部分只输入偏移量,则 E 命令认为段包括在DS寄存器中。 2. 字节串的值可以是十六进制字节或字符串。使用空格、逗号或制表符来分隔值。必须将字符串包括在单或双引号中。 3. 使用E命令后,内存单元中原来的数据将丢失,或者说被新输入的数据覆盖。 从键盘键入下面命令: -E 100 Debug 按下面的格式显示第一个字节的内容(假定DS=0AF6): 0AF6:0100 EB. 要将该值更改为 61,请在插入点键入(使用符号”_”表示) 61,如下所示: 0AF6:0100 A

18、B.61_ 此时,若按下空格键,将显示下一个内存单元中的内容: 0AF6:0100 AB.61 EF._ 此时,又可以在插入点键入新的内容,改写当前显示的内存内容,若不需要改写当前内存单元的内容,可以直接按下空格键,将显示下一个内存单元的内容,如此,一直到按 ENTER 停止 e 命令并返回到 Debug 提示符下。 若使用减号键,操作和按下空格键一样,区别在于将显示上一个内存单元的内容。 注意:使用该种方法,只能键入16进制数,不能键入字符串。 从键盘键入下面命令: E DS:100 EFABC41 则执行上面的命令后,从DS:100内存单元开始的5个连续的字节中的内容将被数据0EFH,字符

19、“A”“B”“C”的ASCII码和数据41H替换。 F命令使用 说明:如果地址范围包含的字节数比字节或字节串中的数值大,Debug 将对字节或字节串中提供的值反复使用,直到地址范围中的所有字节全部填充。如果在地址范围中的任何内存单元损坏或不存在,Debug 将显示错误消息并停止f命令。 如果字节或字节串 包含的数值多于地址范围中的字节数,Debug 将忽略字节或字节串中额外的值。 从键盘键入下面的命令: -F 1000:100 105 ABCDEFG 指令执行后,DEBUG使用ABCDEF填充1000:100到1000:105内存单元。 从键盘键入下面的命令: 1000:100 150 40

20、45 51 52 44 指令执行后,DEBUG反复使用40,45,51,52,44填充从1000:100 到 1000:150的内存单元,直到 50h 个字节全部填满为止。 G命令使用 说明:G命令中的不能省略,可以只给出偏移地址,默认段地址为当前的CS;若省略,则该地址就成为G命令中的断点地址。程序将从指定的开始地址不停的执行程序,一直到遇到结束指令为止,并显示“Program terminated normally”。断点地址只对本次G命令有效;下一条G命令若需要断点地址,应重新进行指定。当使用G命令执行程序到断电地址后,显示断点地址处的指令和寄存器的内容。 注意:断点地址应为一条指令在内

21、存单元中的首字节地址。 H命令使用 说明: Debug 首先将指定的两个参数相加,然后用第一个参数中减去第二个参数。并将计算的结果以4位16进制形式显示在下一行中:先显示计算和,然后显示计算差。 从键盘键入下面的命令: H 12 34 执行后,将在下一行显示: 0046 FFDE I命令使用 说明:端口地址的分为应在0FFFFH的范围内。 从键盘键入下面的命令: I FFFF 执行后,将在下一行显示(假定端口0FFFFH中的内容为FFH): FF L命令使用 说明: 单个L命令能够装入的最大扇区数是 80H,其中盘号 0,1,2,3分别代表 A,B,C,;若出现读盘错,显示错误信息。只有加载特

22、定扇区的内容而不是加载 debug 命令行或最近的 Debug n(名称)命令中指定的文件时,才能使用 drive、start 和 number 参数。 L命令使用情况,可以分为下列几种情况: 1、使用不带参数的L命令 当使用不带参数的L 命令时,在 debug 命令行上指定的文件将加载到从地址 CS:100 开始内存中。Debug 同时将 BX 和 CX 寄存器设置为加载的字节数(CX表示低位,BX表示高位)。如果不在 debug 命令行指定文件,所装入的文件将是最近使用 n 命令经常指定的文件。 2、使用带有 address 参数的L命令 使用带 address 参数的L命令,Debug

23、将从内存位置 address 开始加载文件或指定扇区的内容。? 3、使用带全部参数的L命令 使用带所有参数的L命令,Debug 将加载指定磁盘扇区的内容而不是加载文件。加载特定扇区的内容,指定范围内的每个扇区均从 drive 读取。Debug 从 start 开始加载,直到在 number 中指定的扇区数中的内容全部被加载。 从键盘键入如下命令(假定文件abc.exe存在当前目录之下): N wangxiao.exe L则把文件wangxiao.exe加载到CS:100开始的内存单元中。 若要将文件加载到1000:100开始内存单元中,键入: L 1000:100 M命令使用 说明:传送期间,

24、源数据区和目标数据区可以部分重叠;传送后源区数据保持不变,目的区的数据将使用源区中的数据进行改写。从键盘键入如下命令: M CS:100 150 DS:500 执行该指令,Debug 首先将 CS:150 地址中的内容复制到地址 DS:550 中,然后将 CS:14F 地址中的内容复制到 CS:54F 中,如此操作直至将 CS:100 地址中的内容复制到地址 DS:500 中。 N命令使用 说明: 可同时定义两个操作文件,并将形成的文件控制块相应的设置在内存 CS:5C和CS:6C上,供以后的L和W命令操作之用。 N命令的两个用途: 1、 可以使用N为后面的L(加载)或W(写入)命令指定所使用

25、的文件。 2、 可以使用N命令指定正在被调试文件的命令行参数和开关。 如下所示: 假定在Debug中正在调试的程序。若想为指定两个参数并运行此程序。可以键入如下的命令: N param1,param2 G 从键盘键入如下的命令序列: -N wang.exe -L -N xiao1.dat xiao2.dat -G 则第一个 N 命令将wang.exe 指定为后接的 L(加载)命令的文件,该命令将wang.exe 加载到内存。第二个N 命令指定wang.exe 将使用的参数。最后G命令将使用参数xiao1.dat和xiao2.dat运行wang.exe文件。此功能如同在 DOS命令行中键入了wa

26、ng.exe xiao1.dat xiao2.dat。 注意:不要在N命令的第二种形式后再次使用L命令,否则N命令的第二种形式中指定的参数将不起作用。此外,如果在N命令的第二种形式后使用W(写入)命令,将使用名称 xiao2.dat保存正在调试的文件 wang.exe。 每次使用N命令,都将影响下面的四个内存区域: 内存位置 内容 CS:5C 文件 1 的文件控制数据块 (FCB) CS:6C 文件 2 的文件控制数据块 (FCB) CS:80 N命令行的长度(以字符表示) CS:81 N命令行字符的开头 N命令指定的第一个文件名被放在 CS:5C 的 FCB 中。如果指定第二个文件名,第二个

27、文件文将放置到 CS:6C 的 FCB 中。N命令行上键入的字符数(除第一个字符N之外)存储在位置 CS:80。N命令行上的实际字符(再次,除了字母N之外)存储在以 CS:81 开头的位置。 O 命令使用 说明:端口地址的分为应在0FFFFH的范围内,数据应为字节数据。 从键盘键入下面的命令; O 73 FF 指令执行后,端口73H中的数据为0FFH。 P命令使用 说明: 使用P命令执行程序,该程序不间断运行,直到循环、重复字符串指令、软件中断或者完成了指定地址的子例程为止,或者直到执行了指定数量的机器指令为止。若被执行的指令不是循环、重复的字符串指令、软件中断或子程序,则P 命令与T(跟踪)

28、命令的作用相同。 考虑程序在地址 CS:168F处有一个 call 指令。要运行完call目标位置的子程序然后将控制返回Debug,从键盘键入下面命令: P=168F 执行指令后,按如下格式显示结果: AX=0000 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0AF6 ES=0AF6 SS=0AF6 CS=0AF6 IP=1692 NV UP EI PL NZ AC PO NC 0AF6:1692 BA2601 MOV AX,0126 Q命令使用 Q 执行该命令后,结束DEBUG,返回DOS。 R命令使用 说明:可以使

29、用的寄存器名有:AX、BX、CX、DX、SP、BP、SI、DI、DS、ES、SS、CS、IP、PC 及F。键入R命令不跟任何可用的寄存器名,则将显示所有的寄存器的内容以及CS:IP指向的存储单元中的内容;若键入R命令指定了寄存器名称,将以十六进制数形式显示该寄存器中的内容,下一行显示冒号提示符,在冒号提示符后面可以为寄存器键入新的数据。若不需要修改寄存器的数据,直接按 ENTER 键返回 Debug 提示符。如果键入 f 字符代替寄存器名,Debug 将每个标记的当前设置显示为两字母代码,然后显示 Debug提示符。要更改标志的设置,请从下表中键入适当的两字母代码;若不需要修改,直接ENTER

30、 键返回 Debug 提示符。可以修改全部或部分标志位,可以按任何顺序键入新的标志值。不需要在这些值之间留出空格。任何没有指定新值的标志保持不变。在DEBUG下,标志位表示如下: 标志名 标志为1 标志为0 OF OV NV DF DN UP IF EI DI SF NG PL ZF ZR NZ AF AC NA PF PE PO CF CY NC 注意:若输入的寄存器名不在上面的有效寄存器名之内,将显示: bf error R命令后只能跟一个有效的寄存器名。修改标志位如果指定没有在前面的表中列出的标志代码,将显示: bf error 若为一个标志位指定了多个值,Debug 将显示以下消息:

31、df error 要只查看标志的状态,键入以下命令: -R F 将按如下格式显示: NV UP DI NG NZ AC PE NC - _ 此时可以按任意顺序键入一个或多个有效的标志值,其中可以有或没有空格,如下所示: NV UP DI NG NZ AC PE NC PLEICY 执行指令后,将使用新的标志位数值代替旧值。 要查看当前所有寄存器的取值、所有标志位的内容和CS:IP指向的内存单元指令,键入以下命令: R 如果当前位置是 CS:1692,显示外观将类似于以下内容: AX=0000 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=

32、0000 DS=0AF6 ES=0AF6 SS=0AF6 CS=0AF6 IP=1692 NV UP EI PL NZ AC PO NC 0AF6:1692 BA2601 MOV AX,0126 从键盘上键入如下命令: R CX 执行后,将显示: CX 0000 : 在冒号后可以位CX键入新值,若不需要改变,直接按ENTER。 S命令使用 说明: 若在给定的分为内要搜索字节出现多次,将显示出所有地址。隐含地址为DS段值。 假定从范围DS:100 到 DS:110查找是否包含 61,键入下面命令: S 100 110 61 执行程序后,显示: 0AF6:010A 0AF6:010F 若要在范围C

33、S:100 到 CS:200内搜索字符串“wangxiao”,键入下面的命令: S CS:100 CS:200 wangxiao T命令使用 说明: 通常采用跟踪一条指令,但用户也可以用指令条数设定一次跟踪多条指令,每执行一条指令之后,显示所有寄存器的内容和标志状态以及下一条指令在内存中的保存情况。T命令若不跟=地址参数,则从当前CS:IP处开始执行,第一次键入的T命令从CS:100处开始执行程序。T命令默认寄存器位CS。参考P命令。 键入下面得到命令: T 若是第一次执行,则显示: AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0AF6 ES=0AF6 SS=0AF6 CS=0AF6 IP=0103 NV UP EI PL NZ AC PO NC 0AF6:0103 BA2601 MOV AX,0126若要从CS:200处开始执行程序,则键入下面的命令: T=CS:200 U命令使用 说明:U命令中如果没有使用参数,第一次使用,则U命令从CS:IP开始对20h个字节内容进行反汇编;若不是第一次使用,则从前面U命令所显示地址后的第一个地址开始开始对20h个字节内容进行反汇编。 若要从CS:100开始反汇编 8 (10h) 字节,键入下面命令: U CS:100 108 程序执行

温馨提示

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

评论

0/150

提交评论