文档库 最新最全的文档下载
当前位置:文档库 › DEBUG命令详解

DEBUG命令详解

DEBUG命令详解

一、Debug:A(汇编)

作用:直接将 8086/8087/8088 记忆码合并到内存。

该命令从汇编语言语句创建可执行的机器码。所有数值都是十六进制格式,必须按一到四个字符输入这些数值。在引用的操作代码(操作码)前指定前缀记忆码。

格式:a [address]

参数

address 指定键入汇编语言指令的位置。对 address 使用十六进制值,并键入不以“h”字符结尾的每个值。如果不指定地址,a 将在它上次停止处开始汇编。

〔有关将数据输入到指定字节中的信息,请查阅 Debug E(键入)。〕

〔有关反汇编字节的信息,请查阅Debug U(反汇编)。〕

1、说明:

①使用记忆码

段的替代记忆码为 cs:、ds:、es: 和 ss:。远程返回的记忆码是 retf。字符串处理的记忆码必须明确声明字符串大小。例如,使用 movsw 可以移动 16 位的字串,使用 movsb 可以移动 8 位字节串。

②汇编跳转和调用

汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。通过使用 near 或 far 前缀可以替代这样的跳转或调用,如下例所示:

-a0100:0500

0100:0500 jmp 502 ; a 2-byte short jump

0100:0502 jmp near 505 ; a 3-byte near jump

0100:0505 jmp far 50a ; a 5-byte far jump

可以将 near 前缀缩写为 ne。

③区分字和字节内存位置

当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀 word ptr 或者前缀 byte ptr 指定数据类型。可接受的缩写分别是 wo 和 by。以下范例显示两种格式:

dec wo [si]

neg byte ptr [128]

④指定操作数

Debug 使用包括在中括号 ([ ]) 的操作数引用内存地址的习惯用法。这是因为另一方面 Debug 不能区分立即操作数和内存地址的操作数。以下范例显示两种格式:

mov ax,21 ; load AX with 21h

mov ax,[21] ; load AX with the contents of memory location 21h

⑤使用伪指令

使用 a 命令提供两个常用的伪指令:db 操作码,将字节值直接汇编到内存,dw 操作码,将字值直接汇编到内存。以下是两个伪指令的范例:

db 1,2,3,4,"THIS IS AN EXAMPLE"

db 'THIS IS A QUOTATION MARK:"'

db "THIS IS A QUOTATION MARK:'"

dw 1000,2000,3000,"BACH"

2、范例

a 命令支持所有形式的间接注册命令,如下例所示:

add bx,34[bp+2].[si-1]

pop [bp+di]

push [si]

还支持所有操作码同义词,如下例所示:

loopz 100

loope 100

ja 200

jnbe 200

对于 8087 操作码,必须指定 wait 或 fwait 前缀,如下例所示:

fwait fadd st,st(3) ; this line assembles an fwait prefix

二、Debug:C(比较)

作用:比较内存的两个部分。

格式:c range address

参数

range 指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度

address 指定要比较的第二个内存区域的起始地址。

1、说明

如果 range 和 address 内存区域相同,Debug 将不显示任何内容而直接返回到 Debug 提示符。如果有差异,Debug 将按如下格式显示:

address1 byte1 byte2 addess2

2、范例

以下命令具有相同效果:

c100 10f 300

c100l10 300

每个命令都对 100h 到 10Fh 的内存数据块与 300h 到 30Fh 的内存数据块进行比较。

Debug 响应前面的命令并显示如下信息(假定 DS = 197F):

197F:0100 4D E4 197F:0300

197F:0101 67 99 197F:0301

197F:0102 A3 27 197F:0302

197F:0103 35 F3 197F:0303

197F:0104 97 BD 197F:0304

197F:0105 04 35 197F:0305

197F:0107 76 71 197F:0307

197F:0108 E6 11 197F:0308

197F:0109 19 2C 197F:0309

197F:010A 80 0A 197F:030A

197F:010B 36 7F 197F:030B

197F:010C BE 22 197F:030C

197F:010D 83 93 197F:030D

197F:010E 49 77 197F:030E

197F:010F 4F 8A 197F:030F

注意列表中缺少地址 197F:0106 和 197F:0306。这表明那些地址中的值是相同的。

三、Debug:D(转储)

作用:显示一定范围内存地址的内容。

格式:d [range]

参数

range 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。如果不指定 range,Debug 程序将从以前 d 命令中所指定的地址范围的末尾开始显示 128 个字节的内容。

〔有关显示寄存器内容的信息,请查阅Debug R(寄存器)。〕

1、说明

当使用 d 命令时,Debug 以两个部分显示内存内容:十六进制部分(每个字节的值都用十六进制格式表示)和 ASCII 码部分(每个字节的值都用 ASCII 码字符表示)。每个非打印字符在显示的 ASCII 部分由句号 (.) 表示。每个显示行显示 16 字节的内容,第 8 字节和第 9 字节之间有一个连字符。每个显示行从 16 字节的边界上开始。

2、范例

假定键入以下命令:

dcs:100 10f

Debug 按以下格式显示范围中的内容:

04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER......

如果在没有参数的情况下键入 d 命令,Debug 按以前范例中所描述的内容来编排显示格式。显示的每行以比前一行的地址大 16 个字节(如果是显示 40 列的屏幕,则为 8 个字节)的地址开头。

对于后面键入的每个不带参数的 d 命令,Debug 将紧接在最后显示的命令后立即显示字节内容。

如果键入以下命令,Debug 将从 CS:100 开始显示 20h 个字节的内容:

dcs:100 l 20

如果键入以下命令,Debug 将显示范围从 CS 段的 100h 到 115h 中所有字节的内容:

dcs:100 115

四、Debug:E(键入)

作用:将数据输入到内存中指定的地址。可以按十六进制或 ASCII 格式键入数据。以前存储在指定位置的任何数据全部丢失。

格式:e address [list]

参数

address 指定输入数据的第一个内存位置。

list 指定要输入到内存的连续字节中的数据。

〔有关集成记忆码的信息,请查阅Debug A(汇编)。〕

〔有关显示内存部分内容的信息,请查阅Debug D (转储)。〕

1、说明

①使用 address 参数

如果在没有指定可选的 list 参数的值情况下指定 address 的值,Debug 将显示地址和内容,在下一行重复地址,并等待您的输入。此时,您可以执行下列操作之一:

A.替换字节值。为此,请在当前值后键入新值。如果您键入的值不是有效的十六进制值,或该值包含两个以上的数字,则 Debug 不会回显无效或额外的字符。

B.进入下一个字节。为此,请按 SPACEBAR(空格键)。要更改该字节中的值,请在当前值后键入新值。如果按 SPACEBAR(空格键)时,移动超过了 8 位界限,Debug 程序将显示新的一行并在行首显示新地址。返回到前一个字节。为此,请按 HYPHEN 键 (-)。可以反复按 HYPHEN 键 (-) 向后移动超过多个字节。在

按 HYPHEN 时,Debug 开始新行并显示当前地址和字节值。

C.停止执行 e 命令。为此,请按 ENTER 键。在任何字节位置都可以按 ENTER。

②使用 list 参数

如果指定 list 参数的值,随后的 e 命令将使用列表中的值替换现有的字节值。如果发生错误,将不更改任何字节值。

List 值可以是十六进制字节或字符串。使用空格、逗号或制表符来分隔值。必须将字符串包括在单或双引号中。

2、范例

假定键入以下命令:

ecs:100

Debug 按下面的格式显示第一个字节的内容:

04BA:0100 EB.

要将该值更改为 41,请在插入点键入 41,如下所示:

04BA:0100 EB.41_

可以用一个 e 命令键入连续的字节值。在键入新值后按 SPACEBAR(空格键),而不是按 ENTER 键。Debug 显示下一个值。在此范例中,如果按三次 SPACEBAR(空格键),Debug 将显示下面的值:

04BA:0100 EB.41 10. 00. BC._

