DEBUG.docx

上传人:b****6 文档编号:3612322 上传时间:2022-11-24 格式:DOCX 页数:20 大小:26.73KB
下载 相关 举报
DEBUG.docx_第1页
第1页 / 共20页
DEBUG.docx_第2页
第2页 / 共20页
DEBUG.docx_第3页
第3页 / 共20页
DEBUG.docx_第4页
第4页 / 共20页
DEBUG.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

DEBUG.docx

《DEBUG.docx》由会员分享,可在线阅读,更多相关《DEBUG.docx(20页珍藏版)》请在冰豆网上搜索。

DEBUG.docx

DEBUG

DEBUG是DOS中的一个外部命令,从DOS1.0起就带有此命令,因此可见此命令的重要性了。

虽然此命令的功能非常强大,可以解决许多问题,可是对许多人来说,尤其是初学者来说,却非常不易掌握。

因此,现将DEBUG的命令详细介绍一番,以让大家知道它的使用。

以下命令是学习汇编语言必须掌握的命令:

A(汇编)vas黑色海岸线网络安全资讯站

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

该命令从汇编语言语句创建可执行的机器码。

所有数值都是十六进制格式,必须按一到四个字符输入这些数值。

在引用的操作代码(操作码)前指定前缀记忆码。

vas黑色海岸线网络安全资讯站

a[address]vas黑色海岸线网络安全资讯站

指定键入汇编语言指令的位置。

对address使用十六进制值,并键入不以“h”字符结尾的每个值。

如果不指定地址,a将在它上次停止处开始汇编。

使用伪指令

使用a命令提供两个常用的伪指令:

db操作码,将字节值直接汇编到内存,dw操作码,将字值直接汇编到内存。

以下是两个伪指令的范例:

db1,2,3,4,"THISISANEXAMPLE"vas黑色海岸线网络安全资讯站

db'THISISAQUOTATIONMARK:

"'vas黑色海岸线网络安全资讯站

db"THISISAQUOTATIONMARK:

'"vas黑色海岸线网络安全资讯站

dw1000,2000,3000,"BACH"vas黑色海岸线网络安全资讯站

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

addbx,34[bp+2].[si-1]vas黑色海岸线网络安全资讯站

pop[bp+di]vas黑色海岸线网络安全资讯站

push[si])

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

loopz100vas黑色海岸线网络安全资讯站

loope100vas黑色海岸线网络安全资讯站

ja200vas黑色海岸线网络安全资讯站

jnbe200

D(转储)vas黑色海岸线网络安全资讯站

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

vas黑色海岸线网络安全资讯站

d[range]vas黑色海岸线网络安全资讯站

指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。

如果不指定range,Debug程序将从以前d命令中所指定的地址范围的末尾开始显示128个字节的内容。

说明vas黑色海岸线网络安全资讯站

当使用d命令时,Debug以两个部分显示内存内容:

十六进制部分(每个字节的值都用十六进制格式表示)和ASCII码部分(每个字节的值都用ASCII码字符表示)。

每个非打印字符在显示的ASCII部分由句号(.)表示。

每个显示行显示16字节的内容,第8字节和第9字节之间有一个连字符。

每个显示行从16字节的边界上开始。

范例vas黑色海岸线网络安全资讯站

假定键入以下命令:

vas黑色海岸线网络安全资讯站

dcs:

10010fvas黑色海岸线网络安全资讯站

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

vas黑色海岸线网络安全资讯站

04BA:

0100544F4D0053415759-4552000000000000TOM.SAWYER......vas黑色海岸线网络安全资讯站

如果在没有参数的情况下键入d命令,Debug按以前范例中所描述的内容来编排显示格式。

显示的每行以比前一行的地址大16个字节(如果是显示40列的屏幕,则为8个字节)的地址开头。

vas黑色海岸线网络安全资讯站

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

vas黑色海岸线网络安全资讯站

如果键入以下命令,Debug将从CS:

100开始显示20h个字节的内容:

vas黑色海岸线网络安全资讯站

dcs:

100l20vas黑色海岸线网络安全资讯站

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

vas黑色海岸线网络安全资讯站

dcs:

100115

E(键入)

将数据输入到内存中指定的地址。

vas黑色海岸线网络安全资讯站

可以按十六进制或ASCII格式键入数据。

以前存储在指定位置的任何数据全部丢失。

eaddress[list]

参数vas黑色海岸线网络安全资讯站

addressvas黑色海岸线网络安全资讯站指定输入数据的第一个内存位置。

