DOS和Debug常用命令

转自:http://wenku.baidu.com/view/93aaf5758e9951e79b8927d8.html

DOS常用命令

1.3.1、目录操作类命令:

1.3.1.1MD——建立子目录

1.功能:创建新的子目录

2.类型:内部命令

3.格式:MD[盘符:][路径名]〈子目录名〉

4.使用说明:

1)“盘符”:指定要建立子目录的磁盘驱动器字母,若省略,则为当前驱动器;

2)“路径名”:要建立的子目录的上级目录名,若缺省则建在当前目录下。

例:(1)在C盘的根目录下创建名为FOX的子目录;(2)在FOX子目录下再创建USER子目录。

C\MD FOX (在当前驱动器C盘下创建子目录FOX

C\MD FOX \ USER (在FOX 子目录下再创建USER子目录)

1.3.1.2CD——改变当前目录

1.功能:改变当前目录

2.类型:内部命令

3.格式:CD[盘符:][路径名][子目录名]

4.使用说明:

1)如果省略路径和子目录名则显示当前目录;

2)如采用“CD\”格式,则退回到根目录;

3)如采用“CD..”格式则退回到上一级目录。

例:(1)进入到USER子目录;

2)从USER子目录退回到子目录;

3)返回到根目录。

C:\CD FOX \USER(进入FOX子目录下的USER子目录)

C\FOX\USERCD.. (退回上一级根目录)

C\FOXCD\ (返回到根目录)

C\

1.3.1.3RD——删除子目录命令

1.功能:从指定的磁盘删除了目录。

2.类型:内部命令

3.格式:RD[盘符:][路径名][子目录名]

4.使用说明:

1)子目录在删除前必须是空的,也就是说需要先进入该子目录,使用DEL(删除文件的命令)将其子目录下的文件删空,然后再退回到上一级目录,用RD命令删除该目录本身;

2)不能删除根目录和当前目录。

例:要求把CFOX子目录下的USER子目录删除,操作如下:

第一步:先将USER子目录下的文件删空;

C\DEL C\FOX\USER\*.*

第二步,删除USER子目录。

C\RD C:\FOX\USER

1.3.1.4DIR——显示磁盘目录命令

1.功能:显示磁盘目录的内容。

2.类型:内部命令

3.格式:DIR [盘符][路径][/P][/W]

4.使用说明:

1/P的使用:当欲查看的目录太多,无法在一屏显示完屏幕会一直往上卷,不容易看清,加上/P参数后,屏幕上会分面一次显示23行的文件信息,然后暂停,并提示:Press any key to continue

2/W的使用:加上/W只显示文件名,至于文件大小及建立的日期和时间则都省略。加上参数后,每行可以显示五个文件名。

1.3.1.5PATH——路径设置命令

1.功能:设置可执行文件的搜索路径,只对文件有效。

2.类型:内部命令

3.格式:PATH[盘符1]目录[路径名1]{[;盘符2],〈目录路径名2〉…}

4.使用说明:

1)当运行一个可执行文件时,DOS会先在当前目录中搜索该文件,若找到则运行之;若找不到该文件,则根据PATH命令所设置的路径,顺序逐条地到目录中搜索该文件;

2PATH命令中的路径,若有两条以上,各路径之间以一个分号“;”隔开;

3PATH命令有三种使用方法:

PATH[盘符1][路径1][盘符2][路径2]…(设定可执行文件的搜索路径)

PATH:(取消所有路径)

PATH:(显示目前所设的路径)

1.3.1.6TREE——显示磁盘目录结构命令

1.功能:显示指定驱动器上所有目录路径和这些目录下的所有文件名。

2.类型:外部命令

3.格式:TREE[盘符:][/F][PRN]

4.使用说明:

1)使用/F参数时显示所有目录及目录下的所有文件,省略时,只显示目录,不显示目录下的文件;

2)选用>PRN参数时,则把所列目录及目录中的文件名打印输出。

1.3.1.7DELTREE——删除整个目录命令

1.功能:将整个目录及其下属子目录和文件删除。

2.类型:外部命令

3.格式:DELTREE[盘符:]〈路径名〉

