调试程序工具DEBUG.doc_第1页
调试程序工具DEBUG.doc_第2页
调试程序工具DEBUG.doc_第3页
调试程序工具DEBUG.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

调试程序工具DEBUGDebug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它可以检查和改变存储内容,调试和运行程序,还可以随时中断程序的运行,进行数据检查和修改。1. Debug的进入和退出Debug是在DOS方式下使用的程序。我们在进入Debug前,应先进入到DOS方式。用以下方法可以进入DOS。u 重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。u 在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。下面是在Windows XP中进入Debug的一种方法,在其它Windows版本中类似。选【开始】菜单中的【运行】命令,打开【运行】对话框,在文本框中输入“command”后,单击【确定】按钮。本章中的例子默认Debug程序在驱动器C中,如果你的系统设置与此假设不同,请变更驱动器或目录。在DOS目录下键入DEBUG的名称,就可以进入DEBUG程序。键入“DEBUG”不分大小写。DEBUG提示符是“-”,此时,你就可以输入DEBUG的命令了。退出命令Q,输入Q并按Enter回车键就退出DEBUG运行环境返回到DOS目录下。2. 寄存器内容的检查和修改可以通过寄存器命令对CPU内部的寄存器内容进行检查,并可以修改寄存器的内容。指令格式:R 指令尖括号内容是指令可选部分,如果没有输入,使用R指令将显示所有寄存器的内容;否则将只显示输入名称的寄存器的内容。输入R命令并按回车键,DEBUG将显示三行信息。第一行显示了通用寄存器、指针寄存器和索引寄存器的内容。第二行显示了段寄存器的内容、指令指针的当前值以及标志寄存器位。第二行后面的几个代码“NV UP NC”表示标志寄存器中的8位状态。标志寄存器在DEBUG中的表示方式在后面加以说明。第三行显示了程序将要执行的指令,显示了通过CS:IP发出的指令。在刚开始进入DEBUG时,通用寄存器的初始值会设为零,标志位全部复位。虽然段寄存器在不同的系统中具有不同的内容,但是同一个系统中各个段寄存器的值都是一样的,这一点是由操作系统决定。本例中段寄存器的值是17FE。由于段寄存器的值是操作系统默认的,所以千万不要改变它。修改寄存器内容,如图在R指令后输入AX寄存器,下一行显示AX寄存器的内容是“0000”,第三行出现冒号,在这里输入新的值后按回车键AX寄存器被新的值取代,直接按回车键寄存器的内容不变。使用R指令不能单独调用通用寄存器的高8位和低8位寄存器,例如:-r ah 或 r al是错误的。3. 对DEBUG中的程序进行编码及运行A命令用于将汇编语言命令输入到存储器中。命令格式:A 起始地址可以用偏移量来表示,在这种情况下它默认为代码段的偏移量;否则,就需要指定具体的段寄存器。输入“A 100”和“A CS:100”得到的结果是一样的。在命令提示符“-”后面输入此命令时,DEBUG就会提示你开始进入汇编语言命令输入,在地址提示符下直接按回车将结束指令输入。在DEBUG环境下输入汇编语言指令操作数采用立即寻址方式时默认的是十六进制形式。当你输入指令到偏移地址为0100的存储单元中,DEBUG将这条指令转换为机器语言,并放在0100到0102之间,然后提示你输入下一条指令,这条指令就会被存储到偏移地址0103的存储单元中。注意:不要从低于100偏移地址单元开始汇编。开始的100H(256)字节是DOS预留的,不能用于你编写的程序。U 反汇编指令反汇编指令显示出存储器中的机器代码以及相应的汇编语言指令。指令格式:U U 反汇编是将存储在存储器中的机器代码转换成汇编语言指令。“-U 100 10B”是第一种格式,“-U 100 LB”是第二种格式,其中“L”表示长度,“B”是字节数。反汇编显示出“17FE:0100”是代码段段地址和指令的偏移地址,“B80100”是“MOV AX,0001”的机器指令。如果输入U命令后面不带地址直接回车,DEBUG将显示从CS:IP开始的32个字节。连续输入将继续显示。执行命令执行命令请求DEBUG执行给出地址范围之间的所有指令。指令格式:G 如果没有给出地址,DEBUG就从CS:IP开始执行指令直到到达终止点。当只给出指令“-G”,从当前指令指针(CS:IP)指定的指令开始执行直到遇到“INT 3”终止程序指令,屏幕显示当前寄存器的值和标志位的状态。指令“-G=100 109”是从起始偏移地址为0100处开始执行直到偏移地址是0109处停止,显示当前各个寄存器的值和标志位的状态。跟踪命令用跟踪命令可以在程序的执行过程中同时跟踪一条或多条指令,对寄存器和数据程序功能进行效验。指令格式:T 这条指令从起始地址开始执行指令,如果没有给出指令数,默认的指令数为1。如果没有给出起始地址,跟踪命令同执行命令一样从CS:IP开始执行。跟踪指令执行每一条指令都会显示指令执行后各个寄存器的值和标志位的状态,并显示下一条将要执行的指令代码。显示存储单元的命令D命令用于检查存储器的内容。命令格式:D D 运用D命令可以显示从起始地址到结束地址存储器中的全部字节内容。也可以采用第二种形式显示从起始地址开始的指定字节长度的存储内容。“-D CS:100 010B”是采用的第一种格式,显示起始地址“CS:100”开始到“010B”存储字节的内容。“D 100 L0C”是采用第二种格式,显示从起始地址从“100”开始的长度为“0C”个字节的内容。如上图在地址后面显示了16个字节的数据以及它们所代表的内容。如果有的字节包含ASCII码字符,那么该字符将会被显示出来。如果字节的内容不是ASCII码,这个字节将不被显示,并以“.”表示出来。将数据输入存储器指令E 命令将数据项填充到存储器中。命令格式:E E 指令“-E 200 Hello John”输入起始地址和数据,起始地址为DS:200内存字节存储Hello John的ASCII码。第二种格式没有数据列表,DEBUG会假设你想检查存储器字节内容,并在必要时进行修改。对于所显示的字节内容,你可以执行以下四种操作。在此字节处输入新的数据项。DEBUG将用新输入的内容替换原内容。如果不希望改变原来的字节则直接按回车键。如果不想改变当前字节,而想检查下一个字节则按空格键。如果不想改变当前字节,而想检查上一个字节则输入减号“-”。3.7标志寄存器的表示和修改在DEBUG中标志寄存器中各个标志位采用以下符号表示方法。标志代码置位(=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(非进位)命令“R F”是显示标志寄存器的内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论