DEBUG主要命令
1. R 查看和修改寄存器
D 查看内存单元
E 修改内存单元
U 反汇编,将机器指令变为汇编指令
T/P 单步执行
G 连续执行程序
A 输入汇编指令
Q 退出
2.DOS 命令
cd \ 退到根目录C>下
dir 显示文件列表
cd 目录名 进到目录
cd .. 退回上级目录
e: 进到e盘
cls 清屏
type 文件的绝对路径 显示文本文件内容(type c:\hp\a.asm)
1.R命令
直接键入R 将显示CPU所有的寄存器和标志位
修改寄存器: 在R后跟寄存器名,则显示寄存器内容,在冒号后可键入新的值,即修改成功,用R命令查看
其中,IP指令寄存器的值为0100H,表示将要执行的指令在代码段的0100H单元中,该指令单元的逻辑地址应该由CS:IP构成,即0AE3:0100H
反汇编就是讲二进制的机器指令显示成汇编指令。有三部分组成:0AE3:0100表示该指令所在单元的逻辑地址,42表示该指令的机器码,INC DX作用将DX自加1
2.D命令——查看内存单元
格式: D 段地址:起始偏移地址[结尾偏移地址]
左边一列为逻辑单元。
中间部分为存储单元的内容,每行为16个字节单元,中间的小横线用于区分前8个单元和后8个单元
右边部分显示出内存单元中的ASCII码表时的字符,无法显示的用小点表示
图中第一行单元的偏移地址从0000H~000FH,第二行单元的偏移地址为0010H~001FH,下面的依次类推。
图中可看出数据段的段地址为DS,值为0AE3H,0号单元的内容为CDH,依次类推15号的单元内容为03H。第二行0010H(16号)单元内容为47H,它是大写字母G的ASCII码,在最右边显示了G,表示该单元的值47H诀兼做ASCII码
3.E命令——修改内存单元
格式:E 起始位置 修改值 修改值....
若E后面直接跟偏移地址,则修改当前数据段下偏移地址所指向单元值,还可以用E命令修改其他段的存单元的内容
E 10 修改当前数据段10H号单元内容
E ES:100 修改傅家塅100H号单元内容
4.U命令——反汇编
将汇编语言源程序经过汇编(编译)后生成的二进制的机器指令代码,用U指令变为助记符形式的汇编指令,称为反汇编。
多次键入U,可连续显示后面的程序部分。
U后跟偏移地址 则从该地址开始反汇编【U 0 从代码段0号单元开始反汇编】
特别注意:图中显示的不是用户编写的程序,因为在输入debug是为加上 用户程序名.exe。这段程序代码可能是系统代码段中的保存信息或无效的代码。
5.A命令——输入汇编指令
在debug中,用A命令可以输入汇编指令,系统自动调用将键入的汇编指令翻译成机器代码,并相继地存放在从指定地址开始的存储区中。由于debug下的数值默认为16进制,则先将10进制转为16进制
6.T/P命令——单步执行
输入完指令后,应该执行此命令。
T命令可以一条一条地执行指令。T命令还可以连续执行多条命令:T 执行次数 (- T 3 执行3次)。也可以设置开始地址和执行次数:T =开始地址 次数(-T =0100 3 从0100H开始连续执行3条指令)
P命令的作用与T命令相同,当遇到中断指令INT n和调试指令CALL时,应该使用P命令,以确保程序正常执行。(原因:INT n指令和CALL指令要转移要子程序执行,T命令进入子程序后可能无法返回,而P命令则可直接执行该指令,并将结果带回),遇到循环指令LOOP时也应该用P指令,可以使循环快速结束。
7.G命令——连续执行程序
8.Q命令——退出debug