4.使用说明:该命令可以一步就将目录及其下的所有文件、子目录、更下层的子目录一并删除,而且不管文件的属性为隐藏、系统或只读,只要该文件位于删除的目录之下,DELTREE都一视同仁,照删不误。使用时务必小心!!!   

1.3.2、磁盘操作类命令

1.3.2.1format——磁盘格式化命令

1.功能:对磁盘进行格式化,划分磁道和扇区;同时检查出整个磁盘上有无带缺陷的磁道,对坏道加注标记;建立目录区和文件分配表,使磁盘作好接收DOS的准备。

2.类型:外部命令

3.格式:formAT〈盘符:〉[/S][/4][/Q]

4.使用说明:

1)命令后的盘符不可缺省,若对硬盘进行格式化,则会如下列提示:

WARNINGALL  DATA  ON  NON——REMOVABLE DISK

DRIVE CWILL BE LOST !

Proceed with format (Y/N) ?

(警告:所有数据在C盘上,将会丢失,确实要继续格式化吗?)

2)若是对软盘进行格式化,则会如下提示:Insert mew diskette for drive Aand press ENTER when ready

(在A驱中插入新盘,准备好后按回车键)。

3)选用[/S]参数,将把DOS系统文件IO.SYSMSDOS.SYSCOMMAND.COM复制到磁盘上,使该磁盘可以做为DOS启动盘。若不选用/S参数,则格式化后的磁盘只能读写信息,而不能做为启动盘;

4)选用[/4]参数,在1.2MB的高密度软驱中格式化360KB的低密度盘;

5)选用[/Q]参数,快速格式化,这个参数并不会重新划分磁盘的磁道和扇区,只能将磁盘根目录、文件分配表以及引导扇区清成空白,因此,格式化的速度较快。

6)选用[/U]参数,表示无条件格式化,即破坏原来磁盘上所有数据。不加/U,则为安全格式化,这时先建立一个镜象文件保存原来的FAT表和根目录,必要时可用UNFORMAT恢复原来的数据。

1.3.2.2DISKCOPY——整盘复制命令

1.功能:复制格式和内容完全相同的软盘。

2.类型:外部命令

3.格式:DISKCOPY[盘符1][盘符2]

4.使用说明:

1)如果目标软盘没有格式化,则复制时系统自动选进行格式化。

2)如果目标软盘上原有文件,则复制后将全部丢失。

3)如果是单驱动器复制,系统会提示适时更换源盘和目标盘,请操作时注意分清源盘和目标盘。

1.3.3、文件操作类命令

1.3.3.1 COPY文件复制命令

1.功能:拷贝一个或多个文件到指定盘上。

2.类型:内部命令

3.格式:COPY [源盘][路径]〈源文件名〉[目标盘][路径][目标文件名]

4.使用说明:

1COPY是文件对文件的方式复制数据,复制前目标盘必须已经格式化;

2)复制过程中,目标盘上相同文件名称的旧文件会被源文件取代;

3)复制文件时,必须先确定目标般有足够的空间,否则会出现;insufficient的错误信息,提示磁盘空间不够;

4)文件名中允许使用通配符“*”“?”,可同时复制多个文件;

5COPY命令中源文件名必须指出,不可以省略。

6)复制时,目标文件名可以与源文件名相同,称作“同名拷贝”此时目标文件名可以省略;

7)复制时,目标文件名也可以与源文件名不相同,称作“异名拷贝”,此时,目标文件名不能省略;

8)复制时,还可以将几个文件合并为一个文件,称为“合并拷贝”,格式如下:COPY[源盘][路径]〈源文件名1〉〈源文件名2〉…[目标盘][路径]〈目标文件名〉;

9)利用COPY命令,还可以从键盘上输入数据建立文件,格式如下:COPY CON [盘符:][路径]〈文件名〉;

10)注意:COPY命令的使用格式,源文件名与目标文件名之间必须有空格!

1.3.3.2TYPE——显示文件内容命令

1.功能:显示ASCII码文件的内容。

2.类型:内部命令。

3.格式:TYPE[盘符:][路径]〈文件名〉

4.使用说明:

