调试程序DEBUG.EXE

DEBUG.EXE是DOS提供的可用于调试可执行程序的一个工具软件,也是可用于汇编语言程序设计的一种调试工具。

调试程序DEBUG.EXE是版本有关的,不同版本的操作系统具有不同的文件(功能一样)。

  • 纯DOS操作系统:DOS目录的DEBUG.EXE文件;
  • Windows 9x操作系统:MS-DOS环境,使用Windows文件夹下command子文件夹的DEBUG.EXE文件
  • Windows 2000/XP操作系统:MS-DOS环境,使用WINNT文件夹下system32子文件夹的DEBUG.EXE文件

DEBUG程序的调用

在DOS的提示符下,可如下键入Debug启动调试程序:

DEBUG  [路径\文件名] [参数1] [参数2]

Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。

在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。

  • 运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。
  • 运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。
  • 运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。

DEBUG命令的格式

Debug的命令都是一个字母,后跟一个或多个参数:   字母 [参数]

命令的使用中注意:

① 字母不分大小写;
② 只使用16进制数,没有后缀字母;
③ 分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;
④ 每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;
⑤ 命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。

许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。其中,段基地址可以是段寄存器或数值;偏移地址是数值。如果不输入段地址,则采用默认值,可以是缺省段寄存器值。如果没有提供偏移地址,则通常就是当前偏移地址。

对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址 结束地址”(结束地址不能具有段地址),或者是:“开始地址 L字节长度”。

显示命令D

D(Dump)命令显示主存单元的内容,它的格式如下(注意分号后的部分用于解释命令功能,不是命令本身):

D [地址]       ;显示当前或指定开始地址的主存内容
         D [范围]       ;显示指定范围的主存内容

例如,显示当前(接着上一个D命令显示的最后一个地址)主存内容:

左边部分是主存逻辑地址,中间是连续16个字节的主存内容(16进制数,以字节为单位),右边部分是这16个字节内容的ASCII字符显示,不可显示字符用点“.”表示。一个D命令仅显示“8行×16个字节”(80列显示模式)内容。

再如:
            -d 100              ;显示数据段100h开始的主存单元
            -d cs:0              ;显示代码段的主存内容
            -d2f0 L20           ;显示ds:2f0h开始的20h个主存数据

修改命令E

E(Enter)命令用于修改主存内容,它有两种格式:

E 地址          ;格式1,修改指定地址的内容
    E 地址 数据表    ;格式2,用数据表的数据修改指定地址的内容

例如:
    -e ds:100 F3`XYZ`8D    ;用F3/`X`/`Y`/`Z`/8D这5个数据替代DS:0100 ~ 0104的原来内容

填充命令F

F(Fill)命令用于对一个主存区域填写内容,同时改写原来的内容,其格式为:

F 范围 数据表

该命令用数据表的数据写入指定范围的主存。如果数据个数超过指定的范围,则忽略多出的项;如果数据个数小于指定的范围,则重复使用这些数据,直到填满指定范围。

寄存器命令R

R(Register)命令用于显示和修改处理器的寄存器,它有三种格式。

R       ;格式1,显示所有寄存器内容和标志位状态

R 寄存器名    ;格式2,显示和修改指定寄存器

例如,键入“r ax”,Debug给出当前AX内容,冒号后用于输入新数据,如不修改则按Enter键。

RF        ;格式3,显示和修改标志位

Debug将显示当前各个标志位的状态。显示的符号及其状态如表F1.1所示,用户只要输入这些符号就可以修改对应的标志状态,键入的顺序可以任意。

汇编命令A

汇编命令A(Assemble)用于将输入的汇编指令汇编成为机器代码保存于主存。

A [地址]    ;从指定地址开始汇编指令

A命令中如果没有指定地址,则接着上一个A命令的最后一个单元开始;若还没有使用过A命令,则从当前CS : IP开始。

输入A命令后,就可以输入8086指令,Debug将它们汇编成机器代码,相继地存放在指定地址开始的存储区中,记住最后要输入一个回车结束A命令。进行汇编的步骤如下:

① 输入汇编命令A [地址],按回车。Debug提示地址,等待你输入新指令;
② 输入汇编指令,按回车;
③ 如上继续输入汇编指令,直到输入所有指令;
④ 不输入内容就按回车,结束汇编,返回Debug的提示符状态。

A命令支持标准的8086(和8087浮点)指令系统以及汇编语言语句格式,但要注意以下一些规则:

• 所有输入的数值都是16进制数;
• 段超越指令需要在相应指令前,单独一行输入;
• 段间(远)返回的助记符要使用RETF;
• A命令也支持最常用的两个伪指令DB和DW。

反汇编命令U

反汇编命令U(Unassemble)将主存内容按照机器代码形成汇编指令显示:

U [地址]    ;从指定地址开始,反汇编32个字节(80列显示模式)

U 范围    ;对指定范围的主存内容进行反汇编

U命令中如果没有指定地址,则接着上一个U命令的最后一个单元开始;若还没有使用过U命令,则从当前CS : IP开始。

屏幕显示的左边是主存逻辑地址,中间是该指令的机器代码,而右边则是对应的指令汇编格式。

运行命令G

运行命令G(Go)从指定地址处开始运行程序,直到遇到断点或者程序正常结束。

G [=地址] [断点地址1,断点地址2,...,断点地址10]

G命令等号后的地址指定程序段运行的起始地址,如不指定则从当前的CS : IP开始运行。断点地址如果只有偏移地址,则默认是代码段CS;断点可以没有,但最多只能有10个。

程序遇到断点(实际上就是断点中断指令INT 3),停止执行,并显示当前所有寄存器和标志位的内容、以及下一条将要执行的指令(显示内容同R命令),以便观察程序运行到此的情况。程序正常结束,将显示“Program terminated normally”。

