㈠ debug命令的使用
在Windows 95/98的环境中,打开命令窗口的步骤为:点击“开始”→“运行”,输入“command”命令; 在WindowsXP及WIN7的环境中,打开命令窗口的步骤为:点击“开始”→“运行”,输入“cmd”命令;
2.启动DEBUG
在命令窗口中启动DEBUG,启动命令一般为:DEBUG [文件名] [参数表]。其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。被调试的文件可以是系统中的任何文件,但通常它们的 后缀为.EXE或.COM。 当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。DEBUG中所有命令及其含义如DEBUG各命令功能说明表 所示。 关于使用命令的几点说明:在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行命令是单个字母,命令和参数的大小写可混合输入可用F1、 F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令当命令出现语法错误时,将在出错位置显示“^ Error”可用Ctrl+C或Ctrl+Break来终止当前命令的执行,还可用Ctrl+S或Ctrl+Num Lock来暂停屏幕显示(当连续不断地显示信息时)
以下通过实现十九个示例来熟悉DEBUG的命令集和基本的汇编指令。
R命令的使用
R命令作用:观看和修改寄存器的值。
在提示符“-”下输入以下命令:R。DEBUG将会显示出当前所有寄存器和标志位的状态。
接下来再输入命令RCX。在提示符“:”后输入100。该命令的作用是将寄存器CX的值设置为100(注意:DEBUG使用的是十六进制,这里的100相当于十进制的256。)
最后再执行R命令,观看修改后的寄存器值。
H命令的使用
H命令作用:计算两个十六进制数的和与差。
在提示符“–”下输入以下命令:H 10 1。观看命令执行结果。
运行结果的前一个数是计算出来的和,后一个数是计算出来的差。计算结果均用十六进制形式表示。
㈡ 怎样用debug中的D命令查看内存啊
数字1:数字2(或者
d
数字1:数字2)来显示这个地方的东西,至于e和d表示什么,以及怎么操作,你翻一下你的汇编书的debug那一节会有。其实你这样写那
㈢ debug是什么意思啊
DEBUG是计算机排除故障的意思,DEBUG在windows系统中也是极其重要的调试操作。
debug是一个dos实用程序,主要是供程序员来进行调试程序的工具,它可以检查程序中存在的问题,可以精确到每一行代码的正确性,在程序开发中有很大的作用。
Debug的特点
Debug把所有数据都当成字节处理,因此可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以在机器码这个级别追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。
Debug在汇编语言中的应用非常广泛,Debug的命令比较多,大约20多个,和汇编密切相关的有R命令、D命令、E命令、U命令、T命令、A命令等等。
㈣ debug命令有什么作用如何使用
DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。x0dx0a一、DEBUG程序的调用x0dx0a 在DOS的提示符下,可键入命令:x0dx0a C:\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]x0dx0a 其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。x0dx0a 在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。x0dx0a二、DEBUG的主要命令x0dx0a 1、显示存储单元的命令D(DUMP),格式为:x0dx0a _D[address]或_D[range]x0dx0a 例如,按指定范围显示存储单元内容的方法为:x0dx0a -d100 120x0dx0a18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...x0dx0a18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.x0dx0a 7x0dx0a18E4:0120 8Bx0dx0a 其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。x0dx0a2、修改存储单元内容的命令有两种。x0dx0a ·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:x0dx0a -E address[list]x0dx0a例如,-E DS:100 F3'XYZƎDx0dx0a 其中F3,'X','Y','Z'和各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。x0dx0a 第二种格式则是采用逐个单元相继修改的方法。命令格式为:x0dx0a -E addressx0dx0a例如,-E DS:100x0dx0a 则可能显示为:x0dx0a 18E4:0100 89.-x0dx0a 如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如下:x0dx0a 18E4:0100 89.78 1B.-x0dx0a 这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。x0dx0a ·填写命令F(FILL),其格式为:x0dx0a -F range listx0dx0a例如:-F 4BA:0100 5 F3'XYZƎDx0dx0a 使04BA:0100~0104单元包含指定的五个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。x0dx0a3)检查和修改寄存器内容的命令R(register),它有三种格式如下:x0dx0a ·显示CPU内所有寄存器内容和标志位状态,其格式为:x0dx0a -Rx0dx0a例如,-rx0dx0a AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000x0dx0a DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NCx0dx0a 18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000x0dx0a ·显示和修改某个寄存器内容,其格式为:x0dx0a -R register namex0dx0a例如,键入x0dx0a -R AXx0dx0a 系统将响应如下:x0dx0a AX F1F4x0dx0a :x0dx0a即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:x0dx0ax0dx0a -R bxx0dx0a BX 0369x0dx0a :059Fx0dx0a则把BX寄存器的内容修改为059F。x0dx0a ·显示和修改标志位状态,命令格式为:x0dx0a -RF系统将响应,如:x0dx0a OV DN EI NG ZR AC PE CY-x0dx0a 此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:x0dx0a OV DN EI NG ZR AC PE CY-PONZDINVx0dx0a 即可,可见键入的顺序可以是任意的。x0dx0a4)运行命令G,其格式为:x0dx0a -G[=address1][address2[address3?]]x0dx0a 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。x0dx0a5)跟踪命令T(Trace),有两种格式:x0dx0a ·逐条指令跟踪x0dx0a -T [=address]x0dx0a 从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。x0dx0a ·多条指令跟踪x0dx0a -T [=address][value]x0dx0a 从指定地址起执行n条指令后停下来,n由value指定。x0dx0a6)汇编命令A(Assemble),其格式为:x0dx0a -A[address]x0dx0a 该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。x0dx0a7)反汇编命令U(Unassemble)有两种格式。x0dx0a ·从指定地址开始,反汇编32个字节,其格式为:x0dx0a -U[address]x0dx0a例如:x0dx0a -u100x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a 18E4:0112 BBO4O2 MOV BX,0204x0dx0a 18E4:0115 E80200 CALL 011Ax0dx0a 18E4:0118 CD20 INT 20x0dx0a 18E4:011A 50 PUSH AXx0dx0a 18E4:011B 51 PUSH CXx0dx0a 18E4:011C 56 PUSH SIx0dx0a 18E4:011D 57 PUSH DIx0dx0a 18E4:011E 8B37 MOV SI,[BX]x0dx0a如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。x0dx0a ·对指定范围内的存储单元进行反汇编,格式为:x0dx0a -U[range]x0dx0a例如:x0dx0a -u100 10cx0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a或x0dx0a -u100 112 x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0ax0dx0a 可见这两种格式是等效的。x0dx0a8)命名命令N(Name),其格式为:x0dx0a -N filespecs [filespecs]x0dx0a命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。filespecs的格式可以是:x0dx0a[d:][path] filename[.ext]x0dx0a例如,x0dx0a -N myprogx0dx0a -Lx0dx0a -x0dx0a可把文件myprog装入存储器。x0dx0a9)装入命令(Load),有两种功能。x0dx0a ·把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为:x0dx0a -L[address[drive sector sector]x0dx0a ·装入指定文件,其格式为:x0dx0a -L[address]x0dx0a此命令装入已在CS:5CH中格式化了文件控制块所指定的文件。如未指定地址,则装入CS:0100开始的存储区中。x0dx0a10)写命令W(Write),有两种功能。x0dx0a ·把数据写入磁盘的指定扇区。其格式为:x0dx0a -W address drive sector sectorx0dx0a ·把数据写入指定的文件中。其格式为:x0dx0a -W[address]x0dx0a此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。如未指定地址则数据从CS:0100开始。要写入文件的字节数应先放入BX和CX中。x0dx0a11)退出DEBUG命令Q(Quit),其格式为:x0dx0a -Qx0dx0a它退出DEBUG,返回DOS。本命令并无存盘功能,如需存盘应先使用W命令。
㈤ debug常用命令
以下是 Debug 命令列表:
? 显示 Debug 命令列表。
a 汇编 8086/8087/8088 记忆码。
c 比较内存的两个部分。
d 显示部分内存的内容。
e 从指定地址开始,将数据输入到内存。
f 使用指定值填充一段内存。
g 运行在内存中的可执行文件。
h 执行十六进制运算。
i 显示来自特定端口的 1 字节值。
l 将文件或磁盘扇区内容加载到内存。
m 复制内存块中的内容
/n 为 l 或 w 命令指定文件,或者指定正在测试的文件的参数。
o 向输出端口发送 1 个字节的值。
p 执行循环、重复的字符串指令、软件中断或子例程。
q 停止 Debug 会话。
r 显示或改变一个或多个寄存器。
s 在部分内存中搜索一个或多个字节值的模式。
t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 Debug 下一步要执行的指令的解码形式。
u 反汇编字节并显示相应的原语句。
w 将被测试文件写入磁盘。
xa 分配扩展内存。
xd 释放扩展内存。
xm 映射扩展内存页。
xs 显示扩展内存的状态。
㈥ debug的功能的d命令有什么具体功能
Debug:D(转储)
显示一定范围内存地址的内容。
d [range]
参数
range
指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。有关有效的 range 值的信息,请单击“相关主题”列表中的“Debug 说明”。如果不指定 range,Debug 程序将从以前 d 命令中所指定的地址范围的末尾开始显示 128 个字节的内容。
有关显示寄存器内容的信息,请单击“相关主题”列表中的 Debug R(寄存器)。
说明
当使用 d 命令时,Debug 以两个部分显示内存内容:十六进制部分(每个字节的值都用十六进制格式表示)和 ASCII 码部分(每个字节的值都用 ASCII 码字符表示)。每个非打印字符在显示的 ASCII 部分由句号 (.) 表示。每个显示行显示 16 字节的内容,第 8 字节和第 9 字节之间有一个连字符。每个显示行从 16 字节的边界上开始。
范例
假定键入以下命令:
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里的D命令具体是怎样执行的
格式:(1)D段地址:偏移地址
(2)D偏移地址
例如:
-a
1424:0100movah,4c
1424:0102int21
1424:0104
-d100
1424:0100B44CCD2100000000-0000000000000000
1424:01100000000000000000-0000000034001314
1424:01200000000000000000-0000000000000000
1424:01300000000000000000-0000000000000000
1424:01400000000000000000-0000000000000000
1424:01500000000000000000-0000000000000000
1424:01600000000000000000-0000000000000000
1424:01700000000000000000-0000000000000000
-dcs:100
1424:0100B44CCD2100000000-0000000000000000
1424:01100000000000000000-0000000034001314
1424:01200000000000000000-0000000000000000
1424:01300000000000000000-0000000000000000
1424:01400000000000000000-0000000000000000
1424:01500000000000000000-0000000000000000
1424:01600000000000000000-0000000000000000
1424:01700000000000000000-0000000000000000
-
㈧ 如何使用debug
Debug是一种程序,一种调试工具,说白了就是供程序员检查修改问题的工具。用比较正式的话说Debug是DOS,Windows都提供的实模式(也就是8086方式)程序的调试工具。其实严格来说,Debug是在DOS方式下使用的程序,我们在进入Debug前应该先进入DOS。而就目前我们用的计算机来说,进入DOS有以下两种方法:
1.重启计算机,进入DOS,此时进入的是实模式的DOS。
2.在Windows界面进入DOS,此时进入的是虚拟8086模式的DOS。
讲到这里一定有人会问,实模式和虚拟8086模式什么意思?给大家简单讲一下:
我们所说的CPU工作模式分为实模式和保护模式两种,而虚拟8086是保护模式下一种任务的运行模式,并非CPU的工作模式。大家平时用的Windows系统是运行在保护模式下的,而计算机在刚启动的时候是在实模式下运行,在启动Windows系统时进入保护模式,除非关闭系统,否则不会回到实模式。如果要一直在实模式下运行,那就得使用DOS等实模式下的操作系统。但是在Windows系统中加载的DOS程序是在虚拟8086模式下运行的。当然这里面涉及了一些DOS的相关知识,由于篇幅原因咱们在这儿就不讲了,感兴趣的可以留言评论一起交流。
好了,言归正传,回到Debug上, 这里有一点需要注意,Debug把所有数据都当成字节处理,因此可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以在机器码这个级别追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。
值得一提的是,Debug在汇编语言中的应用非常广泛,Debug的命令比较多,大约20多个,和汇编密切相关的有R命令、D命令、E命令、U命令、T命令、A命令等等,当然每个命令作用不同,比如D是查看内存内容,E是修改内存内容,T是执行一条机器指令等等,还有很多,而且都有固定的命名使用格式,这里就不一一讲了,我们今天主要是让大家知道并理解Debug的意思,关于怎么使用它学有余力的可以自行学习研究一下,好了,就到这里吧。
㈨ 请问各位命令debug是什么意思
是调试解决bug的命令。具体问题自然解决方法不同,自然输入的命令不同。maxdos中的debug是为maxdos提供的有力的侦错,跟踪程序运行,检查系统数据的工具程序,它是在字符界面下以单字符命令方式工作。要很好地使用它必须具备一定的汇编程序设计和硬件基本知识的能力,当然,它为汇编语言程序员提供了有效的调试手段,它的功能包括以下几个方面。
1.
直接输入、更改、跟踪、运行汇编程序
2.
观察操作系统的内容;
3.
查看rom
bios的内容;
4.
观察更改ram内部的设置值;
5.
以扇区或文件的方式读写软盘数据。
在debug中地址用段地址与段内地址来表示,而段地址可以明确地指出来,也可以用一个段指示器(段寄存器)来代表,用段寄存器表示时,其段地址就是此寄存器的内含值:
如:用段地址和段内地址表示foff:0100
用段寄存器和段内地址表示csf:0100←cs指向f000
下面列出了常用命令用法。
-a
地址
从指定地址开始编写小汇编程序,按两个回车键结束编辑
-u
地址
从指定地址开始反汇编32字节的机器指令,缺省地址则从上一u命令继续
-d
始址
终址
以16进制/asc字符对照方式显示指定内存范围的数据,每行显示10h个字节
-e
地址
值表
用给出的值表(空格分隔)替换指定地址开始的内存单元,例:-e
100
'v'
1f
'hello'
-n
文件名
为后续的l/w命令约定所操作的文件名
-l
地址
将n命令所指定文件的内容读入到指定内存位置。另,逻辑卷扇区直接读:-l
地址
逻卷号
起始逻扇号
扇数
-w
地址
将bx-cx个字节的内存数据写入n命令指定的文件中。另,逻辑卷扇区直接写:-w
地址
逻卷号
起始逻扇号
扇数
-r
寄存器名
显示并允许修改指定寄存器的值
-g=始址
终址
执行指定内存中的机器指令程序
-t=地址
单步执行机器指令,缺省地址则从上一t命令继续。另,继续跟踪m条指令:-t
m
读取c:卷的引导扇区,并保存到boot.1文件中,并简单分析引导程序的前面几条指令:
-l
1000
2
0
1
-n
boot.1
-r
bx
;输入0000
-r
cx
;输入0200
-w
1000
-u
1000
读取第一个硬盘上的主引导扇区,并保存到mb.1文件中,在屏幕上显示硬盘分区表数据:
-a
100
㈩ debug命令的详细用法
debug命令DEBUG命令参数详解DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。它的功能包括以下几个方面。1,直接输入,更改,跟踪,运行汇编语言源程序;2,观察操作系统的内容;3,查看ROMBIOS的内容;4,观察更改RAM内部的设置值;5,以扇区或文件的方式读写软盘数据DEBUG把所有数据都作为字节序列处理。因此它可以读任何类型的文件。DEBUG可以识别两种数据:十六进制数据和ASCⅡ码字符。它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。在DEBUG中输入数据有两种方法:提示方法和非提示方法。在用提示方法时,用户可以输入要求输入数据的命令,后跟数据所要输入的地址。然后用户就可以看到该地之中已有内容及一个冒号提示符。此时用户可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到短横(-)提示符。在运用非提示方法时,用户可以输入要输入数据的内存地址以及要输入的字节。但与使用字处理程序或正文编辑程序时不一样,在使用DEBUG时,用户不能直接移动光标到一入口点输入或修改数据,而要一次输入一个或几个字节。在使用DEBUG时可以只涉及内存中的数据,从而一般都要指定所要处理的内存地址,地址的输入格式是:[段地址]:[位移]。如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。前100H字节保留给程序段前缀使用,这一专用区域用于建立DOS与程序之间的联系。DEBUG总是用四位十六进制数表示地址。用两位数表示十六进制数据。讲到这里大家应该对DEBUG有了初步的了解,但是光知道这些可不够,接下来我来讲讲DEBUG的命令格式和命令。当输入DEBUG调用了DEBUG程序,就会出现一个短横提示符,用户就可以在这一短横后输入DEBUG程序的命令。有些DEBUG命令会显示一个内存地址并产生一个作为提示符的冒号。在这些提示符后,用户可以输入一个新值以改变所显示位置原来的值。如果用户不输入一个新值而是按下回车或CTRL+C,那么原来的值不会改变。一般用不着把地址和命令名字分开。例如,用转储命令D察看100号地址的数据,那么这个命令可以用以下任一种形势输入:D100D100D。100D,100如果输入的命令中出现了错误,DEBUG将在下一行对着错误的位置标记出来,例如:-s100d12^ErrorDEBUG的命令及功能如下:*A[地址]汇编命令功能:将指令直接汇编成机器码输入到内存中。说明:用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制,用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,改语句被汇编到CS:0100区域。例A:>DEBUG-a010008F1:0100MOVAH,0908F1:0102MOVDX,10908F1:0105INT21H;08F1:0107INT21H;debugtan.exe-u:反编译成汇编语言程码…………..-g100指定中断点Programterminatednormally:另外:我们在DEBUG下可运行一个文件.EXE如:A:\>debugtan.exe-g即可开始运行此程序,和在DOS下完全一样:*H[数值][数值]十六进制算术运算命令功能:分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。说明:替用户完成简单的十六进制数的运算。例:-h453856239B5BEF15*I[端口地址]功能:从指定的端口输入并显示(用十六进制)的一个字节。例:-i70F9;显示70端口的内容为F9I命令可由80X86的64K个端口取数据*L[地址][盘号:][逻辑扇区号][扇区数]功能:将一个文件或盘的绝对扇区装入存储器。说明:单个L命令能够装入的最大扇区数是80H,其中盘号0,1,2,3……分别代表A,B,C,……出现读盘错,显示错误信息。(1)格式1.L装入地址驱动器名起始扇区/扇区数这种方式可把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中,在此外扇区编号引用逻辑/扇区的方式。例:-L100001,将A驱的0扇区装至CS:100上-d10010f08F1:0100EB3C903C53444F53-362E323202010100.L,MSDOS6.22……(2)格式2:L装入地址这种方式可把指定文件装入内存,装入的文件可在进入DEBUG时指定亦可用N命令建立,格式为-n文件名:例1DEBUGtan.pas-L100例2DEBUG-ntan.pas-L100须知:L命令只能读取逻辑扇区,不能读取硬盘分区表L命令中所用的磁盘代码A=00,B=01,C=02……*M[地址范围][起始地址]数据传送命令功能:把地址范围内的存储器单元的内容移到起始地址的指定地址中说明:传送期间,源区和目标区可以部分重叠;传送后源区域数据保持不变。例:-e1004142434445-d10010f08F1:0100414243444562626364--M100104110-d110L1F08F1:0100414243450A2119-200101200796879FABCDE……*N[盘号:][路径][文件名][扩展名]功能:定义操作文件名。说明:可同时定义两个操作文件,并将形成的文件控制块相应的设置在内存CS:5C和CS:6C上,供以后的L和W命令操作之用。我们在运行程序侦错时,在启动DEBUG时在其后加文件程序名以及该程序的参数或运行文件,但当我们侦错一段后,可能装入其它文件来测试,这时我们可利用N命令来设置而无需退出DEBUG。例:A:\>DEBUGtan.exe-nyoug.pas当程序侦错一段时间后,若要把tan.exe装入tan1.pas则-ntanl.pas*O[端口地址][数据]输出命令功能:发送字节到指定的输出端口。例:当我们遇到开机要求输入口令时,可用如下方式取消-O7010_O7100*P[=地址][数据]进程命令功能:将一个子程序调用指令,循环指令,中断指令或一个重复字符串指令,停止在下一条指令上。说明:在执行一条子程序调用指令,循环指令,中断指令或一个重复字符串指令时,发出P命令去执行有关指令,并且返回到要执行的下一条指令。P命令和T一样选用来跟踪程序运行过程用的命令,我们可以在P命令中指定程序运行的起始地址,指令个数,如未指定则CS:IP所指定程序的地址开始一次运行一条令。P与T命令的差别在于P命令把CALL/INT当成一条指令来执行,简化了跟踪过程,P命令只运行RAM内存的命令,而T命令则可运行RAM和ROM里的程序。*Q退出命令。*R[寄存器]寄存器命令功能:一,显示单个寄存器的内容,并提供修改功能。二,显示所有寄存器内容,再加上字母标志位状态以及要执行的下一条指令。三,显示8个标志位状态,并提供修改功能。若不想改变则回车即可。例:-rbxbx0050:51-rAX=0000BX=0051CX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0003ES=0CD3SS=0CD3IP=0100NVUPEIPLNZNAOPNC0CD3:01000FDBOF若想改变标志寄存器,用-RF回车,则DEBUG会将标志内容显示出来,若想改变任一标志,只要输入该标志的名称即可。标志名称设置未设置标志名称设置未设置滋出OV(未溢出)NV(未溢出)零位ZRNZ(不等于零)方向DN(减少)UP(增加)辅助进位ACNA(无进位)中断EI(许可)DI(禁止)奇偶标志PE(偶)PO(奇)符号NG(负)PL(正)进位CYNC(清除进位)例:-RfNVUPEIPLNZNAPONC:-OVDI←输入值*S[地址范围][字符串]功能:在指定的地址范围内查找给定的字符串。说明:用来指定在地址范围内查找一个字符串,若找到则显示其地址,否则直接显示DEBUG提示符。隐含地址为DS段值。在此内存可以用(起始地址)(终止地址)或(起始地址)L(长度)的方式来表示,而字符串与数据行则可混合使用:如:02.76"BC"。例:-d100lof08F1:0100OF2A41430B314296-FFF0B98AF300B1..AC,1B-S100lof"AC"08F1:0102←表示找到,由0102开始,*T[=地址][指令条数]跟踪命令功能:逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。说明:通常采用跟踪一条指令,但用户也可以用指令条数设定一次跟踪多条指令,每执行一条指令之后,显示所有寄存器的内容和标志状态。逐条指令跟踪-T[=起始地址]从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值,如来指定地址则从当前CS:IP开始执行。A:\>DEBUG-A08F1:0100MOVDL,03H08F1:0102MOVAH,02H08F1:0104INT21H08F1:0106INT20H08F1:0108-TAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=08F1ES=08F1SS=08F1CS=08F11P=0105NVUPEIPLNZPOCY09F1:0102B402MOVAH,02若指定起始地址,则T命令会从指定的地址开始跟踪,我们还可以指定跟踪一次所运行指令的个数,用Ctrl+S暂停屏幕的显示,以便观察。-t=10010;由CS:100开始跟踪10条指令*U[起始地址]或者[地址范围]功能:将内存中的内容转换为汇编语句。说明:反汇编的字节数取决与用户的系统显示形式,以及在U命令中使用的可选项。(1)从指定地址开始编译,反汇编32个字节-U[地址]←从CS:100开始,其反汇编32个字节如果地址被省略,则从一个U命令的最后一条指令的下一条单元开始汇编32个字节。(2)对指定的存贮范围进行反汇编-u起始地址终止地址(L长度)例:-U10010908F1:0100CD20INT2008F1:0102FF9F009ACALLFA12[BX+9A00]08F1:0106F0LOCK08F1:0107FE1DCALLFAR[DI]08F1:0109F0LOCK说明:如指定了范围则整个范围全都会被反编译*W[地址][盘符:][起始扇区][扇区数]写盘命令功能:将修改过的数据写到磁盘上。说明:可以将指定内存地址开始的数据写在磁盘上,可以在没有指定参数,或指定地址参数的情况下,将调试文件写在磁盘上。在运行W时需设置文件的大小CX或BX寄存器(1)把数据写入磁盘的指定扇区-W起始地址驱动器名起始扇区扇区数(2)把数据写入指定文件中-W起始地址例A:\>DEBUG-A08f1:0100..写入程序段08F1:012A.-RCXCX:0000:2A←写入字节数,即为程序结尾地址减起始地址-ntan.com←设置文件名,需后缀为com-wWring002Abytes-qA:\>TAN←即可执行此程序*"XD"命令:释放EMS内存例:-XD0001handle0001deallocatel←释放了利用XD释放后可再分配*"XM"命令;把扩充内存上的内存页区映射到主内存区格式:XMRAM长页码主内存页码句柄例:-XM320001←把0001号句柄的第3号逻辑页区映射到2号真实页区*"XS"命令:显示当前EMS使用情况。格式-XS实用debug命令集锦1.非物理0磁道坏软盘的修复此种损坏从软盘盘面上来看并没有明显的划伤和霉变。一般可以恢复其数据,也可是软盘重新在利用。处理方法如下:ⅰ.进入debugⅱ.取一张引导区没有损坏的好磁盘,插入软驱-l100001ⅲ.插入损坏的磁盘到软驱-w100001-q注意:好盘与坏盘容量必须相同2.物理0磁道坏软盘中的数据读取对于0磁道损坏的磁盘,一般来说是应该抛弃了,当你也不妨试一试已下方法:磁化处理:用较强的磁铁在靠近坏磁盘的表面处反复移动,切不可碰到磁盘介质,以免划伤表面,然后在试试格式化。软盘换面:小心的将磁盘打开,坚磁片与金属芯片分开,方面后再按原来的方法粘在一起即可,在重新格式化。diskfix:对于diskfix想必大家都用的比较多了,里面的磁盘修复功能很好用的。能修复大多数磁盘表面错误。