【汇编】汇编系列三 - Debug

Debug是一个调试工具,只在32bit环境中存在。如果想要在64bit中使用,可以借助DOS系统搭建一个32bit环境。

一、 Debug

Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

进入Debug工具的方式:

  1. C:/Windows/System32/debug.exe
  2. 也可以通过Win+R,输入debug进入。
  3. 直接打开cmd,输入debug。

注意:debug里面的数值默认都是采用16进制。

Debug的常用功能:

  • R:查看、改变CPU寄存器的内容;
  • D:查看内存中的内容;
  • E:改写内存中的内容;
  • U:将内存中的机器指令翻译成汇编指令;
  • T:执行一条机器指令,类似于step into;
  • A:以汇编指令的格式在内存中写入一条机器指令;
  • Q:退出debug;
  • P:可用于跳过loop循环,类似于step over;
  • G:跳过前面的代码,停留到指定的代码位置

1.1. R命令

  • 输入r,可以查看所有寄存器的值
  • 输入r 寄存器名称,可以修改寄存器的值。比如,输入r ax,将ax寄存器的值改为0100H

1.2. D命令

  • 输入d,可以查看内存中的内容
  • 输入d 段地址:偏移地址,查看特定位置的内存数据
  • 输入d 段地址:起始偏移地址 结尾偏移地址,查看特定位置和特定范围的内存数据
  • 输入d 偏移地址d 起始偏移地址 结尾偏移地址 ,会将DS的内容作为段地址

右边是每个内存单元中的数据对应的可显示的ASCII码字符。如果没有对应的ASCII字符,就显示.

1.3. E命令

  • 输入e 段地址:偏移地址 数据串,修改特定位置的内存数据

  • 输入e 段地址:偏移地址,按Enter也可以修改特定位置的内存数据,数据之间用空格隔开

1.4. U命令

输入uu 段地址:偏移地址,可以将内存中的内容翻译为对应的汇编指令。

由3部分组成:

  • 最左边一列:是指令的地址“段地址:偏移地址”
  • 中间那一列:是指令对应的机器指令
  • 最右边一列:是汇编指令

1.5. A命令

输入a a 段地址:偏移地址,可以从某位置开始写入汇编指令。

Debug工具作为了解即可,实际研究和调试过程中建议使用emu8086(可视化)等工具。