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及标志寄存器内容。
R命令显示中标志位状态的含义如下所示:
标 志 名 | 置 位 | 复 位 |
溢出Overflow(是/否) | OV | NV |
方向Direction(减量)/增量 | DN | UP |
中断Interrupt(允许/屏蔽) | EI | DI |
符号Sign(负/正) | NG | 汇编指令汇总PL |
零Zero(是/否) | ZR | NZ |
辅助进位Auxiliary Carry(是/否) | AC | NA |
奇偶Parity(偶/奇) | PE | PO |
进位Carry(是/否) | CY | NC |
2) 显示和修改某个指定寄存器内容,格式为:
-R 寄存器名
例如: -R AX
系统响应如下:
AX F130
:
表示AX当前内容为F130,此时若不对其作修改,可按“回车”键,否则,键入修改内容。
3) 显示和修改标志寄存器内容
-RF
系统将给出响应,例如:
OV DN EI NG ZR AC PE CY-
这时若不作修改可按“回车”,否则在“-”之后键入修改值,键入顺序任意,各标志位的取值如上表所示。
运行命令G,格式为:
-G [=地址1][地址2[地址3…]]
其中,地址1指定了运行的起始地址,后面的均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容和下一条要执行的指令。
跟踪命令T,它有两种格式:
1) 逐条指令跟踪,格式为:
-T[=地址]
该命令从指定地址起执行一条指令后停下来,显示所有寄存器及标志位的内容,如未指定地址从当前的CS:IP开始执行。
2) 多条指令跟踪,格式为:
-T[=地址][值]
该命令从指定地址起执行n条指令后停下来,n由[值]确定。
汇编命令A,格式为: -A [地址]
该命令允许输入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:输入的数字均默认为十六进制数。
反汇编命令U,它有两种格式:
1) 从指定地址开始,反汇编32个字节,其格式为:
-U [地址]
2) 对指定范围内的存储单元进行反汇编,其格式为:
-U [范围]
(8) 执行命令P,格式为: -P [=地址] [指令数]
该命令将控制从 Debug 传送到要测试的程序时,该程序不间断运行,直到循环、重复字符串指令、软件中断或者完成了指定地址的子例程为止,或者直到执行了指定数量的机器指令为止。
(9) 退出DEBUG命令Q,格式为: -Q
该命令退出DEBUG程序,返回DOS。
[关于参数的几点说明:]
1、在DEBUG中的提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行;
2、命令是单个字母,命令和参数的大小写可混合输入
3、在DEBUG中输入或显示的数据都是十六进制形式;
4、命令和参数、参数和参数之间要用空格、逗号或制表符等分隔;
5、用“段值:偏移量”的形式来表示地址,也可用段寄存器来代表“段值”;
例如:1000:0,ds:10,cs:30等;
6、范围:用来表示地址范围,从哪个地址开始,到哪个地址结束。它有二种表示方式:
● 地址 地址——前者表示起始地址,要用“段值:偏移量”来表达,
后者表示终止地址,只用“偏移量”来表示;
● 地址 长度——前者表示起始地址,要用“段值:偏移量”来表达,
后者表示该区域的大小,用字母’L’开头的数值来表示
例如:100:50 100——段值为100,偏移量从50到100的内存区域,
100:50 L100——段值为100,偏移量从50开始的100个字节区域。
100:50 L100——段值为100,偏移量从50开始的100个字节区域。
7、当命令出现语法错误时,将在出错位置显示“^ Error”
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论