debug常见命令使用说明

合集下载

DEBUG的详细用法(自己测试)

DEBUG的详细用法(自己测试)
0B70:0108 F8 CLC
将机器指令程序送到起始地址为200H单元
-E 200 B2, 65, B4, 02, CD, 21, CD, 20
执行机器指令程序
-G=200
e
Program terminated normally
示例二:显示修改寄存器内容
5.读写磁盘
-N [d:][PATH]文件名.扩展名 指定想要读写的磁盘文件
-W 内存地址 将指定内存块写入文件
-L [内存地址] 将文件调如内存
修改寄存器
-R AX
AX 0000
:1234
-R
AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B76 ES=0B76 SS=0B76 CS=0B76 IP=0100 NV UP EI PL NZ NA PO NC
0B76:1006 CD20 INT 20
示例四:执行程序
单步执行
-T=0B76:1000
AX=0234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000
符号标志SF(Sign flag) NG(1) PL(0)
零标志ZF(Zero flag) ZR(1) NZ(0)
2010-02-24 20:01 DEBUG详细用法DEBUG详细用法
DEBUG命令一览
1.读写寄存器
-R 显示所有寄存器内容
-R 寄存器名 显示和修改指定寄存器内容
示例一:DEBUG环境下建立和汇编程序
输入并汇编程序
-A 100

Debug常用命令实践

Debug常用命令实践

Debug常用命令实践一实验目的<1>学习Debug常用命令、掌握观察寄存器和内存单元的方法。

<2>获取计算机只认识机器语言的直接感受。

<3>熟悉汇编语言编程工具的使用。

二 Debug常用命令1.汇编命令A 格式:-A [地址]功能:从指定地址开始允许输入汇编指令,并将汇编成机器指令代码从指定代码开始存放,若不指定地址则系统默认的地址开始存放,按回车键退出汇编状态。

应用:用于调试一条指令或几条指令组成的一个程序段。

2.显示或修改寄存器命令R 格式: -R [寄存器名]功能:若指定寄存器,则显示指定寄存器的内容,并可进行修改;若不要修改,则按Enter键,若为指定寄存器,则默认显示所有寄存器内容。

应用:常用于寄存器的值查看指令的执行结果。

3.内存单元内容的,命令E 格式:-E [地址] 内容表功能:若指定内容表,则用内容表中的内容代替指定地址开始存储单元的值,否则,从指定地址考试逐个单元显示其内容,并等待用户修改。

按空格键继续显示下一个单元的值,按回车键结束。

应用:常用于在调试程序的过程中改变变量的初始值。

4.显示内存单元内容的命令D,格式:-D [地址] 或–D [范围]功能:前者为显示指定地址开始的一段存储单元的值;后者为显示指定范围内存存储单元的值。

应用:常用于在调试过程中检查变量的值.例如:-D 200 ;显示从DS:200单元开始的各单元的值-D 200 L10 ; 显示从DS:200单元开始的10个字节单元的值。

5.单步执行命令T 格式:-T [=地址]功能:从从指定地址执行一条指令后停下来,显示寄存器内容和状态值,若未指定地址,则执行当前指令的下一条指令。

6.反汇编命令U 格式:-U [地址] 或–U [范围]功能:从指定地址开始,反汇编32个字节,或者对指定范围内的主存内容进行反汇编,若没有指定地址,则接着上一个U命令的最后一个单元开始;若还没有使用过U命令,则从当前cs:ip开始。

DEBUG的命令及功能如下

DEBUG的命令及功能如下

DEBUG的命令及功能*汇编命令A[地址]功能: 将指令直接汇编成机器码输入到内存中。

说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制,用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,改语句被汇编到 CS:0100区域。

*比较命令C[源地址范围][目的地址]功能: 比较两内存区域中的内容是否相同,若不同则显示其地址和内容。

*转储命令D[地址] 或D[起始地址][目的地址]功能: 以内存映象方式显示内存中的信息。

说明: 转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCII 字符显示,所有不可打印字符用句号(。

)表示。

每行显示16个字节的内容,在第八和第九个字节之间有一个连字符 - 此命令隐含的段地址为DS的值。

若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令,则从初使化的段寄存器的内容,加上地址偏移量 0100H 开始显示。