注意,G命令以及后面的T和P命令要指向正确的指令代码,否则会出现不可预测的结果,例如“死机”。

跟踪命令T

跟踪命令T(Trace),也称为单步命令,每执行一条指令就显示运行结果,使程序员可以细致地观察程序的执行情况。

T [=地址]           ;逐条指令跟踪

T [=地址] [数值]    ;多条指令跟踪

从指定地址起执行一条或数值参数指定条数的指令后停下来,每条指令执行后都要显示所有寄存器和标志位的值以及下一条指令。如未指定地址则从当前的CS : IP开始执行。注意给出的执行地址前有一个等号,否则会被认为是被跟踪指令的条数(数值)。

T命令逐条指令执行程序,遇到子程序(CALL)或中断调用(INT n)指令也不例外,也会进入到子程序或中断服务程序当中执行。

继续命令P

继续命令P(Proceed)类似T命令,逐条执行指令、显示结果。但是当遇到子程序调用、中断功能调用和循环指令等时,不在子程序、中断服务程序或循环体中单步执行,而是直接执行完成子程序、中断服务程序或循环体,然后显示结果。

当不需要调试子程序、中断服务程序或循环程序段时,要应用P命令,而不是T命令。

P [=地址] [数值]

退出命令Q

退出命令Q(Quit)使Debug程序退出,返回DOS。Q命令并无存盘功能,可使用W命令存盘。
    Q

关于Debug.exe相关推荐

  1. 在Linux里使用dosbox运行debug.exe

    安装dosbox,运行 mount d /home/kw/desktop d: debug.exe # 运行debug.exe

  2. 汇编学习的安装DOSBOX及debug.exe教程

    相信有很多小伙伴跟我一样,在学习汇编时却发现win7 64位系统下是无法使用debug.exe的,因为win7 x64没有debug.exe这个文件,因此需要安装DOSBOX. 需要下载地址的可到我的 ...

  3. 汇编学习 安装DOSBOX及debug.exe教程

    相信有很多小伙伴跟我一样,在学习汇编时却发现win7 64位系统下是无法使用debug.exe的,因为win7 x64没有debug.exe这个文件,因此需要安装DOSBOX. 需要下载地址的可到我的 ...

  4. 汇编语言学-debug环境配置(dos模拟器+debug.exe)

    汇编语言学-debug环境配置(dos模拟器+debug.exe) 下载DOSBox模拟器以及debug.exe. 按照各自要求安装(主要安装目录最好不要有空格,不然后面挂载会不成功). 打开模拟器安 ...

  5. win10安装配置debug.exe和DOSBox

    Title: win10安装配置DOSBox和debug.exe Reference: https://blog.csdn.net/plus_re/article/details/60761467 1 ...

  6. 调试程序DEBUG.EXE

    调试程序DEBUG.EXE DEBUG.EXE是DOS提供的可用于调试可执行程序的一个工具软件,也是可用于汇编语言程序设计的一种调试工具. 调试程序DEBUG.EXE是版本有关的,不同版本的操作系统具 ...

  7. MASM + DOSBox——debug.exe错误[Extended Error 2]解决方案

    问题描述 在编译.链接,生成可执行文件后,运行没有出错.而在debug时,出现"Extended Error 2"错误. 如下所示. 问题分析 1.未成功编译和链接. 2.当前目录 ...

  8. proteus出现Can‘t load “C:WINDOWS/TEMP/VSM Studio…/8086/Debug/Debug.exe“问题的解决办法

    问题界面如下 解决方法如下(仅供参考) 1.右键打开工程设置 2.选择8086,点击确定 3.重新构建工程,左下角显示编译成功 4.点击编译成功下方的运行仿真即可 (参考图如下) 红色代表高电平,蓝色 ...

  9. win10环境下 运行debug程序

    百度网盘:链接:https://pan.baidu.com/s/1y6omgW6fI-gT3Dp-0hutOg    提取码:iw4l CSDN0积分下载:https://download.csdn. ...

最新文章

  1. Codeforces 468C/469E 易错点
  2. Eclipse 安装 SVN 插件的两种方法
  3. Clickhouse Engine kafka 将kafka数据同步clickhouse
  4. Linux shell控制台改变显示前缀
  5. 你见过哪些堪称绝妙的数学证明?
  6. linux centos7 r安装,如何在CentOS 7上安装R
  7. PHP图片验证码制作(上)
  8. matlab complex
  9. Java定时任务,定时执行某个操作
  10. Qt编写1024游戏
  11. HP EliteDesk 880 G2 TWR无法从U盘启用
  12. 锤子android 7,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统
  13. 个人逾期,失信黑名单
  14. mezzanine 历险记
  15. win7家庭版开机登录画面多了一个管理员的账户名
  16. 日本警方称地震造成3676人死亡7843人下落不明
  17. 别傻了!不能只会给别人开热点,要尝试华为手机的WiFi分享功能
  18. 全要素网格化综合治理平台
  19. HDU1273-漫步森林
  20. oracle怎么条件强制走索引,如何让oracle的select强制走索引

热门文章

  1. pytorch卷积神经网络_知识干货-动手学深度学习(pytorch)-06 卷积神经网络基础
  2. 基于node的登入例子(node-koa-mongoose)
  3. python 基础(二)
  4. [工具类]文件或文件夹xx已存在,则重命名为xx(n)(2)
  5. HTML5 文档定义Doctype
  6. android游戏开发框架libgdx的使用(十五)—TWL布局
  7. POJ 2425 A Chess Game(有向图SG函数)题解
  8. SharePoint 2013 文档库中PPT转换PDF
  9. 进程环境之命令行参数
  10. 支持位移操作的环形字符串