1)显示由ASCII码组成的文本文件,对。EXE.COM等为扩展名的文件,其显示的内容是无法阅读的,没有实际意义;

2)该命令一次只可以显示一个文件的内容,不能使用通配符;

3)如果文件有扩展名,则必须将扩展名写上;

4)当文件较长,一屏显示不下时,可以按以下格式显示;TYPE[盘符:][路径]〈文件名〉|MOREMORE为分屏显示命令,使用些参数后当满屏时会暂停,按任意键会继续显示。

5)若需将文件内容打印出来,可用如下格式:

TYPE[盘符:][路径]〈文件名〉,>PRN

此时,打印机应处于联机状态。

1.3.3.3 REN——文件改名命令

1.功能:更改文件名称

2.类型:内部命令

3.格式:REN[盘符:][路径]〈旧文件名〉〈新文件名〉

4.使用说明:

1)新文件名前可以不加上盘符和路径,因为该命令只能对同一盘上的文件更换文件名;

2)允许使用通配符更改一组文件名或扩展名。

1.3.3.4 DEL——删除文件命令

1.功能:删除指定的文件。

2.类型:内部命令

3.格式:DEL[盘符:][路径]〈文件名〉[/P]

4.使用说明:

1)选用/P参数,系统在删除前询问是否真要删除该文件,若不使用这个参数,则自动删除;

2)该命令不能删除属性为隐含或只读的文件;

3)在文件名称中可以使用通配符;

4)若要删除磁盘上的所有文件(DEL*·*DEL·),则会提示:(Areyou sure?)(你确定吗?)若回答Y,则进行删除,回答N,则取消此次删除作业。

 

1.3.4、其它命令

1.3.4.1CLS——清屏幕命令

       1.功能:清除屏幕上的所有显示,光标置于屏幕左上角。

       2.类型:内部命令

       3.格式:CLS

1.3.4.2 VER查看系统版本号命令

       1.功能:显示当前系统版本号

       2.类型:内部命令

       3.格式:VER

1.3.4.3 DATA日期设置命令

       1.功能:设置或显示系统日期。

       2.类型:内部命令

       3.格式:DATE[mm——dd——yy]

       4.使用说明:

      1)省略[mm——dd——yy]显示系统日期并提示输入新的日期,不修改则可直接按回车键,[mm——dd——yy]为“月月——日日——年年”格式;

      2)当机器开始启动时,有自动处理文件(AUTOEXEC.BAT)被执行,则系统不提示输入系统日期。否则,提示输入新日期和时间。

1.3.4.4 TIME系统时钟设置命令

       1.功能:设置或显示系统时期。

       2.类型:内部命令

       3.格式:TIME[hhmmssxx]

       4.使用说明:

      1)省略[hhmmssxx],显示系统时间并提示输入新的时间,不修改则可直接按回车键,[hhmmssxx]为“小时:分钟:秒:百分之几秒”格式;

      2)当机器开始启动时,有自动处理文件(AUTOEXEC.BAT)被执行,则系统不提示输入系统日期。否则,提示输入新日期和时间。

1.3.4.5MEM查看当前内存状况命令

       1.功能:显示当前内存使用的情况

       2.类型:外部命令

       3.格式:MEM[/C][/F][/M][/P]

       4.使用说明:

      1)选用/C参数列出装入常规内存和CMB的各文件的长度,同时也显示内存空间的使用状况和最大的可用空间;

     2)选用/F参数分别列出当前常规内存剩余的字节大小和UMB可用的区域及大小; 

     3)选用/M参数显示该模块使用内存的地址、大小及模块性质;

     4)选用/P参数指定当输出超过一屏时,暂停供用户查看。

1.3.4.6 MSD显示系统信息命令

       1.功能:显示系统的硬件和操作系统的状况。

       2.类型:外部命令

       3.格式:MSD[/I][/B][/S]

       4.使用说明:

     1)选用/I参数时,不检测硬件;

     2)选用/B参数时,以黑白方式启动MSD

     3)选用/S参数时,显示出简明的系统报告。

 

DEBUG