vas黑色海岸线网络安全资讯站

listvas黑色海岸线网络安全资讯站指定要输入到内存的连续字节中的数据。

vas黑色海岸线网络安全资讯站

使用address参数

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

此时,您可以执行下列操作之一:

替换字节值。

为此,请在当前值后键入新值。

如果您键入的值不是有效的十六进制值,或该值包含两个以上的数字,则Debug不会回显无效或额外的字符。

vas黑色海岸线网络安全资讯站进入下一个字节。

为此,请按SPACEBAR(空格键)。

要更改该字节中的值,请在当前值后键入新值。

如果按SPACEBAR(空格键)时,移动超过了8位界限,Debug程序将显示新的一行并在行首显示新地址。

vas黑色海岸线网络安全资讯站

 

返回到前一个字节。

为此,请按HYPHEN键(-)。

可以反复按HYPHEN键(-)向后移动超过多个字节。

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

vas黑色海岸线网络安全资讯站

停止执行e命令。

为此,请按ENTER键。

在任何字节位置都可以按ENTER。

vas黑色海岸线网络安全资讯站

使用list参数

如果指定list参数的值,随后的e命令将使用列表中的值替换现有的字节值。

如果发生错误,将不更改任何字节值。

List值可以是十六进制字节或字符串。

使用空格、逗号或制表符来分隔值。

必须将字符串包括在单或双引号中。

范例

假定键入以下命令:

Ecs:

100

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

04BA:

0100EB.

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

04BA:

0100EB.41_

可以用一个e命令键入连续的字节值。

在键入新值后按SPACEBAR(空格键),而不是按ENTER键。

Debug显示下一个值

在此范例中,如果按三次SPACEBAR(空格键),Debug将显示下面的值:

04BA:

0100EB.4110.00.BC._

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

04BA:

0100EB.4110.00.BC.42_

假定决定值10应该是6F。

要纠正该值,请按减号键两次以返回到地址0101(值10)。

Debug显示以下内容:

04BA:

0100EB.4110.00.BC.42-vas黑色海岸线网络安全资讯站

04BA:

010200.-vas黑色海岸线网络安全资讯站

04BA:

010110._

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

04BA:

010110.6f_

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

以下是字符串项的范例:

Eds:

100"Thisisthetextexample"

该字符串将从DS:

100开始填充24个字节

F(填充)

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

可以指定十六进制或ASCII格式表示的数据。

任何以前存储在指定位置的数据将会丢失。

vas黑色海岸线网络安全资讯站

frangelistvas黑色海岸线网络安全资讯站

参数range

指定要填充内存区域的起始和结束地址,或起始地址和长度。

参数list

指定要输入的数据。

List可以由十六进制数或引号包括起来的字符串组成。

vas黑色海岸线网络安全资讯站

使用range参数:

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

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

vas黑色海岸线网络安

 

使用list参数:

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

vas黑色海岸线网络安全资讯站

范例

假定键入以下命令:

f04ba:

100l1004245525441

作为响应,Debug使用指定的值填充从04BA:

100到04BA:

1FF的内存位置。

Debug重复这五个值直到100h个字节全部填满为止。

vas黑色海岸线网络安全资讯站G(转向)vas黑色海岸线网络安全资讯站

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

vas黑色海岸线网络安全资讯站

g[=address][breakpoints]vas黑色海岸线网络安全资讯站

参数

=address

指定当前在内存中要开始执行的程序地址。

如果不指定address,Windows2000将从CS:

IP寄存器中的当前地址开始执行程序。

breakpoints

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

vas黑色海岸线网络安全资讯站M(移动) 

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

mrangeaddressvas黑色海岸线网络安全资讯站

参数

range

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

address

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

说明

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

如果新数据没有写入正在被复制的数据块中的地址,则源数据将保持不变。

但是,如果目标块已经包含数据(就象它在覆盖副本操作中一样),则将改写该数据。

(覆盖复制操作是指那些目标数据块部分内容覆盖原数据块部分内容的操作。

)vas黑色海岸线网络安全资讯站

执行覆盖复制操作

m命令执行目标地址的覆盖复制操作,而不丢失数据。

将改写的地址内容首先复制。

因此,如果将较高位地址的数据复制到较低位地址,则复制操作从原块的最低位地址开始并向最高位地址进行。

反之,如果要将数据从低地址复制到高地址,复制操作从原块的最高地址开始,向最低地址进行。

vas黑色海岸线网络安全资讯站

范例

假定键入以下命令:

mcs:

100110cs:

