启动DEBUG的一般命令如下:
DEBUG 文件名 [参数表]
其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。
被调试的文件可以是系统中的任何文件,但通常它们的后缀为EXE或COM。当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种命令。
表1 DEBUG中标志位的符号表示
标志名称 | 溢出OF | 方向DF | 中断IF | 负号SF | 零ZF | 辅助进位AF | 奇偶PF | 进位CF |
置位状态 | OV | DN | EI | NG | ZR | AC | PE | CY |
复位状态 | NV | UP | DI | PL | NZ | NA | PO | NC |
表2 DEBUG命令及其含义
命令格式 | 功能说明 |
A [地址] | 输入汇编指令 |
C [范围] 起始地址 | 对由“范围”指定的区域与“起始地址”指定的同大小区域进行比较,显示不相同的单元 |
D [范围] | 显示指定范围内的内存单元内容 |
E 地址 字节值表 | 用值表中的值替换从“地址”开始的内存单元内容 |
F 范围 字节值表 | 用指定的字节值表来填充内存区域 |
G [=起始地址] [断点地址] | 从起点(或当前地点)开始执行,到终点结束 |
H 数值1 数值2 | 显示二个十六进制数值之和、差 |
I 端口地址 | 从端口输入 |
L [地址 [驱动器号 扇区 扇区数]] | 从磁盘读 |
M 范围 地址 | 把“范围”内的字节值传送到从“地址”开始的单元 |
N 文件标识符 [文件标识符…] | 指定文件名,为读/写文件做准备 |
O 端口地址 字节值 | 向端口输出 |
P [=地址] [指令数] | 按执行过程,但不进入子程序调用或软中断 |
Q | 退出DEBUG,不保存正在调试的文件 |
R [寄存器名] | 显示和修改寄存器内容 |
S 范围 字节值表 | 在内存区域内搜索指定的字节值表。如果找到,显示起始地址,否则,什么也不显示 |
T [=地址] [指令数] | 跟踪执行,从起点(或当前地点)执行若干条指令 |
U [范围] | 反汇编,显示机器码所对应的汇编指令 |
W [地址 [驱动器号 扇区 扇区数]] | 向磁盘写内容,(BX、CX)为写入字节数 |
关于参数的几点说明:
1、进制:在DEBUG中输入或显示的数据都是十六进制形式; |
2、分隔:命令和参数、参数和参数之间要用空格、逗号或制表符等分隔; |
3、地址:用“段值:偏移量”的形式来表示地址,也可用段寄存器来代表“段值”;例如:1000:0,ds:10,cs:30等; |
4、范围:用来表示地址范围,从哪个地址开始,到哪个地址结束。它有二种表示方式: |
地址 地址——前者表示起始地址,要用“段值:偏移量”来表达,后者表示终止地址,只用“偏移量”来表示; |
地址 长度——前者表示起始地址,要用“段值:偏移量”来表达,后者表示该区域的大小,用字母’L’开头的数值来表示 例如:100:50 100——段值为100,偏移量从50到100的内存区域, |
5、端口地址:二位十六进制数值 |
6、字节值:二位十六进制数值 |
7、字节值表:由若干个字节值组成,也可以是用引号括起来的字符串 |
8、驱动器号:0—驱动器A、1—驱动器B、2—驱动器C、3—驱动器D等 |
关于使用命令的几点说明:
在DEBUG中的提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行 | |
命令是单个字母,命令和参数的大小写可混合输入 | |
可用F1、F2、F3、Ins、Del和光标移动键等来编辑本行命令 | |
当命令出现语法错误时,将在出错位置显示“^ Error” | |
可用^C或^Break来终止当前命令的执行,还可用^S来暂停屏幕显示(当连续不断地显示信息时) |
例2.1 启动DEBUG,并装入test.exe文件(假设该文件已存在)。
解: | 方法1: | 方法2: |
…/>debug test.exe | …/>debug | |
-n test.exe | ||
-l |
例2.2 比较以DS为段值,偏移量从10到50的内存区域与从地址100:20开始的内存区域。
解:-C DS:10 50 100:20 或 -C DS:10 L41 100:20
例2.3 显示以DS为段值,偏移量从10到50内存区域的单元内容,然后用’abc’来填充它。
解:-D DS:10 50 或 -D DS:10 L41
-F DS:10 50 'abc'
例2.4 显示十六进制1234与3421之和、差。
解:-H 1234 4321
例2.5 把数据段区域DS:0-40内的内容传送给从附加段ES:10开始的内存中。
解:-M DS:0 40 ES:10
例2.6 在数据段区域DS:0-40内查找是否有字符串'CIH'。
解:-S DS:0 40 'CIH'