要将十六进制值 BC 更改为 42,请在插入点键入 42,如下所示:

04BA:0100 EB.41 10. 00. BC.42_

假定决定值 10 应该是 6F。要纠正该值,请按 HYPHEN 键两次以返回到地址 0101(值 10)。Debug 显示以下内容:

04BA:0100 EB.41 10. 00. BC.42-

04BA:0102 00.-

04BA:0101 10._

在插入点键入 6f 更改值,如下所示:

04BA:0101 10.6f_

按 ENTER 停止 e 命令并返回到 Debug 提示符下。

以下是字符串项的范例:

eds:100 "This is the text example"

该字符串将从 DS:100 开始填充 24 个字节

五、Debug:F(填充)

作用:使用指定的值填充指定内存区域中的地址。

可以指定十六进制或 ASCII 格式表示的数据。任何以前存储在指定位置的数据将会丢失。

格式:f range list

参数

range 指定要填充内存区域的起始和结束地址,或起始地址和长度。关于有效的 range 值的信息,请单击“相关主题”列表中的“Debug 说明”。

list 指定要输入的数据。List 可以由十六进制数或引号包括起来的字符串组成。

1、说明

①使用 range 参数

如果 range 包含的字节数比 list 中的数值大,Debug 将在 list 中反复指派值,直到 range 中的所有字节全部填充。

如果在 range 中的任何内存损坏或不存在,Debug 将显示错误消息并停止 f 命令。

②使用 list 参数

如果 list 包含的数值多于 range 中的字节数,Debug 将忽略 list 中额外的值。

2、范例

假定键入以下命令:

f04ba:100l100 42 45 52 54 41

作为响应,Debug 使用指定的值填充从 04BA:100 到 04BA:1FF 的内存位置。Debug 重复这五个值直到 100h 个字节全部填满为止。

六、Debug:G(转向)

作用:运行当前在内存中的程序。

格式:g [=address] [breakpoints]

参数

=address 指定当前在内存中要开始执行的程序地址。如果不指定 address,Windows 2000 将从 CS:IP 寄存器中的当前地址开始执行程序。

breakpoints 指定可以设置为 g 命令的部分的 1 到 10 个临时断点。

〔有关执行循环、重复的字符串指令、软件中断或子程序的信息,请查阅 Debug P(执行)。〕〔有关执行指令的信息,请查阅 Debug T(跟踪)。〕

七、Debug:H(十六进制)

作用:对指定的两个参数执行十六进制运算。

格式:h value1 value2

参数

value1 代表从 0 到 FFFFh 范围内的任何十六进制数字。

value2 代表从 0 到 FFFFh 范围内第二个十六进制数字。

1、说明

Debug 首先将指定的两个参数相加,然后从第一个参数中减去第二个参数。这些计算的结果显示在一行中:先计算和,然后计算差。

2、范例

假定键入以下命令:

h19f 10a

Debug 执行运算并显示以下结果。

02A9 0095

八、Debug:I(输入)

作用:从指定的端口读取并显示一个字节值。

格式:i port

参数

port 按地址指定输入端口。地址可以是 16 位的值。

〔有关将字节值发送到输出端口的信息,请查阅Debug O(输出)。〕

1、范例

假定键入以下命令:

i2f8

同时假定端口的字节值是 42h。Debug 读取该字节,并将其值显示如下:

42

九、D ebug:L(加载)

作用:将某个文件或特定磁盘扇区的内容加载到内存。

要从磁盘文件加载 BX:CX 寄存器中指定的字节数内容,请使用以下语法:

格式:l [address]

要略过 Windows 2000 文件系统并直接加载特定的扇区,请使用以下语法:

格式:l address drive start number

参数

address 指定要在其中加载文件或扇区内容的内存位置。如果不指定 address,Debug 将使用 CS 寄存器中的当前地址。

drive 指定包含读取指定扇区的磁盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C 等。

start 指定要加载其内容的第一个扇区的十六进制数。

number 指定要加载其内容的连续扇区的十六进制数。只有要加载特定扇区的内容而不是加载 debug 命令行或最近的 Debug n(名称)命令中指定的文件时,才能使用 drive、start 和 number 参数。

〔有关指定用于l命令的文件的信息,请查阅Debug n(名称)。〕

〔有关写入调试到磁盘的文件的信息,请查阅Debug w(写入)。〕

1、注意

①使用不带参数的 l 命令

当使用不带参数的 l 命令时,在 debug 命令行上指定的文件将加载到内存中,从地址 CS:100 开始。Debug 同时将 BX 和 CX 寄存器设置为加载的字节数。如果不在 debug 命令行指定文件,所装入的文件将是最近使用 n 命令经常指定的文件。

②使用具有 address 参数的 1 命令

如果使用带 address 参数的 l 命令,Debug 将从内存位置 address 开始加载文件或指定扇区的内容。

③使用带全部参数的 l 命令

如果使用带所有参数的 l 命令,Debug 将加载指定磁盘扇区的内容而不是加载文件。

④加载特定扇区的内容

指定范围内的每个扇区均从 drive 读取。Debug 从 start 开始加载,直到在 number 中指定的扇区数中的内容全部被加载。

⑤加载 .exe 文件

Debug 忽略 .exe 文件的地址 address 参数。如果指定 .exe 文件,Debug 将文件重新定位到 .exe 文件的标题中指定的加载地址。在 .exe 文件被加载到内存前,标题自身从 .exe 文件脱离,因此磁盘上的 .exe 文件大小与内存中的不同。如果要检查整个 .exe 文件,请使用不同的扩展名重命名文件。

⑥打开十六进制文件

Debug 将具有 .hex 扩展名的文件认为十六进制格式文件。键入不带参数的 l 命令,可以加载从十六进制文件中指定的地址处开始的十六进制文件。如果键入的 l 命令包含 address 参数,Debug 将把指定的地址加到在十六进制文件中找到的地址上,以确定起始地址。

2、范例

假定启动 Debug 并键入以下命令:

https://www.wendangku.net/doc/ed15462677.html,

现在可以键入 l 命令以加载 https://www.wendangku.net/doc/ed15462677.html,。Debug 将加载文件并显示 Debug 提示符。

假定需要从驱动器 C 将起始逻辑扇区为 15 (0Fh) 的 109 (6Dh) 个扇区的内容加载到起始地址为

04BA:0100 的内存中。为此,请键入以下命令:

l04ba:100 2 0f 6d

十、D ebug:M(移动)

作用:将一个内存块中的内容复制到另一个内存块中。

格式:m range address

参数

range 指定要复制内容的内存区域的起始和结束地址,或起始地址和长度。

address 指定要将 range 内容复制到该位置的起始地址。

1、说明

①复制操作对现有数据的影响

如果新数据没有写入正在被复制的数据块中的地址,则源数据将保持不变。但是,如果目标块已经包含数据(就象它在覆盖副本操作中一样),则将改写该数据。(覆盖复制操作是指那些目标数据块部分内容覆盖原数据块部分内容的操作。)

②执行覆盖复制操作

m 命令执行目标地址的覆盖复制操作,而不丢失数据。将改写的地址内容首先复制。因此,如果将较高位地址的数据复制到较低位地址,则复制操作从原块的最低位地址开始并向最高位地址进行。反之,如果要将数据从低地址复制到高地址,复制操作从原块的最高地址开始,向最低地址进行。

2、范例

假定键入以下命令:

mcs:100 110 cs:500

Debug 首先将 CS:110 地址中的内容复制到地址 CS:510 中,然后将 CS:10F 地址中的内容复制到CS:50F 中,如此操作直至将 CS:100 地址中的内容复制到地址 CS:500 中。要查看结果,请使用 Debug d (转储)命令,并使用 m 命令指定目标地址

十一、Debug:N(名称)

作用:指定 Debug l(加载)或 w(写入)命令的可执行文件的名称,或者指定正在调试的可执行文件的参数。

格式:n [drive:][path] filename

要指定测试的可执行文件的参数,请使用以下语法:

