debug的基本知识与用法.doc_第1页
debug的基本知识与用法.doc_第2页
debug的基本知识与用法.doc_第3页
debug的基本知识与用法.doc_第4页
debug的基本知识与用法.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

一、 关于Debug的学习Debug.exe文件位于Windowssystem32目录(Windows XP)或Windowscommand目录(Windows 9x)下。基本使用方法如下:Step 1:点击“开始运行”,输入“CMD”(Windows 2000/XP)或“Command”(Windows 9x)打开命令提示符窗口。Step 2:输入“Debug”并回车,出现提示符“-”,现在你已经开启了神秘的Debug世界了。小提示:执行“?”命令可以参看Debug主要命令及参数。Step 3:输入“D FE00:0”,回车后可以看到结果,这个就是主板BIOS的厂商信息。接着再输入“D FFFF:5 L 8”,回车后,主板的BIOS版本日期也出来了。Step 4:现在再输入“Q”命令,回车后就退出了Debug程序。二、 DEBUG的主要用途及DEBUG的调用DEBUG是为汇编语言设计的一种调试工具,它通过单步执行、设置断点等方式为汇编语言程序员提供了非常有效的程序调试手段。DEBUG可以直接用来检查和修改内存单元、装入、存储及启动运行程序、检查及修改寄存器,也就是说DEBUG可深入到计算机的内部,可使用户更紧密地与计算机中真正进行的工作相联系。DEBUG也是练习使用汇编指令的一种有效工具,用户可以直接在DEBUG环境下执行汇编指令。然而,在DEBUG下运行汇编语言源程序也受到了一些限制,它不宜汇编较长的程序,不便于分块程序设计,不便于形成以DOS外部命令形式构成的 .EXE文件,不能使用浮动地址,也不能使用ASM和MASM提供的绝大多数伪指令。进入DEBUG的提示符是符号“-”。即,出现提示符“-”就表示可以接受DEBUG命令了。当进入DEBUG时,寄存器和标志设成以下数值,这些值用于DEBUG调试中的程序。段寄存器CS,DS,ES和SS均指向DEBUG末尾的第一个段。IP寄存器置为0100H。栈指针SP指向尾部或装入程序的暂存部分的底部。三、 DEBUG的主要命令功能与格式DEBUG命令是在DEBUG提示符“-”下,由键盘键入的。每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键 Enter。命令及参数的输入可以是大小写的结合。Ctrl+Break键可中止命令的执行。Ctrl+Num Lock键可暂停屏幕卷动,按任一键继续。所用数均为十六进制数,且不必写H* 1. 汇编命令A格式:A : (1) A :(2) A :(3) A (4) A功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。注: 其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。以后命令中提及的各种地址形式,均指(1)、(2)、(3)中A后的地址形式。2. 比较命令C格式: C ,其中是由 或者是由 L 指出的一片连续单元。功能:从的起始地址单元起逐个与目标起始地址以后的单元顺序比较单元的内容,直至源终止地址为止。遇有不一致时,以 的形式显示失配单元及内容。* 3. 显示内存命令D格式: D (1) D (2) D (3) D功能:以两种形式显示指定范围的内存内容。一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以.代替。注: 其中(1)以CS为段寄存器。(3)显示CS:100起始的一段内容* 4. 修改内存命令E格式: E (1) E (2) E ;其中是以逗号分隔的十六进制数,或用或”括起来的字符串,或者是二者的组合。功能: (1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter为止。(2)将逐一写入由开始的一片单元。5. 填充内存命令F格式: F 功能: 将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。例如: -F 5BC:200 L 10 B2,XYZ,3C * 6. 执行命令G格式: G =,上式等价于:(1) G(2) G=(3) G=,功能: 执行内存中的指令序列注: (1)从CS:IP所指处开始执行(2)从指定地址开始执行(3)从指定地址开始执行,到断点自动停止。7. 十六进制算求运算指令H格式: H 功能: 求十六进制数和的和与差并显示结果。8. 端口输入命令I格式: I 功能: 从指定端口接收信息并将输入的内容显示出来。*9. 读盘命令L格式: L 其中的缺省值为CS:100。逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:物理扇区是按0面0道1区,0面0道2区,0面0道9区,0面1道1区,0面39道9区,1面0道1区,1面39道9区排列。而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道1扇区至9扇区,逻辑扇区号为08;物理扇区1面0道1扇区至9扇区,逻辑扇区号为911H;物理扇区0面1道1扇区至9扇区,逻辑扇区号为121AH;。这样每道先0面后1面一直排下去。其中为0、1或2,0表示A驱,1表示B驱,2表示硬盘。功能: 将指定的盘上,从起,共n个逻辑扇区上的所有字节顺序读入指定内存地址开始的一片连续单元。当L后的参数缺省时,必须在L之前由N命令指定(或进入DEBUG时一并指出)所读驱动器文件名。此时L执行后将该文件装入内存。例如:-N EXAMPLE -L 将当前驱动器上的EXAMPLE文件装入CS:100起始的一片内存单元。10. 内存搬家命令M格式: M ;其中源及目标地址若仅输入偏移量,则隐含相对DS。功能:把中的内容顺序搬至起的一片连续单元。例如:-M CS:100 110 600把从CS:100起至CS:110止17个字节搬至DS:600至DS:610的一片单元。 11. 命名待读写文件命令N格式: N 功能: 为LW命令指定待装入写盘文件注: 其它形式参考DOS手册12. 端口输出命令O格式: O 功能:将该从指定输出。例如:-O 2F 4F 将4FH从端口2FH输出* 13. 结束DEBUG返回DOS命令Q格式:Q功能:返回DOS提示符下* 14. 显示修改寄存器命令R格式: R (1) R (2) R 功能: (1)显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句形式。其中对状态标志FLAG以每位的形式显示,详见下表。状态标志显示形式示意图标志位溢出OF方向DF中断IF符号SF零ZF辅助AF奇偶PF进位CF状态有无减增开关负正零非有无偶奇有无显示OVNVDNUPEIDINGPLZRNZACNAPEPOCYNC(2)显示指定寄存器内容例如:-R AX -R F 15. 搜索指定内存命令S格式: S 功能:在指定范围搜索表中内容,找到后显示表中元素所在地址例如:-S CS:100 110 41 显示:04BA:0104 04BA:010D表示在位移100H至110H间的上述两处有41H。又如:-S C3:100 L 11 41“AB”E表示在当前代码段位移100H至111H处寻找连续4个字节内容为41H、41H、42H、0EH的起始单元地址。* 16. 执行并显示系统环境命令T格式:T = 功能:执行由指定地址起始的、由指定的若干条命令。其中的缺省值是当前IP值,的缺省值是一条。例如:-T 执行当前指令并显示状态-T 10 从当前指令始执行10H条指令* 17. 反汇编命令U 格式:U /(1) U(2) U(3) U功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次U指令后下一地址的值。这样可以连续反汇编。18. 写盘命令W格式:W 功能:与L命令不同的地方是将内存从起始的一片单元内容写入指定扇区。只有W而没有参数时,与N命令配合使用将文件写盘。注:要求大家对其中打*的DEBUG命令必须能熟练使用。四、如何在DEBUG环境下执行汇编指令 本节从几个典型例子出发,通过上机实习,引导读者学会使用DEBUG调试程序运行汇编语言程序,以便读者在以后的学习中能够有一个熟练的调试和运行手段。在进入DEBUG的提示符-之后,用户可以通过DEBUG的命令输入汇编源程序,并用相应命令将其汇编成机器语言程序;然后调试并运行该程序。 例1 在DEBUG下运行如下程序。 MOV DL,33H ;字符3的ASCII码送DL MOV AH,2 ;使用DOS的2号功能调用 INT 21H ;进入功能调用,输出3 INT 20H ;BIOS中断服务程序,正常结束。该程序运行结果是在显示器上输出一个字符3。如果要输出其它字符,请改变程序中33H为相应字符的ASCII码。运行步骤:(1)进入DEBUG 设DEBUG.EXE位于C盘DOS子目录,进入DOS后键入DEBUG ,即C:DOSDEBUG 屏幕显示: -;-号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。现在用A命令送程序如下:(2)送程序并汇编-A 100 169C:0100 MOV DL,33 169C:0102 MOV AH,2 169C:0104 INT 21 169C:0106 INT 20 169C:0108 - 汇编成机器指令,顺序存放于CS段100H起始的8个存储单元用反汇编命令U作如下操作:(3)反汇编 -U 100 108 169C:0100B233 MOV DL,33169C:0102B402 MOV AH,02169C:0104CD21 INT 21169C:0106CD20 INT 20169C:0108 - 右边是汇编指令,中间是该汇编指令的机器码,左边是存放该条指令的内存单元地址。(4)运行程序-G 3Program terminated normally -(5)写COM文件-R BX BX 0000: -R CX CX 0000:程序长度A -N EXCOM.COM -W -其中(BX)*10000H+(CX)用于指定所写的字节数,(BX)为该数的高16位,(CX)为该数的低16位。因此,上面的过程实际上是要将A(代码段和数据段的总长度,一般代码段从100h开始,数据段可以另找位置如200H,则两者之和就是A)个字节写入文件EXCOM.COM-d100(显示代码段)-d200(显示数据段),如果到210h结束则A=

温馨提示

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

评论

0/150

提交评论