500vas黑色海岸线网络安全资讯站

Debug首先将CS:

110地址中的内容复制到地址CS:

510中,然后将CS:

10F地址中的内容复制到CS:

50F中,如此操作直至将CS:

100地址中的内容复制到地址CS:

500中。

要查看结果,请使用Debugd(转储)命令,并使用m命令指定目标地址

P(执行) 

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

vas黑色海岸线网络安全资讯站

p[=address][number]vas黑色海岸线网络安全资讯站

参数

=address

指定第一个要执行指令的位置。

如果不指定地址,则默认地址是在CS:

IP寄存器中指定的当前地址。

number

指定在将控制返回给Debug之前要执行的指令数。

默认值为1。

说明vas黑色海岸线网络安全资讯站

控制传送到要测试的程序

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

控制返回到Debug。

地址参数的限制

如果address参数没有指定段,Debug将使用被测试程序的CS寄存器。

如果省略address,程序将从CS:

IP寄存器所指定的地址开始执行。

必须在address参数之前使用等号(=)以便将它与number参数区分。

如果在指定地址处的指令不是循环、重复的字符串指令、软件中断或子例程,则p命令与Debugt(跟踪)命令的作用相同。

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

vas黑色海岸线网络安全资讯站

警告:

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

范例

假定正在测试的程序在地址CS:

143F处包含一个call指令。

要运行call目标位置的子程序然后将控制返回到Debug,请键入以下命令:

p=143f

Debug按以下格式显示结果:

vas黑色海岸线网络安全资讯站

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000vas黑色海岸线网络安全资讯站

DS=2246ES=2246SS=2246CS=2246IP=1443NVUPEIPLNZACPONCvas黑色海岸线网络安全资讯站

2246:

14427505JNZ144A

Q(退出) 

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

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

vas黑色海岸线网络安全资讯站

qvas黑色海岸线网络安全资讯站

该命令不带参数。

vas黑色海岸线网络安全资讯站

有关保存文件的信息,请单击“相关主题”列表中的DebugW(写入)。

R(寄存器)vas黑色海岸线网络安全资讯站

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

vas黑色海岸线网络安全资讯站

r[register-name]vas黑色海岸线网络安全资讯站

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

register-name

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

如果指定了寄存器名称,Windows2000将显示以十六进制标记表示的寄存器的16位值,并将冒号显示为提示符。

如果要更改包含在寄存器中的值,除非键入新值并按ENTER键;否则,请按ENTER键返回Debug提示符。

有效寄存器名

以下是register-name的有效值:

ax、bx、cx、dx、sp、bp、si、di、ds、es、ss、cs、ip、pc及f。

ip和pc都引用指令指针。

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

brerror

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

如果键入f字符代替寄存器名,Debug将每个标记的当前设置显示为两字母代码,

可以按任何顺序键入新的标志值。

不需要在这些值之间留出空格。

要停止r命令,请按ENTER键。

任何没有指定新值的标志保持不变。

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

dferror

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

bferror

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

Debug的默认设置

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

范例

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

r

如果当前位置是CS:

11A,显示外观将类似于以下内容:

AX=0E00BX=00FFCX=0007DX=01FFSP=039DBP=0000SI=005CDI=0000vas黑色海岸线网络安全资讯站

DS=04BAES=04BASS=04BACS=O4BAIP=011ANVUPDINGNZACPENCvas黑色海岸线网络安全资讯站

04BA:

011ACD21INT21

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

rf

Debug按以下格式显示信息:

NVUPDINGNZACPENC-_

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

nvupdingnzacpenc-pleicy

Debug结束r命令并显示Debug提示符。

要查看更改,请键入r或rf命令。

Debug将显示以下内容:

NVUPEIPLNZACPECY-_vas黑色海岸线网络安全资讯站

按ENTER返回到Debug提示符。

U(反汇编)vas黑色海岸线网络安全资讯站

反汇编字节并显示相应的原语句,其中包括地址和字节值。

反汇编代码看起来象已汇编文件的列表。

vas黑色海岸线网络安全资讯站

u[range]vas黑色海岸线网络安全资讯站

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

range

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

有关range参数有效值的信息,请单击“相关主题”列表中的Debug。

范例 

要反汇编16(10h)字节,从地址04BA:

0100开始,请键入以下命令:

u04ba:

100l10

Debug按以下格式显示结果:

04BA:

0100206472AND[SI+72],AHvas黑色海岸线网络安全资讯站

04BA:

010369DB69vas黑色海岸线网络安全资讯站