格式:n file-parameters

参数

如果在没有参数的情况下使用,则 n 命令清除当前规范。

[drive:][path] filename 指定要测试的可执行文件的位置和名称。

file-parameters 为正在测试的可执行文件指定参数和开关。

〔有关将文件或指定磁盘扇区的内容加载到内存中的信息,请查阅Debug L(加载)。〕

〔有关写入调试到磁盘的文件的信息,请查阅Debug W(写入)。〕

1、说明

①n 命令的两个用途

可以按两种方式使用 n 命令。首先,您可以使用它以指定后面的 l(加载)或 w(写入)命令所使用的文件。如果在没有命名所调试文件的情况下启动 Debug,必须在使用 l 命令加载文件之前使用命令nfilename。在 CS:5C 为文件控制块 (FCB) 正确编排文件名的格式。其次,可以使用 n 命令指定被调试文件的命令行参数和开关。

②内存区域

以下四个内存区域都会受到 n 命令的影响:

内存位置内容

CS:5C 文件 1 的文件控制数据块 (FCB)

CS:6C 文件 2 的文件控制数据块 (FCB)

CS:80 n 命令行的长度(以字符表示)

CS:81 n 命令行字符的开头

为 n 命令指定的第一个文件名被放在 CS:5C 的 FCB 中。如果指定第二个文件名,此名称将放置到CS:6C 的 FCB 中。n 命令行上键入的字符数(除第一个字符之外,n)存储在位置 CS:80。n 命令行上的实际字符(再次,除了字母 n 之外)存储在以 CS:81 开头的位置。注意这些字符可以是在 Windows 2000 命令提示符下键入的命令中有效的任何开关和分隔符。

2、范例

假定已经启动 Debug,并加载了正在调试的程序 https://www.wendangku.net/doc/ed15462677.html,。接着您决定为 https://www.wendangku.net/doc/ed15462677.html, 指定两个参数并运行此程序。以下是此范例的命令序列:

debug https://www.wendangku.net/doc/ed15462677.html,

nparam1 param2

g

在这种情况下,Debug g(转向)命令会运行该程序,就好像您已在 Windows 2000 命令提示符后键入了如下命令:

prog param1 param2

所以,测试和调试反映 https://www.wendangku.net/doc/ed15462677.html, 通常的运行时间环境。

在下面的命令序列中,第一个 n 命令将 File1.exe 指定为后接的 l(加载)命令的文件,该命令将File1.exe 加载到内存。第二个 n 命令指定 File1.exe 将使用的参数。最后,g 命令将运行 File1.exe 文件,就好像您在 Windows 2000 命令行中键入了 File1 File2.dat File2.dat 一样。

nfile1.exe

l

nfile2.dat file3.dat

g

注意

不要在 n 命令的第二种形式后使用 l 命令。还要注意,如果现在使用 w(写入)命令,Windows 2000 将使用名称 File2.dat 保存正在调试的文件 File1.exe。为避免出现此结果,应该总是在 l 或 w 命令之前立即使用 n 命令的第一种形式。

十二、Debug:O(输出)

作用:将字节值发送到输出端口。

格式:o port byte-value

参数

port 通过地址指定输出端口。端口地址可以是 16 位值。

byte-value 指定要指向 port 的字节值。

〔有关从输入端口读取字节值的信息,请查阅Debug I(输入)。〕

1、范例

要将字节值 4Fh 发送到地址为 2F8h 的输出端口,请键入以下命令:

o2f8 4f

十三、Debug:P(执行)

作用:执行循环、重复的字符串指令、软件中断或子例程;或通过任何其他指令跟踪。

格式:p [= address] [number]

参数

=address 指定第一个要执行指令的位置。如果不指定地址,则默认地址是在 CS:IP 寄存器中指定的当前地址。

number 指定在将控制返回给 Debug 之前要执行的指令数。默认值为 1。

〔有关运行当前在内存中程序的信息,请查阅Debug G(转向)。〕

〔有关执行指令的信息,请查阅Debug T(跟踪)。〕

1、说明

①控制传送到要测试的程序

当 p 命令将控制从 Debug 传送到要测试的程序时,该程序不间断运行,直到循环、重复字符串指令、软件中断或者完成了指定地址的子例程为止,或者直到执行了指定数量的机器指令为止。控制返回到Debug。

②地址参数的限制

如果 address 参数没有指定段,Debug 将使用被测试程序的 CS 寄存器。如果省略 address,程序将从 CS:IP 寄存器所指定的地址开始执行。必须在 address 参数之前使用等号 (=) 以便将它与 number 参数区分。如果在指定地址处的指令不是循环、重复的字符串指令、软件中断或子例程,则 p 命令与 Debug t(跟踪)命令的作用相同。

③使用 p 命令显示的邮件

当 p 执行完一段说明后,Debug 显示出程序的寄存器内容、标志的状态以及下一段将要被执行的指令的解码形式。

④警告

不能使用 p 命令跟踪只读内存 (ROM)。

2、范例

假定正在测试的程序在地址 CS:143F 处包含一个 call 指令。要运行 call 目标位置的子程序然后将控制返回到 Debug,请键入以下命令:

p=143f

Debug 按以下格式显示结果:

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=2246 ES=2246 SS=2246 CS=2246 IP=1443 NV UP EI PL NZ AC PO NC

2246:1442 7505 JNZ 144A

十四、Debug:Q(退出)

作用:停止 Debug 会话,不保存当前测试的文件。

当您键入 q 以后,控制返回到 Windows 2000 的命令提示符。

格式:q

参数

该命令不带参数。

〔有关保存文件的信息,请查阅Debug W(写入)。〕

十五、Debug:R(寄存器)

作用:显示或改变一个或多个 CPU 寄存器的内容。

格式:r [register-name]

参数

无如果在没有参数的情况下使用,则 r 命令显示所有寄存器的内容以及寄存器存储区域中的标志。

register-name 指定要显示其内容的寄存器名。

〔有关显示内存部分内容的信息,请查阅Debug D(转储)。〕

〔有关反汇编字节的信息,请查阅Debug U(反汇编)。〕

1、说明

①使用 r 命令

如果指定了寄存器名称,Windows 2000 将显示以十六进制标记表示的寄存器的 16 位值,并将冒号显示为提示符。如果要更改包含在寄存器中的值,除非键入新值并按 ENTER 键;否则,请按 ENTER 键返回Debug 提示符。

②有效寄存器名

以下是 register-name 的有效值:ax、bx、cx、dx、sp、bp、si、di、ds、es、ss、cs、ip、pc 及 f。ip 和 pc 都引用指令指针。

如果指定寄存器名称,而不是从前面的列表中指定,Windows 2000 将显示以下消息:

br error

③使用 f 字符而不是寄存器名

如果键入 f 字符代替寄存器名,Debug 将每个标记的当前设置显示为两字母代码,然后显示 Debug 提示符。要更改标志的设置,请从下表中键入适当的两字母代码:

标志名设置清除

溢出ov nv

方向dn(减)up(增)

中断ei(启用)di(禁用)

正负ng(负)pl(正)

零zr nz

辅助进位ac na

奇偶校验pe(偶校验) po(奇校验)

进位cy nc

可以按任何顺序键入新的标志值。不需要在这些值之间留出空格。要停止 r 命令,请按 ENTER 键。任何没有指定新值的标志保持不变。

④用 r 命令显示的邮件

如果为标记指定了多个值,Debug 将显示以下消息:

df error

如果指定没有在前面的表中列出的标志代码,Debug 将显示以下消息:

bf error

在这两种情况下,Debug 将忽略所有在无效项目之后指定的设置。

⑤Debug 的默认设置

在启动 Debug 时,会将段寄存器设置到空闲内存的低端,指令指针设置为 0100h,清除所有标志,并且将其余寄存器设置为零,除了被设置为 FFEEh 的 sp 之外。

2、范例

要查看所有寄存器的内容、所有标记的状态和当前位置的指令解码表,请键入以下命令:

