预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

DEBUG调试 DEBUG.EXE是Windows自带的用于调试可执行程序的一个工具软件,可在命令提示符下计入,同时也是进行汇编语言程序设计的一种最有效的调试工具。由于DEBUG调试程序可以对单条指令或几条指令组成指令序列进行汇编、执行,并可以观察到指令执行前后在寄存器或内存中的结果,并对指令中错误的使用予以拒绝汇编,对于初学指令的读者,通过DEBUG调试程序对指令的调试,不但对指令的功能,格式,影响FLAGS寄存器的状况有个直观的了解,还可以进一步了解数据在计算机中存放的格式、使用指令时应该注意的问题乃至计算机的工作原理。 1DEBUG命令格式 1.1DEBUG调试程序的启动 在命令提示符下,可键入如下命令启动DEBUG调试程序: DEBUG[路径\文件名][参数1][参数2] [路径\文件名]是供DEBUG调试程序调试的程序名称及路径。若Debug后不带文件名,仅运行Debug程序,在需要时,再用N和L命令调入被调试程序;若命令中带有被调试程序名,则运行Debug的同时,还将指定的程序调入主存;[参数1][参数2]被调试程序所需要的参数。 “DEBUG文件名”方式的调试方式 只启动DEBUG的调试方式 在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符,此时就可用Debug来调试程序。 若启动DEBUG调试程序时,被调试程序扩展名是.EXE,则需要重新定位。 此时,CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段。DS=ES指向当前可用的主存段,BXCX包含被调试文件大小字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。 如上图所示,被调试的程序名是XIANSHI.EXE,在DEBUG调试程序提示符“-”下键入R命令,是显示当前CPU中所有寄存器的值,可见,CS:IP=0B60H:0000H(DEBUG调试程序中所有的数据均为十六进制,但不加尾标H), SS:SP=0B4BH:0000H,是由被调试的程序XIANSHI.EXE决定的,分别指向代码段和堆栈段。DS=ES=0B3BH,BXCX=000001A4H,表示被调试的文件XIANSHI.EXE的大小是000001A4H字节,其它寄存器均为0,而NVUPEIPLNZNAPONC表示FLAGS寄存器的OF=0,DF=0,IF=0,SF=0,ZF=0,AF=0,PF=0,CF=0。Debug的命令都是一个字母,后跟一个或多个参数,即:字母[参数]。 标志位的符号表示如下表所示: 标志位代表1的符号代表0的符号OFOVNVDFDNUPIFEIDISFNGPLZFZRNZAFACNAPFPEPOCFCYNC若启动DEBUG调试程序时,不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器值都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100H;状态标志都是清0状态。 如下图所示: 若启动DEBUG调试程序时,被调试程序扩展名不是.EXE,则(BX∥CX)包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。 如下图所示: 由图可见,被调试的程序名是XIANSHI.OBJ,在DEBUG调试程序提示符“-”下键入R命令,显示当前CPU中所有寄存器的值,除(BX∥CX)=00000216H为被调试的程序XIANSHI.OBJ的大小,其余和不带被调试程序的情况相同。 1.2DEBUG命令的格式 在使用DEBUG命令时应注意: (1)字母不分大小写,如A和a; (2)只使用16进制数,没有后缀字母H或h; (3)分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符 (4)每个命令及参数输入后必须按回车键后才有效,可以用Ctrl+Break中止命令的执行; (5)命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。 (6)许多与内存单元有关的DEBUG命令的参数是内存物理地址,形式是“段地址:偏移地址”。其中。段地址可以是段寄存器名称或具体的数值;偏移地址是数值。如果不输入段地址,则采用默认值,可以是默认段寄存器值。如果没有提供偏移地址,则通常就是当前偏移地址。对内存单元操作的命令还支持地址范围这种参数,它的形式是“开始地址结束地址”(结束地址不能具有段地址),或者是“开始地址L字节长度”。 2常用DEBUG命令 2.1、显示内存单元内容命令D(DUMP) 2.2、修改命令E(Enter) 2.3、填充命令F(Fill) 2.4、寄存器命令R(Register) 2.5、汇编命令A(Asemble) 2.6、反汇编命令U(Unassemble) 2.7、运行命令G(Go) 2.8、跟踪命令T(Tr