04BA:

01047665JBE016Bvas黑色海岸线网络安全资讯站

04BA:

0106207370AND[BP+DI+70],DHvas黑色海岸线网络安全资讯站

04BA:

010965DB65vas黑色海岸线网络安全资讯站

04BA:

010A63DB63vas黑色海岸线网络安全资讯站

04BA:

010B69DB69vas黑色海岸线网络安全资讯站

04BA:

010C66DB66vas黑色海岸线网络安全资讯站

04BA:

010D69DB69vas黑色海岸线网络安全资讯站

04BA:

010E63DB63vas黑色海岸线网络安全资讯站

04BA:

010F61DB61

如果只显示从04BA:

0100到04BA:

0108特定地址的信息,请键入以下命令:

u04ba:

01000108

Debug显示以下内容:

04BA:

0100206472AND[SI+72],AHvas黑色海岸线网络安全资讯站

04BA:

010369DB69vas黑色海岸线网络安全资讯站

04BA:

01047665JBE016Bvas黑色海岸线网络安全资讯站

04BA:

0106207370AND[BP+DI+70],DH

以下命令在学习汇编语言是并不常用,在此不做要求

C(比较)vas黑色海岸线网络安全资讯站

比较内存的两个部分。

vas黑色海岸线网络安全资讯站

crangeaddressvas黑色海岸线网络安全资讯站

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

有关有效的range值的信息,请单击“相关主题”列表中的“Debug说明”。

address

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

有关有效address值的信息,请单击“相关主题”列表中的“Debug说明”。

vas黑色海岸线网络安全资讯站

说明

如果range和address内存区域相同,Debug将不显示任何内容而直接返回到Debug提示符。

如果有差异,Debug将按如下格式显示:

vas黑色海岸线网络安全资讯站

address1byte1byte2addess2

范例

以下命令具有相同效果:

c100,10f300vas黑色海岸线网络安全资讯站

c100l10300

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

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

197F:

01004DE4197F:

0300vas黑色海岸线网络安全资讯站

197F:

01016799197F:

0301vas黑色海岸线网络安全资讯站

197F:

0102A327197F:

0302vas黑色海岸线网络安全资讯站

197F:

010335F3197F:

0303vas黑色海岸线网络安全资讯站

197F:

010497BD197F:

0304vas黑色海岸线网络安全资讯站

197F:

01050435197F:

0305vas黑色海岸线网络安全资讯站

197F:

01077671197F:

0307vas黑色海岸线网络安全资讯站

197F:

0108E611197F:

0308vas黑色海岸线网络安全资讯站

197F:

0109192C197F:

0309vas黑色海岸线网络安全资讯站

197F:

010A800A197F:

030Avas黑色海岸线网络安全资讯站

197F:

010B367F197F:

030Bvas黑色海岸线网络安全资讯站

197F:

010CBE22197F:

030Cvas黑色海岸线网络安全资讯站

197F:

010D8393197F:

030Dvas黑色海岸线网络安全资讯站

197F:

010E4977197F:

030Evas黑色海岸线网络安全资讯站

197F:

010F4F8A197F:

030F

注意列表中缺少地址197F:

0106和197F:

0306。

这表明那些地址中的值是相同的。

vas黑色海岸线网络安全资讯站

H(十六进制)

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

vas黑色海岸线网络安全资讯站

hvalue1value2vas黑色海岸线网络安全资讯站

参数

value1

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

value2

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

vas黑色海岸线网络安全资讯站

说明

Debug首先将指定的两个参数相加,然后从第一个参数中减去第二个参数。

这些计算的结果显示在一行中:

先计算和,然后计算差。

vas黑色海岸线网络安全资讯站

范例

假定键入以下命令:

h19f10a

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

vas黑色海岸线网络安全资讯站

02A90095

I(输入)vas黑色海岸线网络安全资讯站

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

iport

参数

port

按地址指定输入端口。

地址可以是16位的值。

有关将字节值发送到输出端口的信息,请单击“相关主题”列表中的DebugO(输出)。

vas黑色海岸线网络安全资讯站

范例

假定键入以下命令:

i2f8

同时假定端口的字节值是42h。

Debug读取该字节,并将其值显示如下:

vas黑色海岸线网络安全资讯站

42vas黑色海岸线网络安全资讯站

L(加载)

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

要从磁盘文件加载BX:

CX寄存器中指定的字节数内容,请使用以下语法:

l[address]

要略过Windows2000文件系统并直接加载特定的扇区,请使用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1