r

如果当前位置是 CS:11A,显示外观将类似于以下内容:

AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000

DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC

04BA:011A CD21 INT 21

要只查看标志的状态,请键入以下命令:

rf

Debug 按以下格式显示信息:

NV UP DI NG NZ AC PE NC - _

现在,您可以按任意顺序键入一个或多个有效的标志值,其中可以有或没有空格,如下所示:

nv up di ng nz ac pe nc - pleicy

Debug 结束 r 命令并显示 Debug 提示符。要查看更改,请键入 r 或 rf 命令。Debug 将显示以下内容:

NV UP EI PL NZ AC PE CY - _

按 ENTER 返回到 Debug 提示符。

十六、Debug:S(搜索)

作用:在某个地址范围搜索一个或多个字节值的模式。

格式:s range list

参数

range 指定要搜索范围的开始和结束地址。有关 range 参数有效值的信息,请查阅Debug。

list 指定一个或多个字节值的模式,或要搜索的字符串。用空格或逗号分隔每个字节值和下一个字节值。将字符串值包括在引号中。

1、说明

如果 list 参数包含多个字节值,Debug 将只显示出现字节值的第一个地址。如果 list 只包含一个字节值,Debug 将显示指定范围内出现该值的所有地址。

2、范例

假定需要查找包含值 41 并且范围从 CS:100 到 CS:110 的所有地址。为此,请键入以下命令:scs:100 110 41

Debug 按以下格式显示结果:

04BA:0104

04BA:010D

-

以下命令在 CS:100 到 CS:1A0 的范围内搜索字符串“Ph”。

scs:100 1a0 "Ph"

十七、Debug:U(反汇编)

作用:反汇编字节并显示相应的原语句,其中包括地址和字节值。反汇编代码看起来象已汇编文件的列表。格式:u [range]

参数

无如果在没有参数的情况下使用,则 u 命令分解 20h 字节(默认值),从前面 u 命令所显示地址后的第一个地址开始。

range 指定要反汇编代码的起始地址和结束地址,或起始地址和长度。

〔有关集成记忆码的信息,请查阅Debug A(汇编)。〕

〔有关显示内存部分内容的信息,请查阅Debug D(转储)。〕

1、范例

要反汇编 16 (10h) 字节,从地址 04BA:0100 开始,请键入以下命令:

u04ba:100l10

Debug 按以下格式显示结果:

04BA:0100 206472 AND [SI+72],AH

04BA:0103 69 DB 69

04BA:0104 7665 JBE 016B

04BA:0106 207370 AND [BP+DI+70],DH

04BA:0109 65 DB 65

04BA:010A 63 DB 63

04BA:010B 69 DB 69

04BA:010C 66 DB 66

04BA:010D 69 DB 69

04BA:010E 63 DB 63

04BA:010F 61 DB 61

如果只显示从 04BA:0100 到 04BA:0108 特定地址的信息,请键入以下命令:

u04ba:0100 0108

Debug 显示以下内容:

04BA:0100 206472 AND [SI+72],AH

04BA:0103 69 DB 69

04BA:0104 7665 JBE 016B

04BA:0106 207370 AND [BP+DI+70],DH

十八、Debug:W(写入)

作用:将文件或特定分区写入磁盘。

要将在 BX:CX 寄存器中指定字节数的内容写入磁盘文件,请使用以下语法:

格式:w [address]

要略过 Windows 2000 文件系统并直接写入特定的扇区,请使用以下语法:

格式:w address drive start number

参数

address 指定要写到磁盘文件的文件或部分文件的起始内存地址。如果不指定 address,Debug 程序将从 CS:100 开始。

drive 指定包含目标盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C,等等。

start 指定要写入第一个扇区的十六进制数。

number 指定要写入的扇区数。

〔有关指定用于 w 命令的文件的信息,请查阅Debug N(名称)。〕

〔有关将文件或文件扇区内容加载到内存中的信息,请查阅Debug L(加载)。〕

1、说明

①必须在启动 Debug 时或者在最近的 Debug n(名称)命令中指定磁盘文件的名字。这两种方法都可以将地址 CS:5C 处文件控制块的文件名正确地编排格式。

②在使用不带参数的 w 命令之前重新设置 BX:CX

如果使用了 Debug g(转向)、t(跟踪)、p(执行)或 r(寄存器)命令,必须在使用无参数的 w 命令之前,将 BX:CX 寄存器复位。

③将修改后的文件写入磁盘

如果修改文件但不更改文件名、长度或起始地址,Debug 仍然可以正确地将文件写入源磁盘位置。

④w 命令的限制

不能用该命令写入 .exe 或 .hex 文件。

⑤警告

因为略过 Windows 2000 文件句柄,所以写入特定的分区非常危险。如果键入错误的值,则磁盘文件结构很容易被损坏。

2、范例

假定要将起始地址为 CS:100 的内存内容写入到驱动器 B 的磁盘中。需要将数据从磁盘的逻辑扇区号37h 开始并持续 2Bh 个扇区。为此,键入以下命令:

wcs:100 1 37 2b

当写操作完成时,Debug 再次显示 Debug 提示符。

十九、Debug:XA(分配扩展内存)

作用:分配扩展内存的指定页面数。

要使用扩展内存,必须安装符合 4.0 版的 Lotus/Intel/Microsoft 扩展内存规范 (LIM EMS) 的扩展内存设备驱动程序。

格式:xa [count]

参数

count 指定要分配的扩展内存的 16KB 页数。

〔有关使用扩展内存的其他 Debug 命令的信息,请查阅XD(释放扩展内存)、XM(映射扩展内存页)或 XS(显示扩展内存状态)。〕

1、说明

如果指定的页面数可用,则 Debug 将显示消息,此消息表明所创建的句柄的十六进制数;否则,Debug 将显示错误消息。

2、范例

要分配扩展内存的 8 个页面,请键入以下命令:

xa8

如果命令成功,Debug 将显示类似的以下消息:

Handle created=0003

二十、Debug:XD(释放扩展内存)

作用:释放指向扩展内存的句柄。

要使用扩展内存,必须安装符合 4.0 版的 Lotus/Intel/Microsoft 扩展内存规范 (LIM EMS) 的扩展内存设备驱动程序。

格式:xd [handle]

参数

handle 指定要释放的句柄。

〔有关使用扩展内存的其他 Debug 命令的信息,请单击“相关主题”列表中 XA(分配扩展内存)、XM(映射扩展内存页)或 XS(显示扩展内存状态)。〕

1、范例

要释放句柄 0003,请键入以下命令:

xd 0003

如果命令成功,Debug 将显示下列消息:

Hdle 0003 deallocated

二十一、Debug:XM(映射扩展内存页)

作用:将属于指定句柄的扩展内存逻辑页映射到扩展内存的物理页。

要使用扩展内存,必须安装符合 4.0 版的 Lotus/Intel/Microsoft 扩展内存规范 (LIM EMS) 的扩展内存设备驱动程序。

格式:xm [lpage] [ppage] [handle]

参数

lpage 指定要映射到物理页 ppage 的扩展内存的逻辑页面号。

ppage 指定将 lpage 映射到的物理页面号。

handle 指定句柄。

〔有关使用扩展内存的其他 Debug 命令的信息,请查阅XA(分配扩展内存)、XD(释放扩展内存)或 XS(显示扩展内存)。〕

1、范例

要将句柄 0003 的逻辑页 5 映射到物理页 2,请键入以下命令:

xm 5 2 0003

如果命令成功,Debug 将显示下列消息:

Logical page 05 mapped to physical page 02

二十二、Debug:XS(显示扩展内存状态)

作用:显示有关扩展内存状态的信息。

要使用扩展内存,必须安装符合 4.0 版的 Lotus/Intel/Microsoft 扩展内存规范 (LIM EMS) 的扩展内存设备驱动程序。

格式:xs

参数

该命令不带参数。

