1.介绍
Debug
程序是DOS、Windows都提供的实模式(8086方式)程序的调试工具,使用该工具可以完成:
- 查看CPU中寄存器的内容;
- 查看内存的情况;
- 在机器码级别跟踪程序的运行;
注:64位的操作系统(win7、win10)不带Debug程序,请使用虚拟机安装DOS系统(参考:【VMware12 中安装MS-DOS 7.10】)。
2.进入Debug程序
在DOS系统中直接输入debug
即可进入:
3.使用
Debug的命令比较多,共有20多个,常用的有7个,先作以概述,然后分别讲解。
3.1. 常用命令总结
命令(不区分大小写) | 功能 |
---|---|
R | 查看、改变CPU寄存器的内容 |
D | 查看内存中的内容 |
E | 改写内存中的内容 |
U | 将内存中的机器指令翻译成汇编指令 |
T | 执行一条机器指令 |
A | 以汇编指令的格式在内存中写入一条机器指令 |
3.2. 用R命令查看CPU寄存器的内容
3.3. 用R命令改变CPU寄存器的内容
使用R <寄存器名称>
来修改寄存器中的内容,出现:
时输入要修改的数据,回车
完成修改。
3.4. 用D命令查看内存中的内容
D命令中可以直接使用地址查看内存内容,也可以使用段寄存器查看内存内容。
- 查看指定地址的数据(默认显示128个内存单元):
d <段地址>:<偏移地址>
- 查看指定区间的数据:
d <段地址>:<起始偏移地址> <结束偏移地址>
- 查看指定地址的内容后,可以使用
d
接着查看
- 查看DS段寄存器指示的内容:
- 根据CS查看当前代码段所指示的指令:
- 根据SS查看当前栈中的内容:
3.5. 用E命令改写内存中的内容
- 整体修改
- 单个修改
- 逐个修改
- 字符串修改
- 写入机器码
mov ax,0001 ;b80100
mov cx,0002 ;b90200
add ax,cx ;01c8
3.6. 用U命令将机器码翻译为汇编指令
3.7. 用T命令执行指令
3.8. 用A命令写入汇编指令
看看反汇编的效果:
最后再来执行以下看看效果: