0205 Debug的使用
Debug是什么
Debug是DOS系统中的著名的调试程序,也可以运行在windows系统实模式下。
使用Debug程序,可以查看CPU各种寄存器中的内容、内存的情况,并且在机器指令级跟踪程序的运行!

Debug能做什么
用R命令:查看、改变CPU寄存器的内容
用D命令:查看内存中的内容
用E命令:改变内存中的内容
用U命令:将内存中的机器指令翻译成汇编指令
用A命令:以汇编指令的格式在内存中写入机器指令
用T命令:执行机器指令
启动Debug
注意启动Dosbox需要重新进行挂载
1 | mount c: d:\xxx\masm |
而后切换Dosbox的默认Z盘到C盘
1 | c: |

用R命令:查看、改变CPU寄存器的内容
R :查看寄存器内容,注意最后一行显示的是CS:IP的指令内容

R 寄存器名:改变指定寄存器内容

注意
- 这里改变指定寄存器内容,默认为十六进制数
- r后面可以不跟空格子
用D命令:查看内存中的内容
D :列出预设地址内存处的128个字节的内容
Dosbox预设地址内存为073F

D 段地址:偏移地址 :列出内存中指定地址处的内容

D 段地址:偏移地址 结尾偏移地址 :列出内存中指定地址范围内的内容
如限制只显示前16位

用E命令:改变内存中的内容
E 段地址:偏移地址 数据1 数据2 …:直接修改内存中内容

E 段地址:偏移地址:逐个询问式修改
空格 表示 接受,并继续修改
回车 表示 结束修改

用U命令:将内存中的机器指令翻译成汇编指令
二进制数据在内存中可以看作数据,也可看作指令
已知

我们尝试将这些机器码写入一段内存当中,再使用u命令将这些数据读取为汇编指令
- e命令将数据写入指定内存

- d命令查看是否正确写入

- u 地址:将内存中的数据读取为汇编指令

用A命令:以汇编指令的格式在内存中写入机器指令
已知

我们尝试将这些汇编代码写入一段内存当中,再使用d命令将查看这些二进制数据,再使用u命令将这些二进制数据读取为汇编代码
- 实际工作中,汇编指令写到段地址为CS,偏移地址为IP的内存中,Dosbox中上述寄存器内存放地址如下图所示

- a 地址:写入汇编指令

- d 地址:查看内存中数据

- u 地址:将二进制数据读取为汇编代码

用T命令:执行机器指令
t 执行CS:IP处的指令,IP偏移地址会自动跳转至下一条指令
1 | mov ax, 0123H |
t 执行CS:IP处的指令,IP偏移地址会自动跳转至下一条指令,逐条执行

用Q命令:退出Debug