*修改内存命令E[地址] [字节串)功能: 从指定的地址开始修改内存值。

说明: 若地址部分只输入偏移量,则 E 命令认为段包括在DS寄存器中。

命令格式有两种:其一是用命令中包含的字节串替换从指定的地址开始的多个字节的内容;其二是命令后不跟字节串,则允许按顺序方式显示和修改字节,按下空格键为显示下一字节内容,若想修改,直接输入相应值。

*填写命令F[地址范围] [字节或字节串]功能: 将要填写的字节或字节串填入由地址范围指定的存储器中。

*执行命令G[=起始地址] [[断点]……]功能: 执行正在调试的程序,当达到断点时停止执行,并且显示寄存器标志和下一条要执行的命令。

说明: 如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。

如果指定断点,当指令到达指令地址时停止执行,并显示各寄存器标志位的内容和下一条要执行的命令,最多允许用户设定10个断点。

debug 的使用

debug 的使用

Debug是一种程序调试工具,主要用于帮助程序员检查和修复程序中的错误。

以下是如何使用Debug的基本步骤:
设置断点:断点是一种标记,告诉Debug从标记的地方开始查看。

在要设置断点的代码行上单击鼠标左键即可。

运行程序:在代码区域右击,选择Debug执行。

单步执行:点击Step Into(F7)这个箭头,或者直接按F7,以一行一行地操纵代码,从而判断程序的执行流程是否与预期一致。

查看变量值:在执行过程中,可以查看变量的当前值,以了解程序状态。

删除或禁用断点:选择要删除的断点,单击鼠标左键即可。

如果是多个断点,可以每一个再点击一次。

也可以一次性全部删除。

以上是使用Debug的基本步骤,但请注意,具体使用方式可能会根据Debug的具体版本和配置有所不同。

DEBUG的使用方法

DEBUG的使用方法

DEBUG程序的使用一、在DOS的提示符下,可如下键入Debug启动调试程序:DEBUG [路径\文件名] [参数1] [参数2]Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。

命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。

在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。

•运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。

•运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。

•运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。

此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。

DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。

