DEBUG的使用
实验一DEBUG的使用
实验一 DEBUG 的使用实验目的:1.学习使用.学习使用DEBUG DEBUG DEBUG程序的各种命令。
程序的各种命令。
程序的各种命令。
2.掌握.掌握8088/868088/868088/86指令系统指令系统指令系统---------算数指令。
算数指令。
算数指令。
3.掌握用.掌握用DEBUG DEBUG DEBUG调试自编程序的方法。
调试自编程序的方法。
调试自编程序的方法。
4.掌握.掌握8088/8086 CPU 8088/8086 CPU 寄存器的用途和存储器组织及它们之间的关系。
寄存器的用途和存储器组织及它们之间的关系。
寄存器的用途和存储器组织及它们之间的关系。
5.掌握内存操作数及寻址方法。
.掌握内存操作数及寻址方法。
6.掌握汇编语言伪操作.掌握汇编语言伪操作:BYTE PTR,WORD PTR :BYTE PTR,WORD PTR。
内容及步骤:一、一、DEBUG DEBUG 命令使用命令使用: :1、 敲 DEBUG 进入进入进入 DEBUG DEBUG 环境,显示提示符环境,显示提示符环境,显示提示符 '_ ' '_ '。
2、 用命令用命令 D100 10F D100 10F 观察内存中的观察内存中的161616进制码及屏幕右边的进制码及屏幕右边的进制码及屏幕右边的ASCII ASCII ASCII字符。
字符。
字符。
3、 用命令用命令 E100 30 31 32 E100 30 31 32 ………… 3F 3F 将30H 30H~~3FH 3FH写入地址为写入地址为写入地址为100H 100H 100H开始的内存单元中,开始的内存单元中,再用再用D D 命令观察结果,看键入的命令观察结果,看键入的161616进制数是什么字符的进制数是什么字符的进制数是什么字符的ASCII ASCII ASCII码码?4、 用命令用命令 F100 10F 'A' F100 10F 'A' 将'A''A'的的ASCII ASCII码填入内存,用码填入内存,用码填入内存,用D D 命令查看结果。
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”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址: 偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
debug命令的使用
1.打开Windows命令窗口在Windows 95/98的环境中,打开命令窗口的步骤为:点击“开始”→“运行”,输入“command”命令;在WindowsXP及WIN7的环境中,打开命令窗口的步骤为:点击“开始”→“运行”,输入“cmd”命令;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。
观看命令执行结果。
运行结果的前一个数是计算出来的和,后一个数是计算出来的差。
DEBUG使用方法简介
2.3 DEBUG使用方法简介:DEBUG是DOS命令,必须在DOS环境下运行。
由于目前都使用WINDOWS操作系统,应设法进入实地址模式的DOS环境,才能可靠地运行DEBUG。
一般可用DOS启动盘启动系统,或在WINDOWS-98系统退出时选择“切换到MSDOS”操作,进入到实地址模式的DOS环境。
由于DEBUG是DOS外部命令,因此,须把DEBUG.EXE文件拷贝到当前目录下来运行DEBUG,DOS启动盘中应事先拷贝有DEBUG.EXE文件,在WINDOWS98系统中,“C:\WINDOWS\COMMAND\”目录下有DEBUG.EXE文件。
后面的操作,假设DEBUG.EXE文件都已事先拷贝到当前目录下。
在WINDOWS操作系统中(包括WINDOWS98、2K、XP等),系统提供了V86模式的“命令提示符”窗口,在此窗口中也能运行DEBUG,但DEBUG的某些功能会受到WINDOWS系统的限制。
1.启动与退出DEBUG:启动DEBUG,在DOS提示符下输入:DEBUG[回车]屏幕显示“-”,表示已启动了DEBUG。
“-”是DEBUG子命令等待状态,后面所有的DEBUG操作(包括运行调试自编的汇编语言程序)都是在此“-”提示符下所进行的DEBUG 子命令执行。
退出DEBUG,在“-”提示符下输入:Q[回车]屏幕显示DOS命令提示符:C:\> 或A:\> 。
2.进入与退出输入汇编指令:在“-”提示符下输入:A [偏移地址] [回车]屏幕显示“<段地址>:<偏移地址> |”,此处将等待你输入汇编语言程序或实验指令。
当一条指令输入完毕[回车]后,又将自动出现下一对“<段地址>:<偏移地址> |”等待你输入下条指令,如此重复,将帮助你把整段汇编语言程序输入完毕。
注意:如果输入汇编指令时手误,屏幕上将当场提示错误“ERROE”,自动地址不进步,还在原地址上等待你重新输入正确的汇编指令。
debug 的使用
Debug是一种程序调试工具,主要用于帮助程序员检查和修复程序中的错误。
以下是如何使用Debug的基本步骤:
设置断点:断点是一种标记,告诉Debug从标记的地方开始查看。
在要设置断点的代码行上单击鼠标左键即可。
运行程序:在代码区域右击,选择Debug执行。
单步执行:点击Step Into(F7)这个箭头,或者直接按F7,以一行一行地操纵代码,从而判断程序的执行流程是否与预期一致。
查看变量值:在执行过程中,可以查看变量的当前值,以了解程序状态。
删除或禁用断点:选择要删除的断点,单击鼠标左键即可。
如果是多个断点,可以每一个再点击一次。
也可以一次性全部删除。
以上是使用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”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
DEBUG的使用方法
DEBUG的使用方法1.设置断点:断点是在代码中设置的一个位置,程序在运行到这个位置时会暂停执行。
可以在关键的代码行上设置断点,以便在程序运行到这些位置时进行观察和调试。
在DEBUG工具中,我们可以在代码行上单击左侧的空白区域来设置断点。
2.执行步进:步进是一种按步执行程序的方法,可以逐行或逐过程执行代码。
通过逐行执行代码,可以观察每一行代码的执行情况,以便找出程序中的错误。
可以使用DEBUG工具提供的步进功能,一次执行一行代码或一个过程。
3.观察变量:在程序运行过程中,可以观察和监视变量的值,以便了解程序的状态。
可以使用DEBUG工具来查看变量的值,并在程序执行过程中跟踪变量的变化。
这对于发现变量值的改变和问题的根源非常有帮助。
4.输出调试信息:在调试过程中,可以通过在代码中插入输出语句来输出调试信息。
可以使用DEBUG工具提供的输出窗口或控制台来查看这些调试信息。
输出调试信息有助于了解程序的执行流程,找到错误发生的原因。
5.检查堆栈:堆栈是保存程序执行状态的一种数据结构,可以在DEBUG工具中查看和跟踪堆栈的状态。
堆栈信息可以告诉我们程序的执行路径,以及代码是如何调用和返回的。
通过检查堆栈,我们可以找到错误发生的上下文和调用链。
6.使用断言:断言是一种在代码中插入的条件,用于检查程序执行过程中的假设和要求。
可以使用DEBUG工具中的断言功能,在关键的代码位置插入断言条件。
当断言条件不满足时,程序会执行中断操作,从而帮助我们快速定位错误。
7.进行追踪:追踪是一种记录程序执行过程的方法,可以在DEBUG工具中查看程序的执行轨迹。
追踪记录了程序的每一步操作,包括函数调用、条件语句的执行和变量的修改等。
通过追踪,我们可以逐步了解程序的执行情况,并找到错误所在。
8.使用条件断点:条件断点是一种在特定条件下触发断点的方法。
可以在DEBUG工具中设置条件断点,当满足特定条件时,程序会在断点处暂停执行。
条件断点可以帮助我们找出特定情况下的错误,提高调试的效率。
实验一 DEBUG的使用
源程序:MOV AL,30H
MOV BL,26H
ADD AL,BL
PUSH AX
POP DX
MOV AH,02H
INT常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
0AF4:0108 int 21
0AF4:010Amov dl,43
0AF4:010Cint 21
0AF4:010E int 20
0AF4:0110
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF4 ES=0AF4 SS=0AF4 CS=0AF4 IP=0100 NV UP EI PL NZ NA PO NC
:0206 CD20 INT 20H ;结束
步骤:a.用E命令将目标代码写入内存CS:0200H~0207H
—E DS:200 B2,33,B4,02,CD,21,CD,20
b.用G命令从200H开始执行。
—G=CS:200
屏幕显示:
3
Program terminated normally.
—
c.用U命令反汇编
(2)用键盘,将AX,BX,CX,DX及DS,ES清0。
2.简单程序的执行:
(1)用E命令输入一段程序并执行,其源程序,目标代码及地址分配如下:
CS:0200 B233 MOV DL,33H ;将十六进制数‘33’存入DL中
:0202 B402 MOV AH,02H ;DOS2号功能调用
:0204 CD21 INT 21H ;屏幕显示DL内容
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是一种在软件开发过程中用于调试程序的工具。
它可以帮助开发人员找到程序中的错误并进行修复,从而提高程序的质量和稳定性。
下面将介绍Debug的基本使用方法。
1. 设置断点
断点是Debug中最常用的功能之一。
它可以让开发人员在程序执行到指定位置时暂停程序,以便进行调试。
设置断点非常简单,只需要在
代码行号左侧单击鼠标即可。
2. 运行程序
设置好断点后,就可以运行程序了。
在运行过程中,程序会执行到第
一个断点处停止。
此时可以查看变量值、函数调用栈等信息来分析问题。
3. 单步执行
单步执行是指逐条执行代码,并查看每个语句的效果。
这个功能非常
有用,因为它能够帮助开发人员深入了解代码的执行过程,并找出可
能存在的错误。
4. 监视变量
监视变量可以让开发人员实时查看变量值的变化情况。
当某个变量值发生改变时,Debug会自动提示开发人员,并显示新值和旧值之间的差异。
5. 调试崩溃
当程序崩溃或出现异常时,Debug可以帮助开发人员快速定位问题。
在这种情况下,开发人员可以使用Debug来查看程序的状态、变量值等信息,并找出导致程序崩溃的原因。
总之,Debug是一种非常有用的工具,它可以帮助开发人员快速定位问题并进行修复。
掌握Debug的基本使用方法对于提高软件质量和稳定性非常重要。
DEBUG命令的功能及使用
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命令的使用
实验一Debug命令的使用一、实验说明1、 DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。
在汇编语言程序调试中很常用。
DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。
DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。
DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。
(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。
2、 Debug的调入和退出以Windows环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态,如:C:\Documents and Settings\mjy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。
退出Debug的命令:Q3、 Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。
若不指定地址,则系统从默认的地址开始存放。
按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。
(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。
若未指定寄存器,则默认为显示所有寄存器的内容。
应用:常用于通过寄存器的值查看指令的执行结果。
(3)内存单元内容的命令E,格式为:- E 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。
DEBUG的使用及调试方法
DEBUG的使用及调试方法在软件开发过程中,调试是非常重要的一环。
调试是指通过排除软件中的错误或故障,确定程序的正确性和可靠性的过程。
在调试过程中,开发者需要使用各种工具和技术来定位和解决问题,其中DEBUG是一种常用的调试工具。
1.打印调试信息:在代码中添加打印语句,将关键信息输出到控制台或日志文件中。
这个方法简单直接,可以帮助开发者快速定位问题。
然而,过多的打印语句会对程序的性能造成影响,并且需要手动添加和移除。
2.使用断点:断点是调试器提供的一种功能,可以在代码中设置一个断点,当程序执行到断点时,会暂停执行。
开发者可以在断点处检查变量的值,观察程序的执行流程。
调试器还提供了单步执行、继续执行等功能,可以逐行调试程序。
使用断点可以直观地观察程序的执行过程,快速找到错误。
3.日志记录:使用日志记录可以在代码中记录程序的执行过程和状态,以便后续分析。
使用日志记录可以避免过多的打印语句,同时日志记录可以输出到文件中,便于离线分析。
常见的日志记录框架有log4j、logback等,它们提供了丰富的配置选项,可以方便地控制日志的输出级别和格式。
4.调试工具:调试工具是一种集成了多种调试功能的软件,可以帮助开发者更方便地进行调试。
常见的调试工具有Eclipse、Visual Studio等。
调试工具提供了丰富的调试功能,包括断点设置、变量查看、堆栈跟踪等,可以大大提高调试的效率。
5.远程调试:在分布式系统中,可能需要在远程机器上调试程序。
远程调试是一种通过网络连接到目标机器,对程序进行调试的方法。
远程调试需要在目标机器上开启调试端口,并在调试工具中配置远程调试参数。
远程调试可以在开发者的本地环境中进行调试,避免了在目标机器上进行调试的麻烦。
6.单元测试:单元测试是一种通过编写测试代码来验证程序的正确性的方法。
单元测试可以模拟程序的输入和输出,隔离程序中的错误。
在测试过程中,可以使用断言语句来判断程序的输出是否符合预期。
汇编_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. 汇编命令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(调试)是指在程序中寻找和修复错误(bug)的过程。
调试工具可以帮助程序员快速定位和解决问题。
下面是一些常用的调试技术和工具:
1. 打印调试信息:使用print语句或日志来输出程序中的变量
值和执行路径。
这可以帮助你理解程序的执行流程和变量的状态。
2. 断点调试:使用调试器(如Visual Studio Code或PyCharm 等)在代码中设置断点。
程序将在断点处停下来,使你可以逐行查看代码的执行情况,并在需要时检查变量的值。
3. 单步调试:使用调试器提供的单步执行功能,逐行执行代码。
这样可以逐步追踪程序的执行路径,并检查每个语句的结果。
4. 监视变量:在调试器中设置监视点,让程序在特定条件下停下来,以便检查变量的值和状态。
这对于查找引起问题的特定变量很有帮助。
5. 异常捕获:使用try-except块捕获异常,并在异常处理器中
打印或记录异常信息。
这样可以帮助你确定程序中可能导致错误的位置。
6. 单元测试:编写测试用例来验证代码的正确性。
如果测试用
例失败,它可以帮助你确定代码中的错误。
7. 查找错误信息:仔细阅读程序输出和错误信息,这些信息通常会指示问题所在的位置和原因。
请记住,调试是一个需要实践和经验的过程。
随着你的经验增长,你会变得更快地找出问题并解决它们。
Debug的使用方法
显示存储单元的命令D(DEBUG)
格式为: - D[address] 或 - D[range] 例如,按指定范围显示存储单元内容的方法为:
-D 100 120 067C:0100 067C:0110 067C:0120 ( 或 D 100 L21 ) C7 D7 0D 0A 32 33 33 34 - D5 C5 B4 C6 30 10 42 0C 03 41 42 43 44 45 46 47 - 48 49 4A 4B 4C 4D 4E 4F 8B ....2334....0.B. .ABCDEFGHIJKLMNO
装入命令L(Load)
1. 把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中
格式: -L[address [drive sector sector]] 2. 装入指定文件 格式: -L[address] 此命令装入已在CS:5CH中格式化了的文件控制块所指定的文件。 如未指定地址,则装入CS:0100开始的存储区中。
运行命令G(Go)
格式: -G [=address1][address2[address3 ...]] 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。 后面的地址均为断点地址,当指令执行到断点时,就停止执行 并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
检查和修改寄存器内容的命令R(Register)
2. 显示和修改某个寄存器内容
格式: -R register_name
例如,
- r ax
系统将响应如下:
AX F1F4 :
即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,键入欲修改的内容如:
- r bx BX 0369 :059F
Debug的使用方法
Debug的使用方法在软件开发过程中,经常会遇到各种bug和错误。
为了解决这些问题,开发人员需要使用debug工具进行调试。
本文将介绍debug 的使用方法,帮助读者快速定位和修复程序中的错误。
一、什么是debugDebug是一种用于查找和修复程序错误的技术。
通过使用debug 工具,开发人员可以跟踪程序的执行过程,查看变量的值和代码的执行路径,以及定位代码中的错误。
二、常用的debug工具1. IDE集成的debug工具:大多数集成开发环境(IDE)都提供了内置的debug工具,如Visual Studio、Eclipse等。
通过在IDE 中设置断点,开发人员可以逐步执行程序,并在每个断点处查看变量的值和代码的执行路径。
2. 命令行debug工具:除了IDE集成的debug工具,还有一些独立的命令行debug工具,如gdb、lldb等。
这些工具可以通过命令行参数设置断点、查看变量的值等。
三、使用debug工具的基本步骤1. 设置断点:在需要调试的代码行上设置断点。
断点可以是一个代码行,也可以是一个条件语句。
当程序执行到断点时,会暂停执行,并进入debug模式。
2. 执行程序:运行程序,并触发断点。
程序在执行到断点时会暂停,等待开发人员进行调试操作。
3. 查看变量的值:在debug模式中,开发人员可以查看变量的值。
可以逐步执行程序,每次执行一行代码,并在每个断点处查看变量的值。
如果发现变量的值与预期不符,就可以定位问题所在。
4. 跟踪代码的执行路径:在debug模式中,开发人员可以逐步执行程序,查看代码的执行路径。
通过观察代码的执行路径,可以发现代码中的逻辑错误。
5. 修复错误:当定位到错误时,开发人员需要修复错误。
可以通过修改代码、添加条件语句等方式来解决问题。
修复错误后,重新执行程序,验证修复效果。
四、debug技巧和注意事项1. 使用日志输出:在调试过程中,可以通过输出日志信息来跟踪程序的执行。
DEBUG使用方法
DEBUG使用方法为了解决问题和改进程序,我们经常需要在代码中进行调试。
调试是指通过检查代码的执行过程,找出可能的错误和问题,并修复它们。
在本文中,我们将介绍一些常见的调试技术和工具,帮助您进行有效的调试。
1.打印输出:打印输出是调试的最基本方法之一、通过在代码中插入打印语句,我们可以跟踪代码的执行流程和变量的值。
例如,在关键位置添加`print`语句来输出变量的值,以便了解其当前状态。
这种方法对于追踪代码执行路径和确定错误发生的地点非常有用。
但是,它不适用于大型程序或复杂的问题,因为太多的输出可能会让您迷失在信息中。
2.断点调试:断点调试是一种先进的调试技术,可以暂停程序的执行,以便我们可以检查和修改程序的状态。
通过在代码中设置断点,我们可以在程序执行到该点时暂停执行,并查看变量的值、执行的路径等信息。
在现代集成开发环境(IDE)中,我们可以通过单击代码行号或调试菜单来设置断点。
一旦程序执行到断点位置,调试器将暂停执行,我们可以检查变量的值并逐行执行代码,以便找出问题。
3.单步调试:与断点调试相似,单步调试也允许我们逐行执行代码并检查变量的值。
单步调试是一种逐行执行代码的方法,让我们可以了解代码执行的顺序和路径。
在单步调试中,我们可以逐行执行代码,并在每一步之后检查变量的值和程序状态。
这对于发现代码执行的异常路径、循环错误和边界条件非常有用。
4.调试器:调试器是一种针对软件调试的工具,它可以帮助我们通过提供图形界面和功能来检查程序的状态、执行流程和变量的值。
调试器通常集成在IDE中,提供了单步执行、设置断点、查看变量和堆栈跟踪等功能。
使用调试器,我们可以直观地了解程序的状态,并快速找到问题所在。
5.注释和重构:注释是一种记录代码用途和解释的方法,可以帮助我们理解程序的目的和逻辑。
通过添加注释,我们可以提高代码的可读性,并减少问题的发生。
在调试过程中,我们可以使用注释来解释代码块的用途、关键数据结构和预期输出,以便更好地理解问题。
DEBUG使用
北京化工大学信息科学与技术学院
马 静
1
调试程序DEBUG
调试程序DEBUG就是用来调试汇编语言程序的一种工具。 主要功能: ¾ 显示、修改REG、MEM的内容 ¾ 按指定地址启动并执行程序 ¾ 设置断点 ¾ 反汇编被调试程序 ¾ 单条追踪或多条追踪被执行程序 Nhomakorabea2
一、启动和退出DEBUG
3
在启动DEBUG时,将CPU各个寄存器和标志设置为以下状态: ¾ 4个段寄存器(CS,DS,SS和ES)置为指向自由内存空间的底部 (最小地址)。 ¾ 指令指针寄存器IP之外0100H ¾ 堆栈指针寄存器SP置为段的末尾处与的 暂驻部分的低地址中较低者。 ¾ 其余的寄存器(AX,BX,CX,DX,BP,SI,DI)置为0。
1、启动DEBUG (1) 进入DOS系统 Win2000系统:程序 附件 命令提示符,进入DOS 系统,如果不在根目录,使用CD..命令回到根目录,再使用 C:回到C盘根目录 Win98系统:直接在程序下选择MS-DOS方式,进入DOS系统。 其余与Win2000系统下相同。 (2) 启动DEBUG 在C盘根目录下输入DEBUG,按回车键,即可启动DEBUG。 此时可看到闪动的光标。
12
2、运行命令G -G [=address] [breakpoint] Address:指定开始执行指令的地址,如不写,从当前CS:IP 寄存器指定的地址开始跟执行。 breakpoint:指定断点地址。必须写 例:-G =0100 0120 回车 该命令将从CS:0100H 开始执行程序,执行到CS:0120H处 中止。即执行保存在CS:0100H到CS:011FH存储空间内的 程序。
8
A、修改该寄存器的值 AX 0000 :1020 该寄存器的内容会变为1020H B、不修改该寄存器的值 AX 0000 :回车 该寄存器的内容不改变 3. 显示标志寄存器的内容 -RF 回车 NV UP EI PL NZ NA PO NC- 若按下回车键,则保持每个标志位不变,若想修改某个标志位, 可输入此标志位的相反值,顺序无关。 9
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
实验一的主要作业
00 d8 add al, bl 00 dc add ah, bl 00 c7 add bh, al b4 00 mov ah, 0 00 d8 add al, bl 04 9c add al, 9CH 提示:可用E命令和A命令以两种方式将指令写入内存。 提示:可用E命令和A命令以两种方式将指令写入内存。注意 命令执行时,CS:IP的指向 用T试工具 实验一 使用DEBUG调试工具
Debug的 (7)用Debug的A命令以汇编指令的形式在内存 中写了机器指令 示例: 示例:用A命令,输入下列程序并运行 命令, -a 1000:0 mov ax, 1 mov bx, 2 mov cx, 3 add ax, bx add ax, cx add ax, ax 直接按Enter键结果输入。 命令将cs修改成1000 ip修改 cs修改成1000, 直接按Enter键结果输入。 用r命令将cs修改成1000,ip修改 Enter键结果输入 再执行t命令,单步执行程序。执行T命令时,CPU执行 成0,再执行t命令,单步执行程序。执行T命令时,CPU执行 CS:IP执行的指令并将IP加 执行的指令并将IP CS:IP执行的指令并将IP加1.
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
(6)用Debug的 (6)用Debug的E命令改写内存中的内容
用Debug的E命令改写内存中的内容; Debug的 命令改写内存中的内容; 使用"e 数据..." ..."的格式来进行 使用"e 起始地址 数据 数据 数据..."的格式来进行 如将内存1000:0 1000:9单元中的内容分别写为 1000:0单元中的内容分别写为0 如将内存1000:0-1000:9单元中的内容分别写为0、1、2、3、 4、5、6、7、8、9 -e 1000:0 0 1 2 3 4 5 6 7 8 9 也可以采用提问方式一个一个修改内存中的内容, 也可以采用提问方式一个一个修改内存中的内容,如 输入e 1000:0, Enter键 输入修改的数据, 输入e 1000:0,按Enter键 输入修改的数据,再按空格键输 入下一个要修改的数据,最后Enter键结束操作。 Enter键结束操作 入下一个要修改的数据,最后Enter键结束操作。 输入字符串的格式: 输入字符串的格式:如-e 1000:10 1 'a' 2 "c++" 3 "IBM" 将输入1 3IBM到相应单元 将输入1 a+b 2 c++ 3IBM到相应单元
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
向内容中写入机器码, 向内容中写入机器码,如 (代表 b80100 (代表 mov ax, 0001), (代表 b90200 (代表 mov cx, 002), (代表 cx), 01c8 (代表 add ax, cx), 那么输入c8就将该程序输入 那么输入-e 1000:0 b8 01 00 b9 02 00 01 c8就将该程序输入 内容1000:0 1000:0处 内容1000:0处 使用u命令- 1000:0可以将内存单元中的内容翻译成汇编指令 使用u命令-u 1000:0可以将内存单元中的内容翻译成汇编指令 如果要执行该程序,首先用r命令将cs修改成1000 ip修改成 cs修改成1000, 修改成0 如果要执行该程序,首先用r命令将cs修改成1000,ip修改成0 再执行t命令,单步执行程序。执行T命令时,CPU执行 ,再执行t命令,单步执行程序。执行T命令时,CPU执行 CS:IP执行的指令并将IP加 执行的指令并将IP CS:IP执行的指令并将IP加1.
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
实验一的主要作业
使用Debug,将下面的程序段写入内容,逐条执行, Debug,将下面的程序段写入内容 (1) 使用Debug,将下面的程序段写入内容,逐条执行,观察每 条指令执行后,CPU中相关寄存器中内容的变化 中相关寄存器中内容的变化。 条指令执行后,CPU中相关寄存器中内容的变化。 机器码 汇编指令 b0 20 4e mov ax, 4E20H 05 16 14 add bx, 1416H bb 00 20 mov bx, 20000H 01 d8 add ax, bx 89 c3 mov bx, ax 01 d8 add ax, bx b8 1a 00 mov ax, 001AH bb 26 00 mov bx, 0026H
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
实验一的主要作业
(3) 查看内存中的内容 PC机主板上的ROM中写有一个生产日期 在内存FFF00H 机主板上的ROM中写有一个生产日期, FFF00HPC机主板上的ROM中写有一个生产日期,在内存FFF00HFFFFFH的某几个单元中 请找到这个生产日期并试图改变它。 的某几个单元中, FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。 (4) 向内存从B8100H开始的单元中填写数据 “I am a student” 向内存从B8100H开始的单元中填写数据 student B8100H 并显示出来. 并显示出来. 作业提交:每道题做完以后将AX,BX, CX,DX和DS,CS,IP的取 作业提交:每道题做完以后将AX,BX, CX,DX和DS,CS,IP的取 值记录到作业本上
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具 补充材料
实验一 使用DEBUG调试工具 使用DEBUG DEBUG调试工具
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
(1) 进入DEBUG 进入DEBUG 方法1:在Windows开始菜单中单击运行命令,直接在 运行对话框中输入"DEBUG" 方法2:在运行对话框中输入"CMD"启动DOS命令窗口后 输入"DEBUG" 方法3:在程序、附件、命令提示符,启动DOS命令窗口 后输入"DEBUG"
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
(4) 用Debug的R命令查看、改变CPU寄存器的内容; Debug的 命令查看、改变CPU寄存器的内容; CPU寄存器的内容
R命令用来显示和修改寄存器的值,包括以下两种格式。 命令用来显示和修改寄存器的值,包括以下两种格式。 1. R 显示所有寄存器和8个标志位的值,并反汇编CS:IP所指的指 显示所有寄存器和8个标志位的值,并反汇编CS:IP所指的指 CS:IP 令。 R<寄存器名 寄存器名> 2. R<寄存器名> 显示指定寄存器的值,并等待用户键入新的值, 显示指定寄存器的值,并等待用户键入新的值,按回车键结 命令。 束R命令。
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
(5)用Debug的 (5)用Debug的D命令查看内存中的内容
D命令可以查看内存中的内容,D命令的格式较多,只介绍本 命令可以查看内存中的内容, 命令的格式较多, 次实验中用到的格式,8086/8088CPU能够访问1M内容 能够访问1M内容, 次实验中用到的格式,8086/8088CPU能够访问1M内容,D命令 可以显示0000:0000H FFFF:FFFFH中的任何一个单元的内存 0000:0000H可以显示0000:0000H-FFFF:FFFFH中的任何一个单元的内存 如果想知道内存10000H处的内容,可以用"d 段地址: 10000H处的内容 如果想知道内存10000H处的内容,可以用"d 段地址:偏移地 的格式来查看, 址"的格式来查看,如输入 -d 1000:0 1000:9查看1000:9处的内容 查看1000:9处的内容。 使用 d 1000:9查看1000:9处的内容。 9查看1000:0-1000:9的内容 查看1000:0 使用 d 1000:0 9查看1000:0-1000:9的内容 一进入Debug 可直接使用D命令直接查看,将列出Debug Debug, Debug预设 一进入Debug,可直接使用D命令直接查看,将列出Debug预设 的地址处的内容
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
DEBUG命令格式 (2) DEBUG命令格式
DEBUG的每个命令都是一个字母,后跟一个或多个参数。 DEBUG的每个命令都是一个字母,后跟一个或多个参数。下面对 的每个命令都是一个字母 DEBUG命令作几点说明 命令作几点说明。 DEBUG命令作几点说明。 字母不分大小写。 字母不分大小写。 字母不分大小写 只使用16进制数,且不能带后缀H。 只使用16进制数,且不能带后缀H 只使用16进制数 以空格或逗号作为命令各项之间的分隔符。分隔符只在两个数 以空格或逗号作为命令各项之间的分隔符。 以空格或逗号作为命令各项之间的分隔符 值之间是必须的。 值之间是必须的。 可以用Ctrl-C或Ctrl-Break终止命令的执行。 可以用CtrlCtrl-Break终止命令的执行。 可以用Ctrl 终止命令的执行 若输入的命令有语法错误,则提示“Error”,并用“^”指出错误 若输入的命令有语法错误,则提示“Error ,并用“ 指出错误 若输入的命令有语法错误 位置。 位置。
使用DEBUG DEBUG调试工具 实验一 使用DEBUG调试工具
实验一的主要作业
将下面3条指令写入从2000:0开始的内存单元中,利用这3 2000:0开始的内存单元中 (2) 将下面3条指令写入从2000:0开始的内存单元中,利用这3 条指令计算2 条指令计算2的8次方 mov ax, 1 add ax, ax jmp 2000:003 (注:jmp指令将CS:IP转移到2000:003) jmp指令将CS:IP转移到2000:003) 指令将CS:IP转移到2000:003