〔有关使用扩展内存的其他 Debug 命令的信息,请查阅XA(分配扩展内存)、XD(释放扩展内存)或 XM(映射扩展内存页)。〕

1、说明

Debug 显示的信息有如下格式:

Handle xx has xx pages allocated

Physical page xx = Frame segment xx

xx of a total xx EMS pages have been allocated

xx of a total xx EMS handles have been allocated

2、范例

要显示扩展内存信息,请键入以下命令:

xs

Debug 显示与以下类似的信息:

Handle 0000 has 0000 pages allocated

Handle 0001 has 0002 pages allocated

Physical page 00 = Frame segment C000

Physical page 01 = Frame segment C400

Physical page 02 = Frame segment C800

Physical page 03 = Frame segment CC00

2 of a total 80 EMS pages have been allocated

2 of a total FF EMS handles have been allocated

【微机原理】DEBUG命令详解

DUBUG命令详解 Debug:A(汇编) 直接将8086/8087/8088 记忆码合并到内存。 该命令从汇编语言语句创建可执行的机器码。所有数值都是十六进制格式,必须按一到四个字符输入这些数值。在引用的操作代码(操作码)前指定前缀记忆码。 a [address] 参数address指定键入汇编语言指令的位置。对address 使用十六进制值,并键入不以“h”字符结尾的每个值。如果不指定地址,a 将在它上次停止处开始汇编。有关将数据输入到指定字节中的信息,请单击“相关主题”列表中的Debug E(键入)。有关反汇编字节的信息,请单击“相关主题”列表中的Debug U(反汇编)。 说明使用记忆码 段的替代记忆码为cs:、ds:、es: 和ss:。远程返回的记忆码是retf。字符串处理的记忆码必须明确声明字符串大小。例如,使用movsw 可以移动16 位的字串,使用movsb 可以移动8 位字节串。 汇编跳转和调用汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。通过使用near 或far 前缀可以替代这样的跳转或调用,如下例所示: -a0100:0500 0100:0500 jmp 502 ; a 2-byte short jump 0100:0502 jmp near 505 ; a 3-byte near jump 0100:0505 jmp far 50a ; a 5-byte far jump 1

可以将near 前缀缩写为ne。 区分字和字节内存位置当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀word ptr 或者前缀byte ptr 指定数据类型。可接受的缩写分别是wo 和by。以下范例显示两种格式: dec wo [si] neg byte ptr [128] 指定操作数Debug 使用包括在中括号([ ]) 的操作数引用内存地址的习惯用法。这是因为另一方面Debug 不能区分立即操作数和内存地址的操作数。以下范例显示两种格式: mov ax,21 ; load AX with 21h mov ax,[21] ; load AX with the ; contents of ; memory location 21h 使用伪指令使用a 命令提供两个常用的伪指令:db 操作码,将字节值直接汇编到内存,dw 操作码,将字值直接汇编到内存。以下是两个伪指令的范例: db 1,2,3,4,"THIS IS AN EXAMPLE" db 'THIS IS A QUOTATION MARK:"' db "THIS IS A QUOTATION MARK:'" dw 1000,2000,3000,"BACH" 范例a 命令支持所有形式的间接注册命令,如下例所示: 2

实验一 DEBUG的使用

实验一 DEBUG的使用 实验目的: 1.学习使用DEBUG程序的各种命令。 2.掌握8088/86指令系统---算数指令。 3.掌握用DEBUG调试自编程序的方法。 4.掌握8088/8086 CPU寄存器的用途和存储器组织及它们之间的关系。 5.掌握内存操作数及寻址方法。 6.掌握汇编语言伪操作:BYTE PTR,WORD PTR。 内容及步骤: 一、DEBUG 命令使用: 1、敲 DEBUG 进入 DEBUG 环境,显示提示符 '_ '。 2、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。 3、用命令 E100 30 31 32 …… 3F 将30H~3FH写入地址为100H开始的内存单元中, 再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 4、用命令 F100 10F 'A' 将'A'的ASCII码填入内存,用D命令查看结果。 5、用命令 F110 11F 41 将41H 填入内存,用D命令观察结果并比较。 6、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内 容。 7、用R命令将AX,BX内容改写为1234H及5678H。 8、用H命令检查下列各组16进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH 二、8088常用指令练习 1、传送指令 1)用A命令在内存100H处键入下列内容: MOV AX,1234 MOV BX,5678 XCHG AX,BX MOV AH,34 MOV AL,56 MOV CX,75AB XCHG AX,CX 2)用U命令检查键入的程序,特别注意左边的机器码。 3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。 2、加减法指令: 1)用A命令在内存200H处键入下列内容:

汇编语言调试DEBUG命令详解

汇编语言调试DEBUG命令详解 1、显示命令D ① D [地址] ② D [范围] 如不指定范围,一次显示8行×16个字节。 -D ;默认段寄存器为DS,当前偏移地址 -D DS:100 / -D CS:200 -D 200:100 -D 200;200为偏移地址,默认段寄存器DS -D DS:100 110/ -D 100 L 10 2.修改命令E ① E 地址;从指定地址开始,修改(或连续修改)存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。 ② E 地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。 -E DS:100 F3 ‘AB’ 8D。 3.添充命令F F 范围数据表; 将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。 -F DS:0 L5 01,02,03,04,05 -F DS:0 L5 01 02 03 04 05(空格分隔) -F DS:0 L5 FF ;5个字节重复使用FF 4.显示修改寄存器命令R R;★显示所有寄存器和标志位状态; ★显示当前CS:IP指向的指令。 显示标志时使用的符号: 标志标志=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