DEBUG是专门为汇编语言设计的一种调试工具,它通过步进、设置断点等方式为汇编程序员提供了非常有效的调试手段,DEBUG程序可跟踪运行程序的踪迹,还可直接与磁盘文件或指定的扇区对话。所有的DEBUG命令为单一字母,其后可跟一个或多个参数,参数间用分界符号(逗号或分号)隔开(DEBUG对字母的大小写不敏感);每个命令以回车键作为结束符;所使用的地址的格式为:段基址:偏移量,其中段地址可用CSDSSSES表示,也可用十六进制表示;命令参数中的数据和机器显示的数据均为十六进制(数据后不再以H结尾)。

 

进入DEBUG后出现提示符“—”后可使用DEBUG命令。DEBUG中常用的命令有:

   
    

     

 

格式

意义

斜体

用户必须提供的信息

粗体

用户必须严格按照其显示键入的元素

省略号 (...)

可在命令行中重复多次的参数

在括号 ([]) 之间

可选项目

用户必须从中只选择一个选项的选项组

Courier 字体

在大括号 ({})     之间;将选项用管线     ( | ) 隔开。例如:{even|odd}

代码或程序输出

                            

1.4.1Debuga (assemble)

直接将 8086/8087/8088 助记键合并到内存。在没有参数的情况下使用,a 命令会从它最后停止的位置开始汇编。

语法

a [Address]

参数

Address

指定键入汇编语言助记键的位置。对Address 使用十六进制值,并键入不以h 字符结尾的每个值。

示例

a 子命令支持所有形式的间接注册命令。例如:

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

pop [bp+di]

push [si]

 

a 子命令还支持所有操作码同义词。例如:

loopz 100

loope 100

ja 200

jnbe 200

 

1.4.2Debugc (compare)

比较内存的两个部分。

语法

c range address

参数

Range

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

Address

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

示例

要比较从100h 10Fh 的内存块与从 300h 30Fh 的内存块,可键入:

