DEBUG命令
- 格式:doc
- 大小:101.50 KB
- 文档页数:27
debug指令详解debug指令详解一、DEBUG概述DEBUG是在DOS状态下面供程序员使用的程序调试工具。
它可以用来检查内存中任何地址中的内容以及修改特定地址中的内容。
DEBUG还可以用于逐指令执行某个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件与磁盘扇区。
此外,DEBUG还可以用于读写端口中的数值。
在DEBUG状态下,所有数据都作为字节序列,可以用DEBUG把任何类型的文件读入内存中。
DEBUG能够处理的数据为两种: 十六进制数和ASCⅡ码,使用两位数表示十六进制数据(0~9,A~F)。
在DEBUG中涉及内存中的数据时,要指定数据所在的内存单元的地址,地址的输入格式是: [段地址]: [位移]。
如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。
前100H字节保留给程序段前缀使用(称PSP结构,包含程序执行的各种信息),该区域用于建立DOS与程序之间的联系。
在DEBUG中,使用四位十六进制数表示地址(0~9,A~F)。
DEBUG输入数据时有两种方法: 提示方法和非提示方法。
在提示方法下,输入要求输入数据的命令,后跟保存数据的地址。
执行后可以看到该地址中已有的内容及一个冒号提示符。
此时可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到“—”提示符。
在非提示方法下,输入保持数据的内存地址以及要输入的数据。
DEBUG 的启动:进入DOS状态下,键入DEBUG ,按ENTER键,如:C:\>DEBUG ,则屏幕显示:-符号“-”是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。
DEBUG的退出:在DEBUG的提示符后输入Q命令,按ENTER键,则退出DEBUG 返回DOS。
DEBUG的使用:在DEBUG的提示符后输入DEBUG命令,按ENTER键。
二、DEBUG 命令详解★ A命令格式:A[地址]功能:将指令直接汇编成机器码输入到内存中。
五、DEBUG调试程序DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。
它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。
1)DEBUG程序使用在DOS提示符下键入命令:C>DEBUG [盘符:][路径][文件名.EXE][参数1][参数2]这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG 进行程序调试。
若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG 程序调入内存后,再由DEBUG将指定的文件名装入内存。
2)DEBUG的常用命令(1)汇编命令A格式:A[起始地址]功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。
若缺省起始地址,则从当前CS:100地址开始存放。
A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。
(2)反汇编命令U格式1:U[起始地址]格式2:U[起始地址][结束地址|字节数]功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。
格式2将指定范围的内存单元中的目标代码转换成汇编指令。
(3)显示、修改寄存器命令R格式:R[寄存器名]功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。
缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。
AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000DI=0000 DS=3000 ES=23A0 CS=138E IP=0000NV UP DI PL NZ NA PO NC138E:0000 MOV AX,1234-R AX ;输入命令AX 0014 ;显示AX的内容:;供修改,不修改按回车。
DEBUG命令大全(看看有啥用)a) 常用DOS命令1) 查看目录命令DIR,它列出所指盘上的文件目录,如:C>DIR D:2) 拷贝命令COPY,它把一个或多个文件拷贝成副本,如:C>COPY EX1.EXE D:3) 改变当前目录,格式为:C>CD 目录名4) 退出子目录,格式为:C>CD .. ,将退出当前子目录到直接外层目录下。
b) 熟悉DEBUG的使用方法,运行各种命令,观察运行后的情况1.DEBUG程序的调用在DOS提示符下,可键入命令:C>DEBUG [d:][path][文件名]其中文件名是被调试交件的名字,它须是执行文件(EXE),在DEBUG程序调入后,出现提示符"一",此时,可键入所需的DEBUG命令.2.DEBUG的主要命令〈1〉显示内存单元内容的命令D,格式为-D[地址]或-D[范围](2)修改内存单元内容的命令E,它有两种格式1) 给定的内容代替指定范围的单元内容一E地址内容表例如其中FLWX"'"Y""'Z"和8D各占一个字节,用这五个字节代替原内存单元内容,HXH,句""'Z"将分别按它们的ASCII码值代入。
2〉逐个单元相继地修改:-E地址例如一E 10018E4:0100 89.78此命令是将原100号单元的内容89改为78。
78是程序员键入的(3)检查和修改寄存器内容的命令R,它有三种方式1〉显示CPU内部所有寄存器内容和标志位状态,格式为-RR命令显示中标志位状态的含义如下表所示标志名置位复位溢出overflow方向direction中断interrupt符号sign零zero辅助进位auxiliary carry奇偶parity进位carry OVDNEINGZRACPECY NVUPDIPLNZNAPONC2)显示和修改某个指定寄存器内容,格式为一R寄存器名例如打入: -R AX系统将响应如下:AX F1F4:表示AX当前内容为FlF4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:-R BXBX 0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为-RF系统将给出响应,如OV DN EI NG ZR AC PE CY一这时若不作修改可按ENTER键,否则在"一'号之后键入修改值,键入顺序任意。
命令行参数形式:格式:DEBUG [[驱动器号:][路径]文件名[调试参数]]用途:debug将所指定文件装入内存,显示提示符“-”等待进一步命令。
若装入文件为.exe文件,按照重定位原则装入为可执行状态。
.com文件类似。
若为其它类型文件则直接进行内存映射,由偏移量100H原封不动读入内存。
debug将在缓冲区为被调试程序建立适当的PSP(程序段前缀,Program Segment Prefix)。
在PSP中的偏移量80H为命令行的末尾。
而且在偏移量5CH和6CH由包含参数后面的可选参数构成缺省的FCB(文件控制块,File Control Block)。
进入时各寄存器初使情况:寄存器.com程序.exe程序AX 指定驱动器错误码指定驱动器错误码BX 程序空间的高地址程序空间的高地址CX 程序空间的低地址程序空间的低地址DX 0 0 SI 0 0DI 0 0BP 0 0SP 0FFFFH或可利用的不定内存空间上限减2IP 100H 目标程序的的代码入口偏移量CS PSP 目标程序代码段址DS PSP PSPCS PSP PSPSS PSP 目标程序堆栈段底命令:A: 编写汇编代码(Assemble)格式:A[地址]用途:程序允许在指定位置(若无缺省为IP指针位置)进行汇编程序书写。
细节:*所有数值皆为十六进制整数,数值后不带“H”*不支持文件管理用的目录表、宏标记、条件汇编*跳转指令后要直接书写十六进制地址不支持标号*数据类型若非默认类型,要以PTR加以指定*字符串操作要指定类型为B或W(如lodsb和lodsw等)及长度*用DB和DW接受数据定义,直按进行汇编*对内存地址加[]以与立即数区分C: 内存内容比较(Compare)格式:C 地址范围地址地址范围:做比较的第一个内存域始未地址或始地址和长度地址:做比较的第二个内存域的始地址用途:*对内存中两个域的内容加以比较,以字节为单位。
对发现有差别的内容及其地址用如下形式显示出:地址1 始位置未位置地址2*若地址范围或地址不含段地址,默认为DS的值。
debug命令百科名片DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。
它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。
目录DEBUG命令介绍DEBUG的命令及功能如下:debug命令实际应用DEBUG命令介绍它的功能包括以下几个方面。
1. 直接输入,更改,跟踪,运行汇编语言源程序; 2. 观察操作系统的内容;3. 查看ROM BIOS的内容;4. 观察更改RAM 内部的设置值;5. 以扇区或文件的方式读写软盘数据DEBUG把所有数据都作为字节序列处理。
因此它可以读任何类型的文件。
DEBUG可以识别两种数据: 十六进制数据和ASCⅡ码字符。
它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。
在DEBUG中输入数据有两种方法: 提示方法和非提示方法。
在用提示方法时,用户可以输入要求输入数据的命令,后跟数据所要输入的地址。
然后用户就可以看到该地址中已有内容及一个冒号提示符。
此时用户可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到短横(-)提示符。
在运用非提示方法时,用户可以输入要输入数据的内存地址以及要输入的字节。
但与使用字处理程序或正文编辑程序时不一样,在使用DEBUG时,用户不能直接移动光标到一入口点输入或修改数据,而要一次输入一个或几个字节。
在使用DEBUG 时可以只涉及内存中的数据,从而一般都要指定所要处理的内存地址,地址的输入格式是: [段地址]: [位移]。
如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。
前100H字节保留给程序段前缀使用,这一专用区域用于建立DOS与程序之间的联系。
DEBUG总是用四位十六进制数表示地址。
用两位数表示十六进制数据。
DEBUG的命令及功能1. A(assemble):将指令转换成机器码并存储到内存中。
-A100:在内存地址100处开始输入指令。
2. D(dump):显示内存中的内容。
-D100200:显示内存地址从100到200的内容。
3. E(enter):修改内存中的数据。
-E1004000:在内存地址100处将数据修改为40。
4. G(go):执行程序。
-G100:从内存地址100处开始执行程序。
6. Q(quit):退出DEBUG。
-Q:退出DEBUG程序。
7. R(registers):显示和修改CPU寄存器的值。
-R:显示所有寄存器及其值。
-RAX1234:将AX寄存器的值修改为12348. T(trace):单步跟踪程序的执行。
-T:执行下一条指令并停止。
9. P(proceed):继续执行程序直至下一个断点或程序结束。
-P:继续执行程序。
10. U(unassemble):将机器码转换成指令。
-U100120:从内存地址100处开始将机器码转换成指令。
11. B(breakpoint):设置断点。
-B100:在内存地址100处设置断点。
12. S (search):在内存中指定的内容。
- S 100 200 "Hello": 在内存地址100到200之间字符串"Hello"。
13. L(load):加载程序到内存中。
-L100:从内存地址100处加载程序。
14. W(write):将内存中的数据写入文件。
- W 100 200 file.txt: 将内存地址100到200的数据写入到文件file.txt。
15. M(move):将内存中的数据移动到指定的地址。
-M100200300:将内存地址100到200的数据移动到地址300处。
16. X (execute):执行子程序。
-X100:从内存地址100处执行子程序。
17. H(help):显示DEBUG命令的帮助信息。
DEBUG调试程序的使用一、DEBUG的启动在DOS系统提示符下,运行DEBUG命令即可启动。
命令格式:DEBUG [文件名全称]功能:启动DEBUG调试程序,并把指定名字的文件装载入内存,以供调试。
说明:启动DEBUG,实际就是让计算机执行DEBUG.EXE这个调试程序。
若该程序不在当前目录下,需要在命令中指定该程序所在的位置路径(包括其所在磁盘和文件夹)。
文件名全称指定要调试的文件名及其所在的位置路径。
若指定该选项,则在启动DEBUG时把该文件装载入内存,以供调试,该文件一般是EXE文件或COM文件。
若不指定该选项,则只启动DEBUG,不装载文件。
二、DEBUG常用命令1、D——显示内存单元内容的命令格式:D[开始地址[结束地址]]说明:①若“开始地址”和“结束地址”都指定,则显示指定地址范围内的内存单元的内容;若只指定“开始地址”,省略“结束地址”,则显示从“开始地址”开始的80H个字节的内容;若“开始地址”和“结束地址”都省略,则显示从上次显示的末字节单元的下一个字节开始的80H个字节的内容。
②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。
2、E——输入内容(修改内存单元内容)命令格式:E开始地址[数据表列]说明:①若指定数据表列,则用数据表列中的数据存入从指定地址开始的内存单元中;若省略数据表列,则先显示指定开始地址的内存单元的内容,等待你修改。
若需要修改,输入其内容,按空格键显示、修改下一个内存单元内容;若不需要修改,直接按空格键显示、修改下一个内存单元内容,修改完成后按回车键。
②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。
3、F——填充内容(修改内存单元内容)命令格式:F开始地址结束地址数据表列说明:①用数据表列中的数据存入由开始地址和结束地址指定范围内的内存单元。
若数据表列中的数据少于指定地址范围的内存单元数,则循环使用表列中的数据存入内存单元,若数据表列中的数据多于指定地址范围的内存单元数,则多余的数据被忽略。
DEBUG命令的功能及使用功能:1.单步执行:DEBUG命令可以逐条执行程序的指令,并在每个指令被执行后停止程序的执行。
这使得开发人员能够逐步查看程序的执行过程,以便找到潜在的错误和问题。
2.查看和修改内存:DEBUG命令允许开发人员查看程序运行时的内存状态,并且提供了一些命令来读取和修改内存中的数据。
这对于调试内存泄漏、内存溢出和指针问题非常有用。
3.断点:DEBUG命令可以在程序的特定位置设置断点,一旦程序执行到这个位置,就会自动停止执行。
这使得开发人员可以在关键点查看程序的状态,以便分析问题。
4.寄存器查看和修改:DEBUG命令允许开发人员查看和修改程序运行时的寄存器值。
这对于理解程序如何处理数据以及跟踪特定变量的值非常有用。
5. 注册表和文件系统访问:DEBUG命令可以访问Windows注册表和文件系统,以检查和修改系统的配置和状态。
这对于调试与注册表和文件系统相关的问题非常有用。
使用:1.运行DEBUG命令:在命令行窗口中输入"DEBUG"命令,然后按下回车键即可运行DEBUG命令。
DEBUG命令会显示一个提示符,表示它已经准备好接受命令。
2.设置断点:使用"t"命令可以在程序中设置断点。
例如,要在程序的第10行设置一个断点,可以输入"t10"命令。
3.单步执行:使用"p"命令可以逐步执行程序的指令。
每次执行一条指令后,DEBUG命令会显示当前指令的汇编代码和程序计数器的值,并等待用户输入下一个命令。
4.查看内存:使用"d"命令可以查看指定内存地址的内容。
例如,输入"d1000"命令可以查看地址为1000的内存单元的内容。
5.修改内存:使用"e"命令可以修改指定内存地址的内容。
例如,输入"e100090"命令可以将地址为1000的内存单元的内容修改为90。
DEBUG各命令详细说明(很详细)2.启动DEBUG在命令窗口中启动DEBUG,启动命令一般为:DEBUG [文件名] [参数表]。
其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。
被调试的文件可以是系统中的任何文件,但通常它们的后缀为.EXE或.COM。
当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。
DEBUG中所有命令及其含义如DEBUG各命令功能说明表所示。
关于使用命令的几点说明:在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行命令是单个字母,命令和参数的大小写可混合输入可用F1、 F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令当命令出现语法错误时,将在出错位置显示“^ Error”可用Ctrl+C或Ctrl+Break来终止当前命令的执行,还可用Ctrl+S或Ctrl+Num Lock来暂停屏幕显示(当连续不断地显示信息时)以下通过实现十九个示例来熟悉DEBUG的命令集和基本的汇编指令。
R命令的使用R命令作用:观看和修改寄存器的值。
在提示符“-”下输入以下命令:R。
DEBUG将会显示出当前所有寄存器和标志位的状态。
接下来再输入命令RCX。
在提示符“:”后输入100。
该命令的作用是将寄存器CX的值设置为100(注意:DEBUG使用的是十六进制,这里的100相当于十进制的256。
)最后再执行R命令,观看修改后的寄存器值。
H命令的使用H命令作用:计算两个十六进制数的和与差。
在提示符“–”下输入以下命令:H 10 1。
观看命令执行结果。
运行结果的前一个数是计算出来的和,后一个数是计算出来的差。
计算结果均用十六进制形式表示。
D命令的使用D命令作用:显示内存区域的内容。
在提示符“–”下连续执行命令R、D、D。
观看命令执行结果。
前面已经介绍过了,命令R的作用是显示当前寄存器的值。
而命令D的作用是显示内存区域的内容,最左边是内存的起始地址,中间以十六进制的形式显示内存值,最右边是以ASCII码的形式显示内存值。
DEBUG的十八命令讲解虽然Debug只是MS-DOS的一个外部命令,但它为我们编辑、调试程序提供了一个丰富的系统环境,曾红极一时的2.13汉字系统,就是吴晓军用Debug编辑生成的,可见其功能非同一般。
那么它到底有什么绝世武功呢?且看Debug绝学为您一一分解。
第一命令A(Assemble)招式:A[地址]功能:从指定地址开始(当地址缺省时,如果以前未用过此命令则从CS:100开始,如果以前用过此命令,则从它最后停止的地址开始,对输入的语句汇编到内存。
心法:1,支持8086/8087/8088指令集;2,可使用near或far修饰跳转或调用,near可缩写为ne;3,可以用word ptr 或byte ptr说明操作单元,word ptr可缩写为wo,byte ptr可缩写为by;4,支持伪指令db和dw;5,远返回助记符为retf;6,支持所有形式的寄存器间接寻址和所有操作码的同义词。
演练:请打开电脑跟我做(注:0B66是段地址,可能与您的不一样)。
c:\>Debug-a0B66:0100 jmp 1f0 '由于跳转地址未定,暂用1f0代替0B66:0103 db 0d,0a,07. 'Press enter key to return...',240B66:0123 mov al,00B66:0125 mov bx,2000B66:0128 mov cs,1Error 每行输完回车后,Debug自动检查语句是否正确,错误则给予提示,并要求重新输入0B66:0128 mov cx,10B66:012B mov dx,00B66:012E int 26 将A盘boot区装入内存ds:2000B66:0130 inc by [bx+1fd] 将ds:3fd字节加一0B66:0134 mov si,2000B66:0137 mov di,4000B66:013A cld0B66:013B mov cx,2000B66:013E repz0B66:013F movsb 将boot区从ds:20复制到ds:4000B66:0140 mov al,00B66:0142 mov bx,4000B66:0145 mov cx,10B66:0148 mov dx,00B66:014B int 26 把ds:400 boot区写回A盘0B66:014D mov dx,1030B66:0150 mov ah,90B66:0152 int 21 显示提示信息0B66:0154 xor ah,ah0B66:0156 int 16 从键盘读一字符0B66:0158 cmp al,0d0B66:015A jnz 154 是回车则退出,否则循环读0B66:015C int 200B66:015E 回车结束-a1000B66:0100 jmp 123 修正跳转地址0B66:0102 回车结束-rcxCX 0000:5e-wWriting 0005E bytes-q恭喜您,现在您已用Debug写出了第一个程序!各位可以用dir命令在当前目录查看一下,哈!不知什么时候已经在您的硬盘里安了家。
Debug主要命令1. A[地址] 汇编命令功能: 将指令直接汇编成机器码输入到内存中。
说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制,用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到 CS:0100区域。
-a 010008F1:0100 MOV AH,0908F1:0102 MOV DX,10908F1:0105 INT 21H08F1:0109 db 'HELLO WORLD!$'08F1:0115-g2.D[地址] 或D[起始地址][目的地址] 转储命令功能: 以内存映象方式显示内存中的信息。
说明: 转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCII字符显示,所有不可打印字符用句号(.)表示。
每行显示16个字节的内容,在第八和第九个字节之间有一个连字符 - 此命令隐含的段地址为DS的值。
若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令,则从初使化的段寄存器的内容,加上地址偏移量 0100H 开始显示。
3.E[地址] [字节串) 修改内存命令功能: 从指定的地址开始修改内存值。
说明: 若地址部分只输入偏移量,则 E 命令认为段包括在DS寄存器中。
命令格式有两种:其一是用命令中包含的字节串替换从指定的地址开始的多个字节的内容;其二是命令后不跟字节串,则允许按顺序方式显示和修改字节,按下空格键为显示下一字节内容,若想修改,直接输入相应值。
4.F[地址范围] [字节或字节串] 填写命令功能: 将要填写的字节或字节串填入由地址范围指定的存储器中。
5.G[=起始地址] [[断点]……] 执行命令功能: 执行正在调试的程序,当达到断点时停止执行,并且显示寄存器标志和下一条要执行的命令。
说明: 如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。
DEBUG命令通过编辑、汇编和连接后的程序是可以执行的程序。
但是,一个程序特别是比较复杂的程序不能保证没有一点错误。
因此,在投入正式运行前必须进行调试,以检查程序的正确性。
调试程序Debug就是用来调试汇编语言程序的一种工具。
Debug的主要功能有显示和修改寄存器及内存单元的内容;按指定地址启动并运行程序;设置断点使程序分段运行,以便检查程序运行过程中的中间结果或确定程序出错的位置;反汇编被调试程序,它将一个可执行文件中的指令机器码反汇编成助记符指令并同时给出指令所在的内存地址;单条追踪或多条追踪被调试程序,它可以逐条指令执行或几条指令执行被调试程序,每执行一条(或几条)指令后,Debug程序将中断程序的运行并提供有关结果信息;汇编一段程序,在Debug 的汇编命令下可以直接输入助记符指令,并将其汇编成可运行程序段。
此外,Debug还可以将磁盘指定区的内容或一个文件装入到内存或将内存的信息写到磁盘上等等。
启动Debug程序:在DOS状态下可以用下面的命令启动Debug程序:DEBUG [路径文件名.扩展名]Debug后面的文件名及路径是指被调试程序的文件名及路径,Debug后面的文件必须是程序的可执行文件,其扩展名可以是.EXE 或.COM。
在此命令后,DOS将调试程序Debug调入内存,Debug接着将被调程序送入内存。
比如:DEBUG 123.EXE调试程序Debug的主要命令如下:(一)显示内存单元内容的命令D格式(1):-D 地址从指定地址开始,显示128个字节的内容,每一行的左边显示段内偏移地址,接着显示16个单元的内容,最右边区域则显示这一行的16个单元所对应的可显示的字符。
若无可显示的字符,则用圆点(小数点)填充。
D命令中的地址可为段内偏移量,也可为段基址和段内偏移量两部分,中间用冒号隔开,如1680:0110,即指段基址为1680H,段内偏移量为0110H。
Debug 中所显示的数据均为十六进制数,且省去了后面的H标志。
DEBUG主要命令DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
一、DEBUG程序的调用在DOS的提示符下,可键入命令:C:\DEBUG [D:][PA TH][FILENAME[.EXT]][PARM1][PARM2]其中,文件名是被调试文件的名字。
如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。
如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。
命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。
在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。
二、DEBUG的主要命令1、显示存储单元的命令D(DUMP),格式为:_D[address]或_D[range]例如,按指定范围显示存储单元内容的方法为:-d100 12018E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02G...8.G.....G...18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37..;..h..M PQVW.718E4:0120 8B其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。
这里没有指定段地址,D命令自动显示DS段的内容。
如果只指定首地址,则显示从首地址开始的80个字节的内容。
如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
2、修改存储单元内容的命令有两种。
·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。
Debug启动Debug,它是可用于测试和调试MS-DOS 可执行文件的程序。
Debug [[drive:][path] filename [parameters]]参数[drive:][path] filename指定要测试的可执行文件的位置和名称。
parameters指定要测试的可执行文件所需要的任何命令行信息。
++说明使用Debug 命令但不指定要测试的文件如果使用没有位置和文件名的Debug 命令,然后键入所有的Debug 命令以响应Debug 提示符,连字符(-)。
Debug 命令以下是Debug 命令列表:? 显示Debug 命令列表。
a 汇编8086/8087/8088 记忆码。
c 比较内存的两个部分。
d 显示部分内存的内容。
e 从指定地址开始,将数据输入到内存。
f 使用指定值填充一段内存。
g 运行在内存中的可执行文件。
h 执行十六进制运算。
i 显示来自特定端口的1 字节值。
l 将文件或磁盘扇区内容加载到内存。
m 复制内存块中的内容/n 为l 或w 命令指定文件,或者指定正在测试的文件的参数。
o 向输出端口发送1 个字节的值。
p 执行循环、重复的字符串指令、软件中断或子例程。
q 停止Debug 会话。
r 显示或改变一个或多个寄存器。
s 在部分内存中搜索一个或多个字节值的模式。
t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和Debug 下一步要执行的指令的解码形式。
u 反汇编字节并显示相应的原语句。
w 将被测试文件写入磁盘。
xa 分配扩展内存。
xd 释放扩展内存。
xm 映射扩展内存页。
xs 显示扩展内存的状态。
分隔命令参数所有Debug 命令都接受参数,除了q 命令之外。
可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符。
因此,以下命令等价:dcs:100 110d cs:100 110d,cs:100,110指定有效地址项Debug 命令中的address 参数指定内存位置。