5.汇编命令A A [地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。 注释:①在DEBUG下编写简单程序即使用A命令。 ②每条指令后要按回车。 ③不输入指令按回车,或按Ctrl+C结束汇编。 ④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。 6.反汇编命令U ① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。 ② U 范围;对指定范围的单元进行反汇编。 -U -U100 -U100L10 7.运行程序命令G ① G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。 ② G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。 ③ G 断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。 ④G=地址断点1[,断点2,…断点10] -G ;从CS:IP指向的指令开始执行程序。 -G=100 ;从指定地址开始执行程序。 -G=100 105 110 120 8.跟踪命令(单步执行命令)T ① T;从当前IP开始执行一条指令。 ② T 数值;从当前IP开始执行多条指令。 ② T =地址; ③ T =地址数值; -T -T5 / -T=100 5 9.跟踪执行并跳过子程序命令P P [=地址] [数值];类似T命令,但跳过子程序和中断服务程序。 10.退出DEBUG命令Q Q;返回DOS环境。 -Q 11.命名命令N N 文件标示符;指定文件,以便用W命令在磁盘上生成该文件,或者用L命令从磁盘装入该文件。 -N MY_https://www.wendangku.net/doc/ed15462677.html,

常用Linux系统Debug命令

常用Linux系统Debug命令 常用Linux系统Debug命令 命令系统,是一种计算机代码控制系统。常用Linux系统Debug 命令有哪些呢?下面是相关的知识,欢迎阅读。 1、查看TCP连接状态 netstat-nat|awk'{print$6}'|sort|uniq-c|sort-rn netstat- n|awk'/^tcp/{++S[$NF]};END{for(ainS)printa,S[a]}' netstat- n|awk'/^tcp/{++state[$NF]};END{for(keyinstate)printkey,"",s tate[key]}' netstat- n|awk'/^tcp/{++arr[$NF]};END{for(kinarr)printk,"",arr[k]}' netstat-n|awk'/^tcp/{print$NF}'|sort|uniq-c|sort-rn netstat-ant|awk'{print$NF}'|grep-v'[a-z]'|sort|uniq-c netstat-nat|awk'{print$6}'|sort|uniq-c|sort-rn netstat- n|awk'/^tcp/{++S[$NF]};END{for(ainS)printa,S[a]}' netstat- n|awk'/^tcp/{++state[$NF]};END{for(keyinstate)printkey,"",s tate[key]}' netstat- n|awk'/^tcp/{++arr[$NF]};END{for(kinarr)printk,"",arr[k]}' netstat-n|awk'/^tcp/{print$NF}'|sort|uniq-c|sort-rn

实验一--掌握DEBUG-的基本命令及其功能

实验一掌握DEBUG 基本命令及其功能【上篇】查看CPU和内存,用机器指令和汇编指令编程 一.实验目的: 掌握DEBUG 的基本命令及其功能 掌握win7 win8 使用DEBUG功能 二.实验内容: 1. 预备知识:Debug的使用 (1) 什么是Debug? Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。 (2) 我们用到的Debug功能 ●用Debug的R命令查看、改变CPU寄存器的内容; ●用Debug的D命令查看内存中的内容; ●用Debug的E命令改写内存中的内容; ●用Debug的U命令将内存中的机器指令翻译成汇编指令; ●用Debug的T命令执行一条机器指令; ●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。 (3) 进入Debug Debug是在DOS方式下使用的程序。我们在进入Debug前,应先进入到DOS方式。用以下方式可以进入DOS: ①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。 ②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。 三.实验任务 1. 从网上下载Dosbox和debug.exe(文件夹中有)。 2. debug.exe放在D:根目录,然后安装,安装完成以后,点击快捷方式进入Dos界面:

3.输入mount c d:\ 接着输入c: Dosbox 5.接着,你就可以使用Debug: debug 6.备注:debug.exe放在D:根目录下,你也可以把debug.exe放在任何一个文件夹下面。 其中这个文件夹就是mount c d:所对应的。 一.(1) 使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU 中相关寄存器中内容的变化。(逐条执行,每条指令执行结果截图) 机器码汇编指令 b8 20 4e mov ax,4E20H 05 16 14 add ax,1416H bb 00 20 mov bx,2000H 01 d8 add ax,bx 89 c3 mov bx,ax

掌握DEBUG基本命令

实验课程名称微型计算机原理实验报告_实验项目名称掌握DEBUG基本命令_专业班级电子信息科学与技术101班_学生姓名____________ 学号_____ 实验成绩 指导教师签字

贵 州 大 学 实 验 报 告 纸 系 别 班 级 姓 名 学号 课 程 名 称 成 绩 评 定 教师签名 实 验 时 间 2011年 11 月 23 日 一、实验目的 (1)熟悉DEBUG 有关命令的使用方法。 (2)利用DEBUG 掌握有关指令的功能。 (3)利用DEBUG 运行简单的程序段。 二、实验内容 Ⅰ.掌握DEBUG 程序的各种命令,重点掌握U ,G ,T ,D ,E ,R 命令。 ⒈ 反汇编命令:-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U 命令的最后一条指令的下一个单元开始显示32个字节。

⒉运行命令G: ⒊追踪命令T,有两种格式: 1)逐条指令追踪:-T[=地址] 该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。 2)多条指令追踪: -T[=地址][值] 该命令从指定地址起执行n条命令后停下来,n由[值]确定。 ⒋显示内存单元内容的命令D,格式为: -D[地址]或-D[范围] 1)D命令后跟寄存器表示的地址 2)D命令后不加地址

3)D命令后加直接地址 ⒌修改内存单元内容的命令E,用给定的内容代替指定范围的单元内容: -E地址内容表 6.检查和修改寄存器内容的命令R,它有三种方式: 1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R 2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名 3)显示和修改标志位状态,命令格式为:-RF

1DEBUG命令的功能及使用

实验一DEBUG命令的功能及使用 一实验目的 掌握汇编语言基本运行环境和熟悉DEBUG调试程序的命令。包括:学习使用指令,掌握常用的指令功能和简单程序设计;掌握DEBUG调试程序的命令,熟悉程序输入、存储器和CPU寄存器及标志位的检查方法,单步、断点、连续等运行程序的调试方法。 二实验内容 DEBUG的主要命令功能与格式 1.汇编命令A 格式:A [[<段寄存器名>/<段地址>:] <段内偏移>] 上式等价于: (1)A <段寄存器名>:<段内偏移> (2)A <段地址>:<段内偏移> (3)A <段内偏移> (4)A 功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。 注:其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。 2.显示内存命令D 格式:D [<地址>/<范围>] 上式等价于: (1)D <地址> (2)D <范围> (3)D 功能:以两种形式显示指定范围的内存内容。一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以‘.’代替。 注:其中(1)以CS为段寄存器。(3)显示CS:100起始的一片内容。 3.修改内存命令E 格式:E <地址> [<单元内容表>] 上式等价于: (1)E <地址> (2)E <地址> <单元内容表>

其中<单元内容表>是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。 功能:(1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter 为止。(2)将<单元内容表>逐一写入由<地址>开始的一片单元。 4.填充内存命令F 格式:F <范围> <单元内容表> 功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。 例如:-F 5BC:200 L 10 B2,‘XYZ’,3C 5.执行命令G 格式:G [=<地址>[,<断点>]] 上式等价于: (1)G (2)G=<地址> (3)G=<地址>,<断点> 功能: 执行内存中的指令序列 注:(1)从CS:IP所指处开始执行 (2)从指定地址开始执行 (3)从指定地址开始执行,到断点自动停止。 6.内存搬家命令M 格式:M <源地址范围> <目标起始地址> 其中源及目标地址若仅输入偏移量,则隐含相对DS。 功能:把<源地址范围>中的内容顺序搬至<目标起始地址>起的一片连续单元。 例如:-M CS:100 110 600 把从CS:100起至CS:110止17个字节搬至DS:600至DS:610的一片单元。 7.结束DEBUG返回DOS命令Q 格式:Q 功能:返回DOS提示符下 8.显示修改寄存器命令R 格式:R [<寄存器名>] 上式等价于: (1)R (2)R <寄存器名> 功能:(1)显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句形式。其中对状态标志FLAG以每位的形式显示,见下表。

debug常见命令使用说明

五、DEBUG调试程序 DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。 1)DEBUG程序使用 在DOS提示符下键入命令: C>DEBUG [盘符:][路径][文件名.EXE][参数1][参数2] 这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG 进行程序调试。若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG 程序调入内存后,再由DEBUG将指定的文件名装入内存。 2)DEBUG的常用命令 (1)汇编命令A 格式:A[起始地址] 功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。若缺省起始地址,则从当前CS:100地址开始存放。A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。 (2)反汇编命令U 格式1:U[起始地址] 格式2:U[起始地址][结束地址|字节数] 功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。 格式2将指定范围的内存单元中的目标代码转换成汇编指令。 (3)显示、修改寄存器命令R 格式:R[寄存器名] 功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。 AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000 DS=3000 ES=23A0 CS=138E IP=0000 NV UP DI PL NZ NA PO NC 138E:0000 MOV AX,1234 -R AX ;输入命令 AX 0014 ;显示AX的内容 :;供修改,不修改按回车。 若对标志寄存器进行修改,输入:-RF 屏幕显示如下信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。 NV UP DI PL NZ NA PO NC 不修改按回车键。要修改需个别输入一个或多个此标志的相反值,再按回车键。R命令只能显示、修改16位寄存器。 (4)显示存储单元命令D 格式1:D[起始地址]

DEBUG的基本调试命令

