调试程序DEBUG的使用
如带入的被调试程序扩展名是.EXE,则需要重新 定位。DS=ES指向当前最低的、可用的段地址(PSP 的首字节);CS:IP和SS:SP根据被调试程序确定, 分别指向代码段和堆栈段;BX.CX为文件长度,其它 通用寄存器和状态标志清0。
演示:DEBUG的两种启动方法
启动DEBUG2
4
调
试
程
序
DEBUG
R命令
12
调
试
程
序
DEBUG
② R 寄存器名;显示并修改指定的寄存器。 RAX ;RIP;RF等 5.汇编命令A A [地址];从指定的地址开始输入符号指令; 如省略地址,则接着上一个A命令的最后一个单元开 始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。 注释:①在DEBUG下编写简单程序即使用A命令。 ②每条指令后要按回车。 ③不输入指令按回车,或按Ctrl+C结束汇编。 ④支持所有8086符号硬指令,伪指令只支持DB、 DW,不支持各类符号名。
N命令
S命令
L命令
I命令
W命令
O命令
C命令
M命令
H命令
命令索引
8
调
试
程
序
DEBUG
§3.DEBUG命令
1.显示命令D ① D [地址] ② D [范围] ;如不指定范围,一次显示8行×16个字节。
-D ;默认段寄存器为DS,当前偏移地址 -D DS:100 /-D CS:200 -D 200:100 -D 200;200为偏移地址,默认段寄存器DS -D DS:100 110/ -D 100 L 10
E命令
10
调
试
程
序
DEBUG
3.添充命令F
F 范围 数据表; 将数据表写入指定范围的存储单元;数据个数 多,忽略多出的数据,个数少,则重复使用数据表。 -F DS:0 L5 01,02,03,04,05 -F DS:0 L5 01 02 03 04 05(空格分隔) -F DS:0 L5 FF ;5个字节重复使用FF
A命令
13
调
试
程
序
DEBUG
6.反汇编命令U ① U [地址];从指定地址开始反汇编32个字节 的机器指令;省略地址时,则接着上一个U命令的最 后一个单元开始;若第一次使用U命令省略地址,则 从当前CS:IP开始(通常是CS:100)。
② U 范围;对指定范围的单元进行反汇编。 -U -U100 -U100L10
命令格式
5
调
试
程
序
DEBUG
2.参数格式
①表示地址(逻辑地址): 段地址:偏移地址 D0400:2500 D10ac:0 Dds:04 Dcs:100 偏移地址 D2505 D100 ;DEBUG认为输入的是偏 移地址,段地址采用默认的段寄存器,不同的命 令默认不同的段寄存器,例如汇编命令默认CS, 显示数据命令默认DS。 既不送段地址,也不送偏移地址,段地址采用默 认的段寄存器,偏移地址采用当前值。 只送段地址,省略偏移地址,非法。 如DDS: 或 D0400:
L命令
20
调
试
程
序
DEBUG
13.写盘命令W ① W [地址];将指定地址开始的内存数据写 入磁盘,生成N命令指定的文件;默认的内存地址为 CS:100;写盘的字节数由BX(高位字)和CX(低位字)决 定,可执行程序写盘时,文件扩展名应指定.COM。 -N MY_ -W ② W 地址 驱动器号 扇区号 扇区数;将内存数 据写入磁盘的若干扇区(最多80H);默认的段地址 为CS。 -W DS:0 2 0 1 注释:写磁盘扇区要慎用。
c:\>path c:\windows\command;c\turbo\masm
打通以上路径后, 在DOS任何路径下都可以使用上述 命令
1调试程 Nhomakorabea序
DEBUG
调 试 程 序 DEBUG 的 使 用 DEBUG.EXE是DOS提供的用于调试可执行程 序的工具软件,是汇编语言程序设计中常用 的调试工具。在DEBUG环境下,不但可以调试 经汇编、连接后生成的可执行程序,也可以 编写简单的程序。
U命令
14
调
试
程
序
DEBUG
7.运行程序命令G ① G;从CS:IP指向的指令开始执行程序,直到 程序结束或遇到INT 3。 ② G=地址;从指定地址开始执行程序,直到程 序结束或遇到INT 3。 ③ G 断点1[,断点2,…断点10];从CS:IP指 向的指令开始执行程序,直到遇到断点。 ④G=地址 断点1[,断点2,…断点10] -G ;从CS:IP指向的指令开始执行程序。 -G=100 ;从指定地址开始执行程序。 -G=100 105 110 120
D命令
9
调
试
程
序
DEBUG
2.修改命令E ① E 地址 ;从指定地址开始,修改(或连续 修改)存储单元内容。DEBUG首先显示指定单元内容, 如要修改,可输入新数据;空格键显示下一个单元 内容并可修改,减号键显示上一个单元内容并可修 改;如不修改,可直接按空格键或减号键;回车键 结束命令。
② E 地址 数据表;从指定的地址开始用数据 表给定的数据修改存储单元。 -E DS:100 F3 ‘AB’ 8D。
N命令
19
调
试
程
序
DEBUG
12.装入命令L ① L [地址];装入N命令指定的文件,默认的内
存地址为CS:100。 -N MY_ -L ② L 地址 驱动器号 扇区号 扇区数;将某驱动 器的若干扇区(最多80H个)装入内存;0=A,1=B, 2=C……;默认的段地址为CS。 -L DS:200 2 0 1
*输入命令I I 端口地址;输入一个字节并显示。 *输出命令O
O 端口地址 字节数据;输出到指定的端口。 *传送命令M
M 范围 地址;将指定范围的内容传送到以指
定地址为起点的存储单元。
其它命令2
23
调试程序DEBUG的使用
2
调
试
程
序
DEBUG
§1.启动DEBUG程序 ①在DOS提示符下键入:DEBUG ↙(表示回车) Debug执行,屏幕显示提示符“-”,说明计算机 当前处于DEBUG的管理之下,可接受、并执行 DEBUG命令。 ②在DOS提示符下键入:DEBUG [路径\]文件名↙ DEBUG执行,并将指定文件装入内存,供调试。
G命令
15
调
试
程
序
DEBUG
注
释:
1)最多可设置10个断点。 2)断点必须设置在一条指令的首字节。 3)如设置了多个断点,程序在第一个断点停下 后,显示寄存器、标志及下一条要执行的指令,再次
输入G命令,程序继续往下执行,直到下一个断点或
程序结束。 4)程序如有错误,执行时可能造成死机。
G命令2
16
调
试
程
序
DEBUG
8.跟踪命令(单步执行命令)T ① T;从当前IP开始执行一条指令。 ② T 数值;从当前IP开始执行多条指令。 ② T =地址; ③ T =地址 数值; -T -T5 / -T=100 5 必须用分割符
T命令
17
调
试
程
序
DEBUG
9.跟踪执行并跳过子程序命令P
P [=地址] [数值];类似T命令,但跳过子程序
如不指定被调试程序,DEBUG设置所有段寄存器的
值相同,并指向最低的、可用的段地址;SP指向本 段的尾部;IP指向本段的0100H单元;其它通用寄存 器和所有状态标志清0。
启动DEBUG程序
3
调
试
程
序
DEBUG
如带入的被调试程序扩展名不是.EXE,则BX、CX 包含被调试文件长度(字节数,BX为高位),其他 同上。(带入.COM程序同此)
§2 DEBUG命令和参数的格式
1.命令格式 命令字母[参数] 字母不分大小写; 只使用16进制数,不加H; 分割符只在两个数值之间是必须的,命令和 参数之间可有可无; 键入回车键执行命令,Ctrl+Break或Ctrl+C 中止命令的执行; 如命令不符合DEBUG的规则,则提示“error” 并使用“^”指示错误位置。
W命令
21
调
试
程
序
DEBUG
14.其他命令 *比较命令C C 范围 地址;将指定范围内的内容与以指定
地址为起点的内容相比较。 *16进制数计算命令H
H 数1,数2(H 数1 数2);同时计算两个数 字的和与差。 *查找命令S
S 范围 数据;在指定范围内查找指定数据。
其他命令1
22
调
试
程
序
DEBUG
和中断服务程序。
10.退出DEBUG命令Q Q;返回DOS环境。 -Q
P、Q命令
18
调
试
程
序
DEBUG
11.命名命令N
N 文件标示符;指定文件,以便用W命令在磁盘 上生成该文件,或者用L命令从磁盘装入该文件。 -N MY_ 写盘:在当前盘当前目录生成指定文件。 读盘:在当前盘当前目录读取指定文件。 - N A:\ USER \ MY_
参数格式1
6
调
试
程
序
DEBUG
②表示范围
开始地址 如“D DS:0 结束地址 50”,“D2AC0:100 200”,“D100 120”
注意:结束地址不能带段地址 开始地址 L 字节长度 如 “D DS:0 L 10”, “D100L20”
参数格式2
7
调
试
程
序
DEBUG
命 令 索 引
D命令 U命令 E命令 G命令 F命令 T命令 R命令 P命令 A命令 Q命令