Debug 的使用
什么是 Debug:
Debug 是 DOS、Windows 都提供的实模式(8086 方式)程序的调试工具。使用它,可以查看 CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
Debug 常用的功能:
R
命令:查看、改变 CPU 寄存器的内容。
- 使用
R
命令查看
,直接键入 R 就可以。
- 使用
R
命令来改变
寄存器中的内容。
- 比如要修改
AX
寄存器中的值,可用R
命令后加寄存器名来进行
- 输入
r ax
,后按 Enter
键。
- 出现
:
提示符,在后面输入要写入的数据后按 Enter
键,即可完成对 AX
中内容的修改。
- 修改完成后,可使用
R
命令查看。
D
命令:查看内存中的内容。
D
命令的格式较多,这里只介绍几种:
- 使用格式:
d 段地址:偏移地址
。
- 例:
d 1000:0
,就可以列出1000:0
处内容。
- Debug 程序将列出从指定内存单元开始的
128 个内存单元
的内容。
- 在使用
d 段地址:偏移地址
之后,接着使用 D
命令,可列出后续内存单元中的内容。
- 使用
D
命令查看指定范围的内容,使用 d 段地址:偏移地址 结尾偏移地址
的格式。
- 例:
d 1000:0 9
,查看的 1000:0 ~ 1000:9
中的内容。
E
命令:改写内存中的内容。
- 使用格式:
e 起始地址 数据 数据 数据 数据 ······
。
- 例:
e 1000:0 0 1 2 3 4 5 6 7 8 9
,将内存1000:0 ~ 1000:9
单元中的内容分别写为 0 1 2 3 4 5 6 7 8 9
- 可以使用段寄存器来替换 1000。
- 例:
e ds:0 0 1 2 3 4 5 6 7 8 9
.
- 使用
提问的方式
来逐个地修改从某一地址开始的内存单元中的内容。
- 以
1000:10
单元开始为例:
- 输入
e 1000:10
,按 Enter 键
- debug 显示起始地址
1000:0010
,和第一个单元的原始内容。然后光标停在 “.“
的后边提示输入想要写入的内容,此时有两个选择:
- 输入数据,然后按
空格
,即用输入的数据改写当前的内存单元;
- 不输入数据,
直接按空格键
,则不对当前内存单元进行改写。
- 当前单元处理完成后(不论是改写或没有改写,只要按了空格键,就表示处理完成),debug 将接着显示下一个内存单元的原始内容,并提示进行修改。
- 所有希望改写的内存单元改写完毕后,按 Enter 键,E 命令操作结束。
U
命令:将内存中的机器指令翻译成汇编指令(查看内存中机器码的含义)。
- 使用格式:
u 1000:0
. 可以使用段寄存器来替换 1000。
- 使用
u
命令查看从 1000:0
开始的内存单元中的机器指令和它们所对应的汇编指令。
u 1000:0
|| u ds:0
T
命令:执行一条机器指令(执行内存中的机器码)。
T
命令可以执行一条或多条指令,简单的使用 T
命令,可以执行CS:IP
指向的指令。
A
命令:以汇编指令的格式在内存中写入一条机器指令。
- 我们可以使用
E
命令写入机器指令,这样做很不方便。Debug 提供了 A
命令。
- 使用格式:
a 1000:0
.
- 用
A
命令,以汇编语言向 1000:0 开始的内存单元中写入了指令。可以使用段寄存器来替换 1000。
- 例如:
a cs:0
- 使用
A
命令写入汇编指令时,在给出的起始地址后直接按 Enter 键表示操作结束。
进入 Debug(在 Mac 上进入 debug 程序):
- 安装 DOS 模拟器。
- 在模拟器中设置 debug.exe 文件所在目录为挂载点。
- 进入 debug.exe 文件所在目录(设置挂载点)。
- 输入 debug,就可以了。
具体流程,请参考这里。
本文链接:http://www.iuutech.com/post/debug_1555895571.html
-- EOF --
作者
chic
发表于
2019-04-22 10:38:39
,添加在分类
编程语言
汇编
工具
下
,并被添加「
汇编
」标签
,最后修改于
2019-04-23 16:18:42
与其临渊羡鱼,不如退而结网。
Comments