实验一 DEBUG的基本调试命令 一、实验目的 1.熟悉Pentium微处理器指令系统和寻址方式 2.掌握DEBUG调试软件的基本命令、调试方法。 二、DEBUG调试软件介绍 DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。WINDOWS操作系统安装时自带有DEBUG.EXE程序,不需另外安装。 1、DEBUG程序的使用 在DOS提示符下键入命令: C:\> DEBUG [盘符:][路径][文件名.EXE][参数1][参数2] 这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG 进行程序调试。若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG 程序调入内存后,再由DEBUG将指定的文件名装入内存。 2、DEBUG的常用命令 (1)汇编命令 A 格式:A [起始地址] 或 A ;每输入完一条指令,用回车键来确认。 功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。若缺省起始地址,则从当前CS:100 (段地址:偏移地址)地址开始存放。A命令是按行进行汇编,主要是用于小段程序的汇编或对目标程序的修改,具有检查错误的功能。如有错误,用^Error提示。然后重新输入正确命令即可。 注:DEBUG的A命令中数字部分输入的默认格式是16进制。如输入10,对于计算机而言,就是10H。另外A命令不支持标识符的输入。只能用准确的段地址:偏移地址来设置跳转的位置。 (2)反汇编命令 U 格式1:U [起始地址] 格式2:U [起始地址][结束地址|字节数] 功能:格式1从指定起始地址处开始固定将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。 格式2将指定范围的内存单元中的目标代码转换成汇编指令。 (3)显示、修改寄存器命令 R 格式:R[寄存器名]或R 功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。 AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000 DS=3000 ES=23A0 CS=138E IP=0000 NV UP DI PL NZ NA PO NC 138E:0000 MOV AX,1234 -R AX ;输入命令 AX 0014 ;显示AX的内容 : ;供修改,不修改按回车。 若对标志寄存器进行修改,输入:-RF 屏幕显示如下信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。 NV UP DI PL NZ NA PO NC 不修改按回车键。要修改需个别输入一个或多个此标志的相反值,再按回车键。R命令只能显示、修改16位寄存器。

常用网络调试命令

常用网络调试命令 Windows网络命令行程序 这部分包括: 使用ipconfig/all查看配置 使用ipconfig/renew刷新配置 使用ipconfig管理DNS和DHCP类别ID 使用Ping测试连接 使用Arp解决硬件地址问题 使用nbtstat解决NetBIOS名称问题 使用netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 使用tracert跟踪网络连接 使用pathping测试路由器 使用ipconfig/all查看配置 1、测试物理网络 命令:ping192.168.0.8-t,参数-t是等待用户去中断测试 友情提示:这个是最基本,最常用的网络命令 2.查看DNS、IP、Mac等信息 A.Win98:winipcfg B.Win2000以上:Ipconfig/all 3.网络信使

命令:Net send计算机名/IP*(广播)传送内容,注意不能跨网段 命令:net stop messenger停止信使服务,也可以在面板-服务修改 命令:net start messenger开始信使服务 4.探测对方计算机名,所在的组、域及当前用户名(追捕的工作原理) 命令:ping-a IP-t,只显示NetBios名 命令:nbtstat-a IP比较全的 https://www.wendangku.net/doc/ed15462677.html,stat-a显示出你的计算机当前所开放的所有端口 命令:netstat-s-e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP和IP的统计等 6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC 地址 命令:arp-a 7.在代理服务器端 捆绑IP和MAC地址,解决局域网内盗用IP!: 命令:ARP-s192.168.10.5900-50-ff-6c-08-75

微机原理 debug指令详解

微机原理debug指令详解 一、DEBUG概述 DEBUG是在DOS状态下面供程序员使用的程序调试工具。它可以用来检查内存中任何地址中的内容以及修改特定地址中的内容。DEBUG还可以用于逐指令执行某个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件与磁盘扇区。此外,DEBUG 还可以用于读写端口中的数值。 在DEBUG状态下,所有数据都作为字节序列,可以用DEBUG把任何类型的文件读入内存中。DEBUG能够处理的数据为两种: 十六进制数和ASCⅡ码,使用两位数表示十六进制数据(0~9,A~F)。在DEBUG中涉及内存中的数据时,要指定数据所在的内存单元的地址,地址的输入格式是: [段地址]: [位移]。如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。前100H字节保留给程序段前缀使用(称PSP结构,包含程序执行的各种信息),该区域用于建立DOS与程序之间的联系。在DEBUG中,使用四位十六进制数表示地址(0~9,A~F)。 DEBUG输入数据时有两种方法: 提示方法和非提示方法。在提示方法下,输入要求输入数据的命令,后跟保存数据的地址。执行后可以看到该地址中已有的内容及一个冒号提示符。此时可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到“—”提示符。在非提示方法下,输入保持数据的内存地址以及要输入的数据。DEBUG的启动:进入DOS 状态下,键入DEBUG ?,按ENTER键,如: C:\>DEBUG ?,则屏幕显示:- 符号“-”是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。 DEBUG的退出: 在DEBUG的提示符后输入Q命令,按ENTER键,则退出DEBUG返回DOS。 DEBUG的使用: 在DEBUG的提示符后输入DEBUG命令,按ENTER键。 二、DEBUG 命令详解 ★A命令 格式:A[地址] 功能:将指令直接汇编成机器码输入到内存中。 参数说明:[地址]指定存放键入汇编语言指令的内存单元的位置。 ★C命令 格式:C[源地址范围][目的地址] 功能:比较两内存区域中的内容是否相同。若不同则按字节显示其地址和内容,若相同则不

汇编 DEBUG主要 命令 大全 最详细

DEBUG主要命令 DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1.DEBUG程序的调用 在DOS的提示符下,可键入命令: C:>DEBUG [d:][path][文件名][参数1][参数2] 其中文件名是被调试文件的名字,它必须是可执行文件(EXE),两个参数是运行被调试文件所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。 2.DEBUG的主要命令 ⑴显示内存单元内容的命令D,格式为: -D [地址] 或-D [范围] 例如,显示指定范围内存单元内容的方法为: -D 100 1FF 18E4:0100 47 06 04 02 38 01 47 06 -06 02 00 02 47 06 08 02 G...8.G.....G... 18E4:0110 02 02 3B 04 02 68 02 00 -4D 20 50 51 56 57 8B 37 ..;..h..M PQVW.7 其中左边为十六进制表示形式,右边为ASCII码表示形式,“.”表示不可显示字符。这里没有指定段地址,D命令自动显示DS段的内容。 ⑵修改内存单元内容的命令E,它有两种格式 1)用给定内容代替指定范围的单元内容,格式为: -E 地址内容表 例如:-E DS:100 F358595A8D,即用F3,58,59,5A,8D五个字节代替内存单元DS:100到DS:104的内容。 2)逐个单元相继地修改,格式为: -E 地址 例如:-E DS:100 18E4:0100 89.78 此命令是将0100单元内容89改为78。78是程序员从键盘输入的。程序员在修改完一个单元后,可按“空格”键继续修改下一单元内容,直至按“回车”键结束该命令。 ⑶检查和修改寄存器内容的命令R,它有三种方式 1)显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态 -R 该命令可显示AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,CS,IP及标志寄存器内容。

DEBUG命令

