文档介绍:第4章 DEBUG调试
主讲人:×××
,可在命令提示符下计入,同时也是进行汇编语言程序设计的一种最有效的调试工具。由于DEBUG调试程序可以对单条指令或几条指令组成指令序列进行汇编、执行,并可以观察到指令执行前后在寄存器或内存中的结果,并对指令中错误的使用予以拒绝汇编,对于初学指令的读者,通过DEBUG调试程序对指令的调试,不但对指令的功能,格式,影响FLAGS寄存器的状况有个直观的了解,还可以进一步了解数据在计算机中存放的格式、使用指令时应该注意的问题乃至计算机的工作原理。
DEBUG命令格式
DEBUG调试程序的启动
DEBUG命令的格式
DEBUG调试程序的启动
在命令提示符下,可键入如下命令启动DEBUG调试程序:
DEBUG [路径\文件名] [参数1] [参数2]
[路径\文件名]是供DEBUG调试程序调试的程序名称及路径。若Debug后不带文件名,仅运行Debug程序,在需要时,再用N和L命令调入被调试程序;若命令中带有被调试程序名,则运行Debug的同时,还将指定的程序调入主存;[参数1][参数2]被调试程序所需要的参数。
“DEBUG 文件名”方式的调试方式
只启动DEBUG的调试方式
在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符此时就可用Debug来调试程序。
若启动DEBUG调试程序时,,则需要重新定位。
此时,CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段。DS=ES指向当前可用的主存段,BXCX包含被调试文件大小字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。
如上图所示,,在DEBUG调试程序提示符“-”下键入R命令,是显示当前CPU中所有寄存器的值,可见,CS:IP=0B60H:0000H(DEBUG调试程序中所有的数据均为十六进制,但不加尾标H),
SS:SP=0B4BH:0000H,,分别指向代码段和堆栈段。DS=ES=0B3BH,BXCX=000001A4H,,其它寄存器均为0,而 NV UP EI PL NZ NA PO NC 表示FLAGS寄存器的OF=0,DF=0,IF=0 ,SF=0 ,ZF=0, AF=0, PF=0 ,CF=0。
标志位的符号表示如下表所示:
标志位
代表1的符号
代表0的符号
OF
OV
NV
DF
DN
UP
IF
EI
DI
SF
NG
PL
ZF
ZR
NZ
AF
AC
NA
PF
PE
PO
CF
CY
NC
若启动DEBUG调试程序时,不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器值都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100H;状态标志都是清0状态。
如下图所示:
若启动DEBUG调试程序时,,则(BX∥CX)包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。
如下图所示:
由图可见,,在DEBUG调试程序提示符“-”下键入R命令,显示当前CPU中所有寄存器的值,除(BX∥CX)=,其余和不带被调试程序的情况相同。