Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行
如果显示为窗口模式,可以按下Alt+Enter组合键进入全屏模式
Debug基本功能:
- R命令:查看、改变CPU寄存器的内容
- D命令:查看内存中的内容
- E命令:改写内存中的内容
- U命令:将内存中的机器指令翻译成汇编指令
- T命令:执行一条机器指令
- A命令:以汇编指令的格式在内存中写入一条机器指令
R命令
查看CPU寄存器的内容【R】
修改寄存器中的值【R 寄存器】
D命令
查看内存中的内容【D 段地址:偏移地址】
指定范围查看内存中的内容【D 段地址:起始偏移地址 结尾偏移地址】
D命令输出内容可以分为三部分:
左侧为每行的内存单元起始地址
中间为128个内存单元的内容,用十六进制的格式输出
右侧为每个内存单元中的数据对应的可显示的ASCLL码字符
使用“d 段地址:偏移地址”格式的D命令,Debug会列出从指定内存单元开始的128个内存单元的内容
再使用“d 段地址:偏移地址”之后,接着使用D命令,可列出后续的内容
使用“d 段地址:起始偏移地址 结尾偏移地址”格式可指定范围来查看内存中的内容
E命令
修改内存中的内容【E 段地址:偏移地址】
一次性修改多个内存中的内容【E 段地址:偏移地址 值1 值2 ......】
值1是字符或字符串时,会自动转成ASCLL码
“E 段地址:偏移地址”格式,Debug会以提问的方式来逐个修改从此地址开始的内存单元中的内容
Debug显示10000H处的原内容11,可以在“.”后输入新内容(结束按Enter,继续修改下一个单元内容按Space)
可使用【E 段地址:偏移地址 值1 值2 ......】来一次性修改多个内存中的内容
U命令
将内存中的机器指令翻译成汇编指令【U 段地址:偏移地址】
U命令的显示输出分为三部分:
- 左侧为机器指令的地址
- 中间为机器指令
- 右侧为机器指令所对应的汇编指令
T命令
执行一条或多条指令【T】
执行的命令为CS:IP指向的指令
执行T命令后,CPU执行CS:IP指向的指令,指令执行后,Debug显示输出CPU寄存器的状态
A命令
以汇编指令的形式在内存写入机器指令【A 段地址:偏移地址】
Debug会将这些汇编指令翻译成对应的机器指令,将它们的机器码写入内存,在给出的起始地址后面直接按Enter键表示操作结束