DEBUG命令详解 Debug 原意是杀虫子。这里是机器调试工具。 其实,Debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。同时,许多台大型的计算机也在不停的运行着。大概是由于,机器过热,引来许的小虫子,以至于,计算机无法正常运行。科学们,只好停下来,捉虫子...虫子捉完了,计算机运行也正常了,后来,这个名词就沿用至今了.... 虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!接下来,我们就一起学习Debug在各方面的运用吧!(在杀毒、加解密、系统...)下面我和大家一起学习一些,Debug的用法,虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好! Debug常用命令集 名称解释格式 a (Assemble) 逐行汇编 a [address] c (Compare) 比较两内存块 c range address d (Dump) 内存16进制显示 d [address]或 d [range] e (Enter) 修改内存字节 e address [list] f (fin) 预置一段内存 f range list g (Go) 执行程序g [=address][address...] h (Hexavithmetic) 制算术运算h value value i (Input) 从指定端口地址输入i pataddress l (Load) 读盘l [address [driver seetor> m (Move) 内存块传送m range address n (Name) 置文件名n filespec [filespec...] o (Output) 从指定端口地址输出o portadress byte q (Quit) 结束q

DOS的debug命令大全

DOS的提示符下,可如下键入Debug启动调试程序: DEBUG [路径\文件名] [参数1] [参数2] Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。 在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。 ?运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。 ?运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX 包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。 ?运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。Debug的命令都是一个字母,后跟一个或多个参数:字母 [参数] 命令的使用中注意: ①字母不分大小写; ②只使用16进制数,没有后缀字母; ③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符; ④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行; ⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。 许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。其中,段基地址可以是段寄存器或数值;偏移地址是数值。如果不输入段地址,则采用默认值,可以是缺省段寄存器值。如果没有提供偏移地址,则通常就是当前偏移地址。 对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址结束地址”(结束地址不能具有段地址),或者是:“开始地址 L字节长度”。

debug指令大全

一、预习内容 预习DEBUG程序的各种命令功能及使用方法。 二、实验目的 1、掌握DEBUG程序的各种命令,重点是A,R,D,E,U,T,G,N,W,Q等命令的使用。 2、掌握用DEBUG调试自编程序的方法,为以后实验打下基础。 三、实验内容 1、用命令A汇编下列指令,并判断指令正误并说明原因。 (1)ROR AX,8 (2)LEA DI,[AX] (3)MOV DS,2010 (4)PUSH AL (5)OUT 900,AL (6)MOV [BX],0 2、掌握用DEBUG编写程序的方法。 C:\MASM>DEBUG -A 136E:0100 MOV DX, 10C 136E:0103 MOV AH, 9 136E:0105 INT 21 136E:0107 MOV AX, 4C00 136E:010A INT 21 136E:010C -E10C 'Hello!$' -R CX ;文件字节数写在CX中 CX 0000 :13 -N https://www.wendangku.net/doc/ed15462677.html, ;给文件命名 -W;写入到磁盘中 Writing 00013 bytes -G Hello! C:\MASM> DEBUG https://www.wendangku.net/doc/ed15462677.html, -U -G -Q 四、问题 1、在指令MOV [BX],AX中,操作数[BX]的寻址方式是什么?在DEBUG下执行完该指令后,如何查看执行结果? 2、可否随意在DEBUG提示符“-”后不带参数发出命令G?什么情况下使用命令G时,可不用“=”给出程序的首地址?

五、预习内容 预习汇编程序的功能及汇编过程。 六、实验目的 熟悉宏汇编MASM 6.0的使用,掌握对汇编语言源文件的编辑、汇编及连接的方法。 七、实验内容 1、用编辑软件EDIT编辑源程序SAMPLE.ASM,功能是输出字符串“HELLO!”。SAMPLE.ASM程序代码如下: DATA SEGMENT STRING DB 'HELLO!',' $' DATA ENDS STACK SEGMENT 'STACK' DB 100 DUP(?) STACK ENDS CODE SEGMENT MAIN PROC FAR ASSUME DS:DATA,SS:STACK ASSUME CS:CODE START:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA DX,STRING MOV AH,9 INT 21H MOV AH,4CH INT 21H RET MAIN ENDP CODE ENDS END START 2、用MASM程序对其进行汇编,产生SAMPLE.OBJ文件。 3、用LINK程序对其进行连接,产生SAMPLE.EXE文件。 4、执行SAMPLE.EXE文件,并观察运行结果是否相符。 5、用DEBUG调试程序。 八、问题 1、汇编语言源程序、汇编程序及汇编之间的区别与联系? 程序中MOV AH,4CH 与 INT 21H 这两条语句的功能是什么?能否省略?

DEBUG的基本命令使用

实验一 DEBUG的基本命令使用 实验名称:利用DEBUG验证寻址方式 实验目的:掌握DEBUG的常用指令(R,D,E,A,U,T 指令)的使用方法,理解不同寻址方式的特点 实验内容:在DEBUG中利用A命令输入以下汇编指令,并用U命令显示,利用T 命令单步跟踪指令的执行过程,利用R或者D命令观察相关寄存器或者内存单元内容的变化(相关过程和结果要体现在实验报告上)。 (1)立即寻址 MOV AX,1 MOV BL,02H MOV BH,34H -a 13AE:0100 mov ax,1 13AE:0103 mov bl,02 13AE:0105 mov bh,34 13AE:0107 -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0100 NV UP EI PL NZ NA PO NC 13AE:0100 B80100 MOV AX,0001 -t AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0103 NV UP EI PL NZ NA PO NC 13AE:0103 B302 MOV BL,02 -t AX=0001 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0105 NV UP EI PL NZ NA PO NC 13AE:0105 B734 MOV BH,34 -t AX=0001 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0107 NV UP EI PL NZ NA PO NC 13AE:0107 0000 ADD [BX+SI],AL DS:3402=00 (2)寄存器寻址 在验证完(1)后,执行mov ax,bx -a 13AE:0107 mov ax,bx 13AE:0109 -t AX=3402 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0109 NV UP EI PL NZ NA PO NC

实验1 Debug命令使用

实验1 查看CPU和内存,用机器指令和汇编指令编程 1. 预备知识:Debug的使用 我们以后所有的实验中,都将用到Debug程序,首先学习一下它的主要用法。 (1)什么是Debug? Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。 (2) 我们用到的Debug功能。 ●用Debug的R命令查看、改变CPU寄存器的内容; ●用Debug的D命令查看内存中的内容; ●用Debug的E命令改写内存中的内容; ●用Debug的U命令将内存中的机器指令翻译成汇编指令; ●用Debug的T命令执行一条机器指令; ●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。 Debug的命令比较多,共有20多个,但这6个命令是和汇编学习密切相关的。 (3) 进入Debug。 Debug是在DOS方式下使用的程序。我们在进入Debug前,应先进入到DOS方式。用以下方式可以进入DOS。 ①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。 ②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。 下面说明在Windows中进入Debug的一种方法。 选择【开始】菜单中的【运行】命令,如图1所示,打开【运行】对话框,如图2所示,在文本框中输入“command”后,单击【确定】按钮。 图2 在文本框中输入“command”

图1 选择【运行】命令 进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变为全屏方式。然后运行Debug程序,如图3所示。 图3 运行Debug程序 (4)用R命令查看、改变CPU寄存器的内容。 我们已经知道了AX、BX、CX、DX、CS、IP这6个寄存器,现在看一下它们之中的内容,如图4所示。其他寄存器如SP、BP、SI、DI、DS、ES、SS、标志寄存器等我们先不予理会。

DEBUG指令的一些总结和调试方法

DEBUG指令的一些总结和调试方法.txt男人应该感谢20多岁陪在自己身边的女人。因为20岁是男人人生的最低谷,没钱,没事业;而20岁,却是女人一生中最灿烂的季节。只要锄头舞得好,哪有墙角挖不到? DEBUG指令的一些总结和调试方法 首先如入一下门,debug都是从这些东东来的 1。主要的命令及格式,这些命令是debug最基本的命令,如何灵活使用就看你自己的硬件知识了,不过我会举一些具体粒子的 A(Assemble):汇编语句 A[address] C(Compare):比较内存 C range address D(Dump):显示内存 D[address]或D[range] E(Enter):改变内存 E address[list] F(Fill):填充内存 F range list G(Go):执行程序 G[=address[address[address...]] H(Hexarithmetic):十六进制运算命令 H[address[drive|sector|sector]] I(Input):输入 I portaddress L(Load):装入内存 L[address[drive|sector|sector]] M(Move):传送内存 M range address N(Name):定义文件和参数 N[d:][path]filename[.ext] O(Output):输出字节 O portaddress byte P(Proceed):在下条指令前停止 P[=address][value] Q(Quit):结束DEBUG程序 Q R(Hexarithmetic):显示寄存器/标志位 R[registername] S(Search):捡索字符 S range list T(Trace):执行并显示(跟踪) T[=address][value] U(Unassemble):反汇编指令 U[address]或U[range] W(Write):把文件或数据写盘 W[address[drive|sector|sector]] 开始介绍一些具体应用,有些不光给出debug命令,还会列举其他方法 2。上次我写T40评测用的D命令,用来察看主板的生产日期或者版本与生产厂 D ffff:05 察看日起 D fe00:0e 察看版本 3。不知道bios密码怎么办? a debug法,清除bios密码 o 70 10 o 71 10 g g 重启 不过这一招太狠读了,还有 b debug法二,前提是进入系统 o70 21 o70 20 p

相关文档