有图示的用DEBUG调试程序过程示例

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用DEBUG调试程序示例

例如:编程实现两个字类型的数相加,把和存在存储单元中,并且用debug查看程序的运行结果,检查程序运行结果的正确性。

参考源程序如下:

DATA SEGMENT

NUM1 DW 1234H

NUM2 DW 5678H

SUM DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AX,NUM1

ADD AX,NUM2

MOV SUM,AX

MOV AH,4CH

INT 21H

CODE ENDS

END START

假设把源程序命名为jiafa.asm,输入源程序后,完成汇编、连接的过程,则生成了可执行文件jiafa.exe。运行此可执行文件时在屏幕上无显示结果。在debug下调试程序的步骤示例如下:

一、进入debug,同时把被调试程序调入内存。

回车后即进入了debug程序,结果如下图所示:

注意:被调试的是可执行文件,而且文件必须写全名,不能只写主文件名。

二、用u命令反汇编(输入u后回车),以便查找需要设置断点的地址。

三、设置断点运行

断点可以设置在程序中的任意一条指令的首地址处,但为了能够查看到程序的运行结果,一般把断点设置在主程序运行完并且程序退出之前,例如程序的最后两条指令是

MOV AH, 4CH

INT 21H

则把断点设置在MOV AH, 4CH处,(如果程序较长,一次反汇编没有找到上述指令,再次输入u命令后回车,直到显示上述指令为止,),对于本例,显示如下图所示的结果。

如上图示例中的指令mov ah,4ch的偏移地址是0000F,指令int 21h(debug下默认为16进制,不显示h)的偏移地址是0011,则用G命令设置断点运行时输入g0F(g是debug下的程序运行命令,后面的数字0F是刚才选定的断点地址)回车后结果如下图:

为了能够查看你的程序在内存单元中存放的数据,必须设置断点运行不能只用G命令,并且断点必须是你程序中的某条指令,一般设置在MOV AH, 4CH处。

四、查看内存单元中的数据

查看内存单元的内容用D命令,格式之一如下:

D段地址:偏移地址

查看数据段的内容则段地址处写上DS寄存器中的值,偏移地址一般写上0

查看附加段的内容则段地址处写上ES寄存器中的值,偏移地址一般写上0

例如查看数据段的值,输入D DS:0后回车,结果如下图所示:

对着源程序比较,数据段中偏移地址0000的单元中存的是源程序数据段中的第一个数1234H的低字节34H,偏移地址0001的单元中存的是源程序数据段中的第一个数1234H的高字节12H,偏移地址0002的单元中存的是源程序数据段中的第二个数5678H的低字节78H,偏移地址0003的单元中存的是源程序数据段中的第二个数5678H的高字节56H,接下来是和的低字节ACH,和的高字节68H。(debug下默认为16进制数)如果需要查看附加段的值,输入D ES:0后回车,结果分析类似数据段的情况。

五、退出DEBUG

退出DEBUG状态用Q命令,输入Q后回车,回到dos提示符状态

相关文档
最新文档