主题:求助!!!
cowman
[专家分:0] 发布于 2007-05-31 12:22:00
那DEBUG到底怎么用呀????[em18]
回复列表 (共1个回复)
沙发
塞北江南 [专家分:1350] 发布于 2007-05-31 15:39:00
1.DEBUG命令的应用
启动DEBUG的一般命令如下:
DEBUG 文件名 [参数表]
表4.8 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)为写入字节数
其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。被调试的文件可以是系统中的任何文件,但通常它们的后缀为EXE或COM。当DEBUG启动成功后,将显示连接符“―”,这时可输入各种命令。命令功能如表4.8所示。
2.关于参数的说明:
①进制:在DEBUG中输入或显示的数据都是十六进制形式;
②分隔:命令和参数、参数和参数之间要用空格、逗号或制表符等分隔;
③地址:用“段值:偏移量”的形式来表示地址,也可用段寄存器来代表“段值”;
例如:1000:0,ds:10,cs:30等;
④范围:用来表示地址范围,从哪个地址开始,到哪个地址结束。它有两种表示方式:
•地址 地址——前者表示起始地址,要用“段值:偏移量”来表达,后者表示终止地址,只用“偏移量”来表示;
•地址 长度——前者表示起始地址,要用“段值:偏移量”来表达,后者表示该区域的大小,用字母’L’开头的数值来表示
例如:100:50 80 ;段值为100,偏移量从50到80的内存区域,
100:50 L80 ;段值为100,偏移量从50开始的80个字节区域。
⑤端口地址:二位十六进制数值
⑥字节值: 二位十六进制数值
⑦字节值表:由若干个字节值组成,也可以是用引号括起来的字符串
3.关于使用命令的说明:
①在DEBUG中的提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行
②命令是单个字母,命令和参数的大小写可混合输入
③可用F1、F2、F3、Ins、Del和光标移动键等来编辑本行命令
④当命令出现语法错误时,将在出错位置显示“^ Error”
⑤可用^C或^Break来终止当前命令的执行,还可用^S来暂停屏幕显示(当连续不断地显示信息时)
下面是具体DEBUG应用示例:
【例】启动DEBUG,并装入test.exe文件(假设该文件已存在)。
方法1: 方法2:
…\>debug test.exe …\>debug
-n test.exe
-l
【例】比较以DS为段值,偏移量从10到50的内存区域与从地址100:20开始的内存区域。
-C DS:10 50 100:20 或 -C DS:10 L41 100:20
【例】显示以DS为段值,偏移量从10到50内存区域的单元内容,然后用’ABC’来填充它。
-D DS:10 60 或 -D DS:10 L51
-F DS:10 00 'ABC'
【例】显示十六进制1234与5678之和、差。
-H 1234 5678
【例】把数据段区域DS:0-50H内的内容传送给从附加段ES:20H开始的内存中。
-M DS:0 50 ES:20
【例】在数据段区域DS:0-80内查找是否有字符串'CIH'。
-S DS:0 80 'CIH'
【例】将AX寄存器的值设置为1234H,并显示当前各寄存器的内容
-R AX ;该行为输入的命令
AX 0000 ;该行为系统显示的AX寄存器原来的值是0
:1234 ;冒号为系统的提示符,1234为当前输入的新值
-R ;输入R命令并回车,以下显示为当前各寄存器的内容
AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF5 ES=0AF5 SS=0AF5 CS=0AF5 IP=0100 NV UP EI PL NZ NA PO NC
我来回复