c100,10f 300   c100l10 300 (注意10010中间是小写L

这两个命令都会产生下列输出结果(假定 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 0A197F: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 4F8A 197F:030F

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

 

1.4.3Debugd (dump)

显示一定范围内存地址的内容。使用不带参数的d 可用从前一个d 子命令中指定的地址范围的末尾开始,显示 128 个字节的内容。

语法

d [Range]

参数

Range

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

示例

键入:

dcs:100 10f

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

 

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

 

如果键入不带参数的d 子命令,Debug.exe 将按上面示例中的格式来格式化显示内容。“命令提示符”窗口中的每一行都起始于比前一行地址大 16 个字节(如果是 40 列的屏幕,则为 8 个字节)的地址。对于后面键入的每个不带参数的d 子命令,Debug.exe 将紧接在最后显示的命令后立即显示字节内容。

要显示从 CS:100 开始的 20h 字节的内容,请键入:

dcs:100 l 20     (注意10020中间是小写L

要显示 CS 段中从 100h 115h 行范围内的所有字节的内容,请键入:

dcs:100,115

 

1.4.4Debuge (enter)

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

语法

eAddress [List]

参数

Address

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

List

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

示例

键入:

ecs:100

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

04BA:0100 EB._

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

 

04BA:0100 EB.41_

 

可以通过一个e 子命令键入连续的字节值。在键入新值后按空格键,而不是按 EnterDebug.exe 将显示下一个值。在此示例中,如果按三次空格键,Debug.exe 将显示下面的值:

 

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

 

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

 

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

 

要将值 10 更改为 6F,请按两次 Hyphen 键以返回到地址 0101(值 10)。Debug.exe 显示如下信息:

 

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 textexample"

 

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

 

1.4.5Debugf (fill)

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

语法

f Range List

参数

Range

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

List

必需。指定要输入的数据。

示例

要使用 5 个特定值(例如,4245525441)填充从 04BA:100 04BA:1FF 的内存位置,Debug.exe 重复这 5 个值直到 100h 个字节全部填满为止,请键入:

f04ba:100l100 42 45 52 54 41(注意100100中间是小写L

 

1.4.6Debugg (go)

运行当前在内存中的程序。如果在没有参数的情况下使用,则 g 命令将在 CS:IP 寄存器的当前地址处开始运行。

语法

g [=Address] [BreakPoints]

参数

Address

对于当前在内存中的程序,指定它开始运行的地址。

BreakPoints

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

示例

要运行当前内存中的程序,并要执行到 CS 段中的断点地址 7550 为止,请键入:

gcs:7550

Debug.exe 将显示寄存器的内容和标志的状态,然后终止g 子命令。

要设置两个断点,请键入:

gcs:7550, cs:8000

如果在 Debug.exe 遇到某个断点之后再次键入 g 子命令,将从该断点之后的指令开始执行,而不是在开始地址处执行。

 

1.4.7Debugh (hexadecimal)

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

语法

h Value1Value2

参数

Value1

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

Value2

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

示例

键入:

h19f 10a

Debug.exe 执行计算并显示以下结果:

02A9 0095

 

1.4.8Debugi (input)

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

语法

iPort

参数

Port

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

   示例

键入:

i2f8

如果端口的字节值为 42hDebug.exe 会读取该字节并按下述形式显示其值:

42

 

1.4.9Debugl (load)

将某个文件或特定磁盘扇区的内容加载到内存。在不带参数的情况下使用,l 子命令会将您在 debug 命令行上指定的文件从地址 CS:100 开始加载到内存中。

Debug.exe 同时将 BXCX寄存器设置为加载的字节数。如果未在 debug 命令行上指定文件,将加载最近使用 n(名称)子命令指定的文件。

语法

l [Address]

l [Address] [Drive] [FirstSector] [Number]

参数

Address

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

Drive

指定包含读取指定扇区的磁盘的驱动器。该值是数值型的:0 = A1 = B2 = C 等等。

FirstSector

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

Number

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

示例

在命令提示符下,键入:

debug

键入:

nfile.com

要加载 File.com 文件,请键入:

l

Debug.exe 加载该文件并显示 debug 提示符。

要从驱动器 C 将起始逻辑扇区为 15 (0Fh) 109 (6Dh)个扇区的内容加载到起始地址为 04BA:0100的内存中,请键入:

l04ba:100 2 0f 6d   (第一个字符是小写L

 

1.4.10Debugm (move)

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

语法

mRangeAddress

参数

Range

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

Address

必需。指定要将 Range 内容复制到的位置的起始地址。

示例

要将 CS:110 地址中的内容复制到地址 CS:510 中,然后将 CS:10F 地址中的内容复制到 CS:50F 中,如此操作直至将 CS:100 地址中的所有内容复制到地址 CS:500 中,请键入:

mcs:100 110 cs:500

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

 

1.4.11Debugn (name)

debugl (load) w (write) 子命令指定可执行文件的名称,或者针对要调试的可执行文件指定参数。如果在没有参数的情况下使用,则n 会清除当前规范。

语法

n [Path][Executable]

n [FileParameters]

参数

[Path][Executable]

指定要测试的可执行文件的位置和名称。

[FileParameters]

为正在测试的可执行文件指定参数和命令行选项。

示例

本示例中,将运行 debug 并加载用于调试的程序 Prog . com。要为 Prog.com 指定两个参数,然后运行该程序,请键入:

debug prog.com

nparam1 param2

g

在这种情况下,g(转向)子命令会运行该程序,就如同在命令提示符下键入了如下命令一样:

prog param1 param2

测试和调试操作反映了 Prog . com 通常的运行时环境。

在下面的命令序列中,第一个 n 子命令指定 File1.exe 将用于其后的 l(load) 子命令,该命令会将File1.exe 加载到内存。第二个 n 子命令指定了 File1.exe 将要使用的参数。最后,g(转向)子命令将运行File1.exe 文件,就如同在命令提示符下键入了 File1

File2.dat File2.dat 一样。

nfile1.exe

l

nfile2.dat file3.dat

g

不要在n 子命令的第二个实例后使用 l 子命令。如果在n 子命令的第二个实例后使用了w(写入)子命令,将会使用 File2.dat 的文件名保存 File1.exe(即要调试的文件)。为避免出现此结果,应该总是在l w 子命令之前使用 n 子命令的第一种形式。

 

1.4.12Debugo (output)

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

语法

o PortByteValue

参数

Port

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

ByteValue

必需。指定要发送到 Port 的字节值。

示例

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

o2f8 4f

 

1.4.13Debugp (proceed)

执行循环、重复字符串指令、软件中断或子例程。或者,通过其他指令进行跟踪。如果在不含参数的情况下使用,则 p 列出寄存器和它们当前的值。

语法

p [=Address] [Number]

参数

Address

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

Number

指定将控制返回给 Debug.exe 之前要运行的指令数。默认值为 1

示例

该示例中,要测试的程序在地址 CS:143F 处包含一个 call 命令指令。要运行由call 命令调用的子例程,然后将控制返还给

Debug.exe,请键入:

p=143f

Debug.exe 按以下格式显示结果:

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

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

2246:1442 7505 JNZ 144A

 

1.4.14Debugq (quit)

无需保存当前测试的文件即可停止 Debug.exe 会话,并返回到命令提示符。

语法

q

1.4.15Debugr (register)

显示或改变一个或多个 CPU 寄存器的内容。如果在不含参数的情况下使用,则r 命令在当前位置显示所有寄存器的内容和寄存器存储区的标志、所有标志的状态以及指令的解码形式。

语法

r [Register]

参数

Register

指定包含要显示信息的寄存器名称。

示例

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

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

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

04BA:011A CD21 INT 21

如果只希望查看标志状态,请键入:

rf

Debug.exe 按以下格式显示信息:

NV UP DI NG NZ AC PE NC - _

按任意顺序键入一个或多个有效的标志值,而且可以带或不带空格。例如:

nv up di ng nz ac pe nc -pleicy

Debug.exe 终止r 子命令并显示 Debug 提示符。要查看所作的更改,请键入 r rfDebug.exe 显示如下信息:

NV UP EI PL NZ AC PE CY - _

Enter 返回 Debug 提示符。

 

1.4.16Debugs (search)

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

语法

sRangeList

参数

Range

必需。指定要搜索范围的起始地址和结束地址。

List

必需。指定要搜索的一个或多个字节值,或者字符串的模式。

示例

要在从 CS:100 CS:110 的范围中查找包含值 41 的所有地址,请键入:

scs:100 110 41

Debug.exe 按以下格式显示结果:

04BA:0104

04BA:010D-

要在从 CS:100 CS:1A0 的范围内搜索字符串“Ph”,请键入:

scs:100 1a0 "Ph"

 

1.4.17Debugt (trace)

执行一条指令,并显示所有寄存器内容、所有标志的状态以及所执行指令的解码形式。如果在不含参数的情况下使用,t 命令会开始跟踪由程序的 CS:IP 寄存器指定的地址。

语法

t [=Address] [Number]

参数

Address

指定 Debug.exe 开始跟踪指令时所用的地址。

Number

指定要跟踪的指令数。该值必须是十六进制数。默认值为 1

示例

如果程序中的指令位于 04BA:011A,则 Debug.exe 显示下列信息:

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

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

04BA:011A CD21 INT 21

 

1.4.18Debug:uunassemble

反汇编字节并显示相应的原语句,其中包括地址和字节值。反汇编代码看起来像已汇编文件的列表。如果在没有参数的情况下使用,则u 子命令分解 20h 字节(默认值),从前面的u 子命令所显示地址后的第一个地址开始。

语法

u [Range]

参数

Range

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

示例

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

u04ba:100l10    (注意10010之间是小写L

Debug.exe 按以下格式显示结果:

 

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.exe 显示如下信息:

 

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

 

1.4.19Debugw (write)

将文件或特定扇区写入磁盘。不带参数的w 将从 CS:100 开始写入。

语法

w [Address]

w [Address] [Drive] [FirstSector] [Number]

参数

Address

指定要写入磁盘文件的文件或部分文件的起始内存地址。

Drive

指定包含目标磁盘的驱动器。该值是数值型的:0 = A1 = B2 = C 等等。

FirstSector

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

Number

指定要写入的扇区数。

示例

要将起始地址为 CS:100 的内存内容写入驱动器 B 的磁盘中,并收集从磁盘的逻辑扇区号 37h 开始并持续 2Bh 个扇区的数据,请键入:

wcs:100 1 37 2b

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值