二、DEBUG命令的格式Debug的命令都是一个字母,后跟一个或多个参数:字母 [参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。

许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。

其中,段基地址可以是段寄存器或数值;偏移地址是数值。

如果不输入段地址,则采用默认值,可以是缺省段寄存器值。

PC技术 DEBUG常用命令及其使用

PC技术 DEBUG常用命令及其使用

DEBUG常用命令及其使用Debug是汇编程序设计的调试工具,它通过提供单步执行、断点设置等功能为汇编程序员提供了有效的调试手段。

我们通过在Debug状态下键入“?”号,就可得到所有的Debug 命令及其格式。

Debug命令一览表:assemble A[address]compare C range addressdump D[range]enter E address[list]fill F range listgo G[=address][addresses]hex H value1value2input I portload L[address][drive][firstsector][number] move M range addressname N[pathname][arglist]output O port byteproceed P[=address][number]quit Qregister R[register]search S range listtrace T[=address][value]unassemble U[range]write W[address][drive][firstsector][number] allocate expanded memory AX[#pages]deallocate expanded memory XD[handle]map expanded memory pages XM[Lpage][Ppage][handle]display expanded memory status XS上面如此多的Debug命令,也许会吓退汇编用户,但实际并不是所有的命令都必须掌握的,在进行上机程序题调试时,最常用的命令就是设置断点、单步执行、查看内存变量等,因为我们编制好汇编程序后,如果运行结果正确当然没有什么好做的,但当运行结果与我们预期的结果不一致时,就必须对程序进行调试。

《Debug常用命令的使用方法》

《Debug常用命令的使用方法》

一、熟悉和掌握如下Debug常用命令的使用方法:R,D,E,A,U,T,P,G,QR 显示和修改寄存器的内容D 显示寄存器单元的内容E 显示和修改存储单元的内容A 汇编命令U 反汇编命令T 执行一条或多条指令P 逐条执行指令G 设置断点并启动运行被调试程序Q 结束并推出DEBUG程序二、熟悉和掌握在Debug中运用MOV、AND、OR、XOR、NOT指令进行二进制数实验题目一: 已知 a = 00111000B, b= 11000111B, 试求(1) a AND b(2) a OR b(3) a XOR b(4) NOT a实验内容: a AND b-A18AE:0100 MOV AL,3818AE:0102 MOV BL,C718AE:0104 AND AL,BL18AE:0106实验步骤:-RAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=18AE ES=18AE SS=18AE CS=18AE IP=0100 NV UP EI PL NZ NA PO NC 18AE:0100 B038 MOV AL,38-PAX=0038 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=18AE ES=18AE SS=18AE CS=18AE IP=0102 NV UP EI PL NZ NA PO NC 18AE:0102 B3C7 MOV BL,C7-PAX=0038 BX=00C7 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=18AE ES=18AE SS=18AE CS=18AE IP=0104 NV UP EI PL NZ NA PO NC 18AE:0104 20D8 AND AL,BL-PAX=0000 BX=00C7 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=18AE ES=18AE SS=18AE CS=18AE IP=0106 NV UP EI PL ZR NA PE NC 18AE:0106 0000 ADD [BX+SI],AL DS:00C7=0D实验小结:最终结果AL=0000即a AND b=0000三、熟悉和掌握在Debug中运用MOV、ADD、SUB、DAA、DAA指令进行二进制数(补码)、BCD数的加减运算,并注意观察记录标志位的变化情况。

Debug使用说明

Debug使用说明

附录DEBUG调试程序的应用1.直接启动DEBUG程序如在C盘的根目录下,启动的方法是:C:\>DEBUG_这时屏幕上会出现“_”提示符,等待键入DEBUG命令。

2.启动DEBUG程序的同时装入被调试文件命令格式如下:C:\>DEBUG [d:][PA TH]filename[.EXT][d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。

例如:BCDSUM.EXE可执行文件在A盘,用DEBUG对其进行调试的操作命令如下。

C:\>DEBUG A:\BCDSUN.EXE↙DOS在调用DEBUG程序后,再由DEBUG把被调试文件装入内存,当被调试文件的扩展名为COM时,装入偏移量为100H的位置,当扩展名为EXE时,装入偏移量为0的位置,并建立程序段前缀PSP,为CPU寄存器设置初始值。

3.退出DEBUG在DEBUG命令提示符“_”下键入Q命令,即可结束DEBUG的运行,返回DOS操作系统。

4.在DEBUG环境下建立和汇编程序在DEBUG环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。

比如,在DEBUG下运行如下程序:MOV DL,33H ;字符3的ASCII码送DLMOV AH,2 ;使用DOS的2号功能调用INT 21H ;进入功能调用,输出‘3’INT 20H ;BIOS中断服务,程序正常结束。

该程序运行结果是在显示器上输出一个字符‘3’。

如果要输出其它字符,请改变程序中‘33H’为相应字符的ASCII码。

其中涉及DOS和BIOS功能调用。

因为我们是在DOS的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入/输出指令直接通过端口输入/输出,而必须使用DOS内部提供的子程序完成输入/输出。

DOS功能调用就是为诸如此类的目的设置的。

DOS功能调用要求在进入INT 21H调用前,首先将功能调用号送AH寄存器,并根据功能调用号准备初始数据。

DEBUG的命令及功能

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命令详解

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各命令详细说明(很详细)

DEBUG各命令详细说明(很详细)

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调试命令介绍

DEBUG调试命令介绍1.主要调试命令:(1)反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解,如图1.5所示。

一般常用以下三种格式:a)-U↙:从当前IP处开始,对连续约32字节内容反汇编。

如对TEST.EXE,刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示:-U↙13C2:0000 B402 MOV AH,0213C2:0002 B241 MOV DL,4113C2:0004 CD21 INT 2113C2:0006 B44C MOV AH,4C13C2:0008 CD21 INT 2113C2:000A 8B4606 MOV AX,[BP+06]………………13C2:0020 8B07 MOV AX,[BX]-图1.5 反汇编命令的执行结果在上例中,13C2:0000表示CS:IP的内容(其中CS的值是动态值);B402代表该处存放的二进制数据,亦即指令MOV AH,02H的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。

特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中13C2:000A单元以后的部分,显然不是TEST.EXE的内容。

另外还需注意,DEBUG默认使用十六进制。

b)–U 0123↙:从指定的IP=0123处开始,对连续约32字节内容反汇编。

c)–U 0123 0143↙:从指定的IP=0123处开始反汇编,直至指定的0143处结束。

(2)显示寄存器命令R:显示或修改寄存器的内容,如图1.6所示。

一般常用以下形式:a)-R↙:显示所有寄存器当前的内容及当前将执行的指令。

如对TEST.EXE,在程序运行之前,键入R命令:-R↙AX=0000 BX=0000 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13B2 ES=13B2 SS=13C2 CS=13C2 IP=0000 NV UP EI PL NZ NA PO NC13C2:0000 B402 MOV AH,02-图1.6 显示寄存器命令执行结果在显示寄存器内容时,状态标志寄存器F表示成各个分离的标志位,其意义如下表1.1所示:表1.1 标志寄存器的标志为含义b)-R AX↙:显示指定的AX寄存器当前的内容,并等待键入新值;如果不作修改,可直接回车。

debug主要命令详解

debug主要命令详解

debug主要命令详解debug主要命令详解DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

一、DEBUG程序的调用在DOS的提示符下,可键入命令:C:\DEBUG [D:][PATH][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 02 G...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的使用

汇编_DEBUG的使用汇编语言是一种低级语言,它与机器语言非常接近,每一个汇编语言的指令几乎都对应着一条机器指令。

因此,了解并掌握汇编语言对于理解计算机内部工作原理以及进行底层编程是非常有帮助的。

下面,我将详细介绍DEBUG的使用方法和功能。

1.DEBUG的启动和退出:在DOS命令行下输入DEBUG命令,即可启动DEBUG。

DEBUG启动后,会显示一个短横线"-”,表示等待执行命令。

在DEBUG中输入"q"命令,即可退出DEBUG。

2.DEBUG的命令格式和常用命令:-a:将键盘输入的ASCII码写入指定地址-d:显示内存中的指定地址的内容-e:修改内存中的指定地址的内容-g:从指定地址开始执行程序-r:查看和修改寄存器的值-t:查看和修改标志寄存器的值-u:以汇编代码的格式显示内存中的指令-w:将内存中的内容写入指定文件-n:加载并执行指定文件-i:打印当前的执行指令-f:在段间切换3.DEBUG的常用调试操作:- 通过“d”命令查看内存中的指令和数据内容,可以使用不同的参数来控制显示格式,如"d 100"表示从100H地址处开始显示,"d cs:100"表示从CS:100H地址处开始显示。

-通过“e”命令修改内存中的指令和数据内容。

- 通过“r”命令查看和修改寄存器的值,如"r ax"表示查看和修改AX寄存器的值。

-通过“u”命令以汇编代码的格式显示内存中的指令。

-通过“g”命令从指定地址开始执行程序。

-通过“n”命令加载并执行指定的二进制文件。

4.示例:下面给出一个使用DEBUG调试的示例过程:-启动DEBUG,进入DEBUG命令行界面。

-使用“n”命令加载一个二进制文件。

-使用“d”命令查看内存中的指令和数据,以及寄存器的值。

-使用“e”命令修改内存中的指令和数据。

-使用“g”命令执行程序。

-使用“r”命令查看和修改寄存器的值。

实用debug命令集锦

实用debug命令集锦

实用debug命令集锦1. 非物理0磁道坏软盘的修复此种损坏从软盘盘面上来看并没有明显的划伤和霉变。

一般可以恢复其数据,也可是软盘重新在利用。

处理方法如下:ⅰ. 进入debugⅱ. 取一张引导区没有损坏的好磁盘,插入软驱-l 100 0 0 1ⅲ. 插入损坏的磁盘到软驱-w 100 0 0 1-q注意:好盘与坏盘容量必须相同2. 物理0磁道坏软盘中的数据读取对于0磁道损坏的磁盘,一般来说是应该抛弃了,当你也不妨试一试已下方法:磁化处理:用较强的磁铁在靠近坏磁盘的表面处反复移动,切不可碰到磁盘介质,以免划伤表面,然后在试试格式化。

软盘换面:小心的将磁盘打开,坚磁片与金属芯片分开,方面后再按原来的方法粘在一起即可,在重新格式化。

diskfix:对于diskfix想必大家都用的比较多了,里面的磁盘修复功能很好用的。

能修复大多数磁盘表面错误。

3. 硬盘启动失败处理在正常机上格式化一张软盘,无其它数据进入debug-l 0 2 0 1-w 0 0 0 1-q用系统盘启动故障机后在进入debug-l 0 0 0 1-w 0 2 0 1-q4. 软盘不能正确读取解决方法如果使用软盘时出现如下提示general failure error reading drive a可以用以下方法解决:将一张好盘插入软驱进入debug-a 100****:*100 mov al,0****:**** mov cx,1****:**** mov dx,0****:**** mov bx,1000****:**** int 25****:**** int 20回车-g=0100插入坏盘并进入debug-a 200****:*100 mov al,1****:**** mov cx,1****:**** mov dx,0****:**** mov bx,1000****:**** int 26****:**** int 20回车-g=2005. cmos 数据的保存,恢复cmosram的’地址口’的口地址为70h ’数据口’的口地址为 71h 读取时只需将读的cmosram的地址送到70h,随后就可以从71 h中得到所需数据。

DEBUG命令的功能及使用

DEBUG命令的功能及使用

实验一DEBUG命令的功能及使用DEBUG的主要命令功能与格式1. 汇编命令A格式:A [[<段寄存器名>/<段地址>:] <段内偏移>]上式等价于:(1)A <段寄存器名>:<段内偏移>(2)A <段地址>:<段内偏移>(3)A <段内偏移>(4)A功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。

注:其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。

以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。

2. 显示内存命令D格式:D [<地址>/<范围>]上式等价于:(1)D <地址>(2)D <范围>(3)D功能:以两种形式显示指定范围的内存内容。

一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以‘.’代替。

注:其中(1)以CS为段寄存器。

(3)显示CS:100起始的一片内容。

3. 修改内存命令E格式:E <地址> [<单元内容表>]上式等价于:(1)E <地址>(2)E <地址> <单元内容表>其中<单元内容表>是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。

功能:(1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter为止。

(2)将<单元内容表>逐一写入由<地址>开始的一片单元。

4. 填充内存命令F格式:F <范围> <单元内容表>功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。

调试工具debug的使用及基本指令的用法

调试工具debug的使用及基本指令的用法

调试工具debug的使用及基本指令的用法
3、观察及修改CPU内部的各寄存器
-r ax AX 0000 :1234 将AX的内容改为1234H -rf NV UP DI PL NZ NA PO NC -ov dn 将标志寄存器的OF置为OV;DF置为DN。
4、观察和修改内存单元的内容
-d 2000
-a 103 修改103处的指令 10DD:0103 mov [2000],ax 10DD:0106 -
调试工具debug的使用及基本指令的用法
6、单步执行程序
-t=100 执行CS:100H处的一条指令,自动显示各寄存器内容及下一条指令。 AX=1234 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000 DS=10DD ES=10DD SS=10DD CS=10DD IP=0103 OV DN DI PL NZ NA PO NC 10DD:0103 A30020 MOV [2000],AX DS:2000=0201 -t 继续执行下一条指令

标志寄存器各标志位的含义:
溢出标志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的使用及基本指令的用法
4、观察和修改内存单元的内容
-e 2000 修改从地址DS:2000H开始内存单元的内容 10DD:2000 00.01 00.02 ↑ 键入的内容,中间按空格键

汇编语言debug常用调试命令详解

汇编语言debug常用调试命令详解

汇编语⾔debug常⽤调试命令详解显⽰修改寄存器命令RR;★显⽰所有寄存器和标志位状态;★显⽰当前CS:IP指向的指令。

显⽰标志时使⽤的符号:标志标志=1 标志=0OF OV NVDF DN UPIF EI DISF NG PLZF ZR NZAF AC NAPF PE POCF CY NC显⽰命令D① D [地址]② D [范围]如不指定范围,⼀次显⽰8⾏×16个字节。

-D ;默认段寄存器为DS,当前偏移地址-D DS:100 / -D CS:200-D 200:100-D 200;200为偏移地址,默认段寄存器DS-D DS:100 110/ -D 100 L 10修改命令E① E 地址;从指定地址开始,修改(或连续修改)存储单元内容。

DEBUG⾸先显⽰指定单元内容,如要修改,可输⼊新数据;空格键显⽰下⼀个单元内容并可修改,减号键显⽰上⼀个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。

② E 地址数据表;从指定的地址开始⽤数据表给定的数据修改存储单元。

-E DS:100 F3 ‘AB’ 8D。

.反汇编命令U① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上⼀个U命令的最后⼀个单元开始;若第⼀次使⽤U命令省略地址,则从当前CS:IP开始(通常是CS:100)。

② U 范围;对指定范围的单元进⾏反汇编。

-U-U100-U100L10汇编命令AA [地址];从指定的地址开始输⼊符号指令;如省略地址,则接着上⼀个A命令的最后⼀个单元开始;若第⼀次使⽤A命令省略地址,则从当前CS:IP开始(通常是CS:100)。

注释:①在DEBUG下编写简单程序即使⽤A命令。

②每条指令后要按回车。

③不输⼊指令按回车,或按Ctrl+C结束汇编。

④⽀持所有8086符号硬指令,伪指令只⽀持DB、DW,不⽀持各类符号名。

跟踪命令(单步执⾏命令)T① T;从当前IP开始执⾏⼀条指令。

debug命令的基本使用

debug命令的基本使用

Debug的基本使用1.使用r命令查看或修改CPU寄存器的内容。

(1)使用r的命令查看:(2)使用r来改变寄存器中的内容:例如修改AX的值,就需输入“r ax”后按Enter键,在出现的“:”后面输入要写入的数据,并按Enter,再用r查看,修改成功,如图1所示。

图1用r来修改Ip的值,如图2所示。

2.用d来查看内存的内容。

(1)直接输入d,debug将输出3部分内容,如图3所示。

图3(2)可以使用“d 段地址:偏移地址”的格式,例如想查看内存10000H处的内容。

(3)在使用“d 段地址:偏移地址”之后,接着使用d命令,可列出后续的内容,如图5所示。

图5(4)使用d命令查看范围,格式为“d 段地址:起始偏移地址结尾偏移地址”。

例如要查看1000:0到1000:9中的内容,如图6所示。

图63.用e来改写内存中的内容。

(1)将内存1000:0-1000:9中的内容分别改为0、1、2、3、4、5、6、7、8、9,其格式为“e 起始地址数据数据数据。

”,如图7所示。

图7(2)用提问的方法改写内存的内容。

以1000:10为起始地址进行改写,其步骤为:输入“e 1000:10”,并按Enter,在显示光标后面输入想要修改的内容,如果想停止输入,就按Enter,继续就按空格键。

(在显示光标后面直接按空格键,则表示不对当前内存单元进行改写)(3)用e向内存中写入字符。

(4)用e命令向内存中写入字符串。

(5)用e命令向内存中写入机器码,用u命令查看内存中机器码的含义,用t命令执行内存中的机器码。

例如要从内存1000:0单元开始写入机器码:b80100b9020001c8,其方法如图8所示。

图8用u将从1000:0开始的内存单元中的内容翻译为汇编指令并显示出来。

(见图9)使用t命令可以执行CS:IP指向的指令。

(图10)图10执行T命令后,cpu执行CS:IP指向的指令,则1000:0处的指令b8 01 00(mov ax,0001)得到执行。

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

五、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=0000
DI=0000 DS=3000 ES=23A0 CS=138E IP=0000
NV UP DI PL NZ NA PO NC
138E:0000 MOV AX,1234
-R AX ;输入命令
AX 0014 ;显示AX的内容
:;供修改,不修改按回车。

若对标志寄存器进行修改,输入:-RF
屏幕显示如下信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。

NV UP DI PL NZ NA PO NC
不修改按回车键。

要修改需个别输入一个或多个此标志的相反值,再按回车键。

R命令只能显示、修改16位寄存器。

(4)显示存储单元命令D
格式1:D[起始地址]
格式2:D[起始地址][结束地址|字节数]
功能:格式1从起始地址开始按十六进制显示80H个单元的内容,每行16个单元,共8行,每行右边显示16个单元的ASCII码,不可显示的ASCII码则显示“·”。

格式2显示指定范围内存储单元的内容,其他显示方式与格式1一样。

如果缺省起始地址或地址范围,则从当前的地址开始按格式1显示。

例如:-D 200 ;表示从DS:0200H开始显示128个单元内容
-D 100 120 ;表示显示DS:0100-DS:0120单元的内容
说明:在DEBUG中,地址表示方式有如下形式:
段寄存器名:相对地址,如:DS:100
段基值:偏移地址(相对地址),如:23A0:1500
(5)修改存储单元命令E
格式1:E[起始地址] [内容表]
格式2:E[地址]
功能:格式1按内容表的内容修改从起始地址开始的多个存储单元内容,即用内容表指定的内容来代替存储单元当前内容。

例如:—E DS:0100 'V AR' 12 34
表示从DS:0100 为起始单元的连续五个字节单元内容依次被修改为
'V'、'A'、'R'、12H、34H。

格式2是逐个修改指定地址单元的当前内容。

如:—E DS:0010
156F:0010 41.5F
其中156F:0010单元原来的值是41H,5FH为输入的修改值。

若只修改一个单元的内容,这时按回车键即可;若还想继续修改下一个单元内容,此时应按空格键,就显示下一个单元的内容,需修改就键入新的内容,不修改再按空格跳过,如此重复直到修改完毕,按回车键返回DEBUG“-”提示符。

如果在修改过程中,将空格键换成按“-”键,则表示可以修改前一个单元的内容。

(6)运行命令G
格式:G[=起始地址][第一断点地址[第二断点地址……]]
功能:CPU从指定起始地址开始执行,依次在第一、第二等断点处中断。

若缺省起始地址,则从当前CS:IP指示地址开始执行一条指令。

最多可设置10个断点。

(7)跟踪命令T
格式:T[起始地址][正整数]
功能:从指定地址开始执行‘正整数’条指令,若缺省‘正整数’,表示执行一条指令,若两项都缺省,表示从当前CS:IP指示地址开始执行一条指令。

(8)指定文件命令N
格式:N<文件名或扩展名>
功能:指定即将调入内存或从内存写入磁盘的文件名。

该命令应该用在L命令和W命令之前。

(9)装入命令L
格式1:L[起始地址][盘符号][扇区号][扇区数]
格式2:L[起始地址]
功能:格式1根据盘符号,将指定扇区的内容装入到指定起始地址的存储区中。

格式2将N命令指出的文件装入到指定起始地址的存储区中,若省略起始地址,则装入到CS:100处或按原来文件定位约定装入到相应位置。

(10)写磁盘命令W
格式1:W<起始地址>[驱动器号]<起始扇区><扇区数>
格式2:W[起始地址]
功能:格式1把指定地址开始的内容数据写到磁盘上指定的扇区中。

格式2将起始地址的BX×10000H+CX个字节内容存放到由N命令指定的文件中。

在格式2的W命令之前,除用N命令指定存盘的文件名外,还必须将要写的字节数用R命令送入BX和CX中。

(11)退出命令Q
格式:Q
功能:退出DEBUG,返回到操作系统。

以上介绍的是DEBUG常用命令,其他命令请参考有关书籍。

附:
DEBUG 使用:
1、打 DEBUG 进入 DEBUG,显示提示苻 '_ '。

2、退出DEBUG命令:Q
3、显示内存命令:D 起始地址结束地址
4、修改内存命令:E 起始地址,连续修改打空格键。

打回车键退出E命令。

5、检查寄存器命令:R
标志位显示 1 0
CF CY NC
ZF ZR NZ
SF NG PL
AF AC NA
OF OV NV
PF PE PO
DF DN UP
IF EI DI
6、修改寄存器命令:R 寄存器名
7、小汇编命令:A 起始地址,不输入指令打回车键退出A命令。

8、反汇编命令:U 起始地址结束地址
9、文件命名命令:N 盘号:文件名
10、读文件命令:L 内存地址
11、写文件命令:W 内存地址
10、读扇区命令:L 内存地址盘号(0--A:,1--B:) 扇区号扇区数
11、写扇区命令:W 内存地址盘号扇区号扇区数
12、运行命令:G=起始地址结束(断点)地址
13、单步命令:T=起始地址运行指令数,进入子程序内部。

14、单步命令:P=起始地址运行指令数,不进入子程序内部。

15、内存搬家命令:M 起始地址结束地址目的地址。

相关文档
最新文档