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系统的使用一、DEBUG的作用DEBUG是DOS提供的用于程序调试的系统,作为DOS的外部命令随DOS的其它外部命令一起由DOS的提供产商向用户提供。
因此用户在使用DEBUG系统时一定要注意当前用户所使用的DOS 的外部命令中是否提供该命令(若DOS命令不全,有可能没有此命令)。
二、DEBUG的使用1、DEBUG的调用由于DEBUG是DOS的外部命令,因此必须在DOS的提示符状态下进行调用。
调用的方法如下:C:\>DEBUG [FILENAME]此处FILENAME应是文件的全名,即应包括文件的主名和扩展名(若文件有扩展名),如文件不在当前目录,则还因包括文件所存放的目录名。
但文件名也可以省略,此时表示(暂时)不调用任何文件。
(DOS的提示符不一定是“ C:\> ”,可以是其它的形式,请使用者根据具体情况自行确定。
)当进入了DEBUG系统后,系统的状态是在屏幕的左边显示一短杠:-此时用户可以在此进行相应的调试工作。
用户也可以在调入DEBUG系统的同时调入要调试的程序,调用的方法如下:C:\>DEBUG 若在当前目录中能找到相应的文件,则系统在屏幕的左边显示一短杠:-若在当前目录中能找不到相应的文件,则系统在屏幕上显示:file not find并在屏幕的左边显示一短杠:-注意:DEBUG调试程序只能调用当前目录的文件。
2、DEBUG的调试命令(1)汇编命令A(Assemble)格式:A[address]说明:address 是要进行汇编程序(编码)输入的首地址,可省略。
如:-a16D8:0100 mov ah,216D8:0102 mov al,116D8:0104 mov bx,020016D8:0107 mov cx,000116D8:010A mov dx,000116D8:010D int 1316D8:010F int 316D8:0110-或:-a20016D8:0200 mov ah,216D8:0202 mov al,116D8:0204 mov bx,020016D8:0207 mov cx,000116D8:020A mov dx,000116D8:020D int 1316D8:020F int 316D8:0210-如在操作过程中有错误,系统会及时地通知操作者并要求操作者重新输入。
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[[drive:][path]filename[testfile-para meters]]参数:[drive:][path]filename指定待调试可执行文件的所在位置及文件名。
testfile-parameters指定待设计可执行文件需要的命令参数。
相关命令-A (汇编,Assemble)-C (比较,Compare)-D (卸出,Dump)-E (输入数据,Enter))-F (填充,Fill)-G (执行,Go)-H (十六进行运算,Hex)-I (读输入口,Input)的所在位置及名子,DEBUG执行时将显示符(-)。
这时,用户可输入任何一个DEBUG调试命令。
DEBUG命令以下为DEBUG使用的调试命令及其简介:?显示所有的调试命令A汇编8086/8087/8088汇编语言源程序。
C比较两块内存的内容。
D显示部分内存的内容。
E人指定的地址开始把数据送入内存。
F将指一值填进某一范围的内存。
G运行内存中的程序。
H执行十六进制算术运算。
I从指定输入口输入一道字节值。
L把文件或磁盘扇区内容装入内存。
M拷贝某块内存的内容。
N指定文件名,以便L或W命令读写该文件;指定正调试文件所需的参数。
O发送一字节值至指定输出口。
P执行循环程序,重复字符串指令,软中断,或子程序。
Q结束DEBUG命令执行。
R显示或修改一个或数个寄存器内容。
S在内存指定范围内找寻指定的值。
T执行一条指令,然后显示所有寄存器的内容,所有标志状态,以及下一条要执行的指令(汇编语言格式)。
U反汇编某一范围内的字节,显示其相应汇编语言源语名。
W把正调试文件写入磁盘。
XA分配扩充内存XD释放分配的扩充内存。
XM作扩充内存页的影像。
XS显示扩充内存的状态。
命令参数间的隔离除命令Q外,所有的调试命令都可使用参数。
参数间可用逗号或空格隔开,但只是在十六进制数之间才要求必须隔开。
因此,下列命令是等价的:dcs: 100 110D CS: 100 110D,CS:100,110指定有效地址调试命令中的addres(地址)参数指定内存中的地址。
debug 的使用
Debug是一种程序调试工具,主要用于帮助程序员检查和修复程序中的错误。
以下是如何使用Debug的基本步骤:
设置断点:断点是一种标记,告诉Debug从标记的地方开始查看。
在要设置断点的代码行上单击鼠标左键即可。
运行程序:在代码区域右击,选择Debug执行。
单步执行:点击Step Into(F7)这个箭头,或者直接按F7,以一行一行地操纵代码,从而判断程序的执行流程是否与预期一致。
查看变量值:在执行过程中,可以查看变量的当前值,以了解程序状态。
删除或禁用断点:选择要删除的断点,单击鼠标左键即可。
如果是多个断点,可以每一个再点击一次。
也可以一次性全部删除。
以上是使用Debug的基本步骤,但请注意,具体使用方式可能会根据Debug的具体版本和配置有所不同。
DEBUG的使用方法
DEBUG的使用方法1.设置断点:断点是在代码中设置的一个位置,程序在运行到这个位置时会暂停执行。
可以在关键的代码行上设置断点,以便在程序运行到这些位置时进行观察和调试。
在DEBUG工具中,我们可以在代码行上单击左侧的空白区域来设置断点。
2.执行步进:步进是一种按步执行程序的方法,可以逐行或逐过程执行代码。
通过逐行执行代码,可以观察每一行代码的执行情况,以便找出程序中的错误。
可以使用DEBUG工具提供的步进功能,一次执行一行代码或一个过程。
3.观察变量:在程序运行过程中,可以观察和监视变量的值,以便了解程序的状态。
可以使用DEBUG工具来查看变量的值,并在程序执行过程中跟踪变量的变化。
这对于发现变量值的改变和问题的根源非常有帮助。
4.输出调试信息:在调试过程中,可以通过在代码中插入输出语句来输出调试信息。
可以使用DEBUG工具提供的输出窗口或控制台来查看这些调试信息。
输出调试信息有助于了解程序的执行流程,找到错误发生的原因。
5.检查堆栈:堆栈是保存程序执行状态的一种数据结构,可以在DEBUG工具中查看和跟踪堆栈的状态。
堆栈信息可以告诉我们程序的执行路径,以及代码是如何调用和返回的。
通过检查堆栈,我们可以找到错误发生的上下文和调用链。
6.使用断言:断言是一种在代码中插入的条件,用于检查程序执行过程中的假设和要求。
可以使用DEBUG工具中的断言功能,在关键的代码位置插入断言条件。
当断言条件不满足时,程序会执行中断操作,从而帮助我们快速定位错误。
7.进行追踪:追踪是一种记录程序执行过程的方法,可以在DEBUG工具中查看程序的执行轨迹。
追踪记录了程序的每一步操作,包括函数调用、条件语句的执行和变量的修改等。
通过追踪,我们可以逐步了解程序的执行情况,并找到错误所在。
8.使用条件断点:条件断点是一种在特定条件下触发断点的方法。
可以在DEBUG工具中设置条件断点,当满足特定条件时,程序会在断点处暂停执行。
条件断点可以帮助我们找出特定情况下的错误,提高调试的效率。
debug+的使用
如果想知道内存10000H处的内容,可以用"d 段地址:偏移 地址"的格式来查看,如输入 -d 1000:0 使用 d 1000:9查看1000:9处的内容。 使用 d 1000:0 9查看1000:0-1000:9的内容 一进入Debug,可直接使用D命令直接查看,将列出Debug预设 的地址处开始128个字节单元的内容
汇汇编编语语言言程程序序设设计计实验
四、Debug常用命令
? 显示 Debug 命令列表。
T 执行一条指令,然后显示
R 显示或改变一个或多个寄 所有寄存器的内容
存器的内容
P 执行循环、重复的字符串
D 显示查看内存中的内容。 指令、软件中断或子例程。
E 从指定地址开始,将数据输 不跟踪内部。
入到内存,即改写内存的内容。
汇汇编编语语言言程程序序设设计计实验
3、E命令
格式: E <地址> [<单元内容表>] (1) E <地址>
功能: 不断显示地址,可连续键入修改内容,直至新地址出现后 键入回车Enter为止。 (2) E <地址> <单元内容表> 其中<单元内容表>是以空格分隔的十六进制数,或用’或” 括起来的字符串,或者是二者的组合。
功能:将<单元内容表>逐一写入由<地址>开始的一片单元。 如将内存1000:0-1000:9单元中的内容分别写为0、1、2、3、
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简介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的使用(1)
实验二Debug的使用(一)一、实验要求和目的1.熟悉Debug环境。
2.掌握常用Debug命令的基本操作。
二、软硬件环境1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。
三、实验涉及的主要知识单元在以后所有的实验中,都将用到Debug程序,首先学习一下它的主要用法。
(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
Debug的命令比较多,共有20多个,但上述6个命令是和汇编语言学习密切相关的。
在以后的实验中,我们还会用到一个P命令。
(3) 进入DebugDebug是在DOS方式下使用的程序。
我们在进入Debug前,应先进入到DOS方式。
用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。
②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。
下面说明在Windows XP中进入Debug的一种方法,在Windows 98中进入的方法与此类似。
单击【开始】菜单中的【运行】命令,打开【运行】对话框,在文本框中输入“command”后,单击【确定】按钮。
图2-1 选择【运行】命令图2-2 在文本框中输入“command”进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变为全屏方式。
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命令的功能及使用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-PC之开山老祖Debug 原意是杀虫子。
这里是机器调试工具。
其实,Debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。
同时,许多台大型的计算机也在不停的运行着。
大概是由于,机器过热,引来许的小虫子,以至于,计算机无法正常运行。
科学们,只好停下来,捉虫子...虫子捉完了,计算机运行也正常了,后来,这个名词就沿用至今了....虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!接下来,我们就一起学习Debug在各方面的运用吧!(在杀毒、加解密、系统...)下面我和大家一起学习一些,Debug 的用法,虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!Debug常用命令集名称解释格式a (Assemble) 逐行汇编a [address]c (Compare) 比较两内存块c range addressd (Dump) 内存16进制显示d [address]或d [range]e (Enter) 修改内存字节e address [list]f (fin) 预置一段内存f range listg (Go) 执行程序g [=address][address...]h (Hexavithmetic) 制算术运算h value valuei (Input) 从指定端口地址输入i pataddressl (Load) 读盘l [address [driver seetor]]m (Move) 内存块传送m range addressn (Name) 置文件名n filespec [filespec...]o (Output) 从指定端口地址输出o portadress byteq (Quit) 结束qr (Register) 显示和修改寄存器r [register name]s (Search) 查找字节串s range listt (Trace) 跟踪执行t [=address] [value]u (Unassemble) 反汇编u [address ]或rangew (Write) 存盘w [address[driver sector secnum]]? 联机帮助?debug小汇编a命令debug小汇编a命令是一个很有用的功能,许多的小程序都要他来做。
实验二 DEBUG使用方法
实验二DEBUG使用方法一、实验目的1.熟悉DEBUG提供的调试环境。
2.学习使用Debug的常用命令,汇编、运行小段程序。
3.学习8088/8086的寻址方式、指令功能。
观察计算机执行简单程序的工作过程。
二、实验内容与操作指导Debug子命令的功能与使用格式见上章的列表介绍。
下面通过8个程序小段实例,学习其用法。
(一)由DOS进入DEBUG调试环境1.点击”开始”→程序→附件→命令提示符→DEBUG ↵将调试程序装入内存注意:当机器控制权由DOS成功地转移给调试程序后,将显示“—”号,它是debug的状态提示符,表示可以接受调试子命令了。
2. —R↵显示CPU中各寄存器当前初始内容。
请记录于下列各项,后面实验将用到。
AX= BX= CX= DX= BP= SI= DI=DS= ES= SS= SP= CS= IP=(1)此时,调试工作区的4个段值相同,指向同一起点。
表明共用一个64KB空间。
(2)SS:SP指向堆栈顶单元。
SP为FFFE或FFEE,正好是本段的最高可用地址。
表明堆栈自动使用最高地址,栈区由底往上(低址方向)生长。
(3)CS:IP为约定的调试工作区地点(IP=0100),可由此装入待调试程序代码,或汇编键入的程序小段。
工作区由(低址)往下使用。
(4)Debug用符号给出寄存器中8个标志位的当前状态。
其含义如下表所示。
(5)当运行程序至断点处停下时,或单步多步跟踪执行指令时,Debug均显示各寄存器的当时内容,便于及时观察结果。
(二)汇编运行小段程序1.1求和运算给程序1.1人工直接给寄存器赋初值(1) 给AX、BX赋值—RAX ↵AX 显示AX当前内容:FDAA 键入被加数—RBX ↵BX 显示BX当前内容:FBCE 键入加数(2) 汇编小段程序。
注意:每行指令后用回车结束,机器即进行汇编,出错将有提示。
调试状态下操作数的输入和显示均为HEX十六进制,故不必加后缀H。
—ACS:100 ↵:0100 ADD AX,BX ;求和:0102 MOV CX,AX ;转存和数:0104 INT 20 ;结束程序(软中断调用):0106 ↵;结束汇编—R ↵查看各寄存器内容。
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. 使用日志输出:在调试过程中,可以通过输出日志信息来跟踪程序的执行。
kafka debug用法
kafka debug用法Kafka的debug用法主要是通过启用debug模式来输出更详细的日志信息,帮助开发者在调试和排查问题时更容易定位错误。
在Kafka中使用debug模式有两种方式:1. 在Kafka的配置文件中设置debug参数:在`server.properties`文件中,可以找到以下参数:```propertieslog4j.rootLogger=INFO, stdout```可以将`log4j.rootLogger`的值改为`DEBUG, stdout`,然后重新启动Kafka,就可以在控制台上看到更详细的日志输出。
这些日志包括Kafka的各种操作、网络请求、消息处理等信息,对于调试和排查问题非常有用。
2. 在代码中设置debug参数:在Java代码中,可以使用`System.setProperty()`方法来设置debug参数。
例如,可以在Kafka的启动代码中添加以下语句:```javaSystem.setProperty("kafka.logs.dir", "/path/to/logs");System.setProperty("log4j.configuration","/path/to/log4j.properties");System.setProperty("log4j.rootLogger", "DEBUG,stdout");```这样会使用指定的日志文件和日志级别来输出详细的debug 日志信息。
无论是在配置文件中设置还是在代码中设置debug参数,都需要谨慎使用,因为debug模式会生成大量的日志信息,可能会对系统的性能产生一定影响。
因此,在生产环境中使用debug 模式应该避免或仅在必要时启用,并在完成调试后及时关闭debug模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DEBUG使用方法启动DEBUG程序,DEBUG程序用于调试可执行文件。
格式:DEBUG[[drive:][path]filename[testfile-parameters]]参数:[drive:][path]filename指定待调试可执行文件的所在位置及文件名。
testfile-parameters指定待设计可执行文件需要的命令参数。
相关命令A(汇编,Assemble)C(比较,Compare)D(卸出,Dump)E(输入数据,Enter))F(填充,Fill)ADDG(执行,Go)H(十六进行运算,Hex)I(读输入口,Input)L(装入,Load)M(移动,MOVE)N(命令,NAME)O(写输出口,OUTPUT)P(调试循环程序,PROCEED)Q(退出,QUIT)R(寄存器,REGISTER)S(找寻,SEARCH)T(跟踪,TRACE)U(反汇编,UNASSEMBLE)W(写盘,WRITE)XA(分配扩充内存,ALLOCATE EM)XD(释放分配的扩充内存,DEALLOCATE EM)XM(扩展内存页影像,MAP EXM PAGES)XS(显示扩充内存状态,DISPLAY EM STATUS)二、注意事项不指定调试文件名时DEBUG命令的使用。
使用DEBUG命令时,如果未指定调试文件的所在位置及名子,DEBUG执行时将显示符(-)。
这时,用户可输入任何一个DEBUG调试命令。
DEBUG命令以下为DEBUG使用的调试命令及其简介:?显示所有的调试命令A汇编8086/8087/8088汇编语言源程序。
C比较两块内存的内容。
D显示部分内存的内容。
E人指定的地址开始把数据送入内存。
F将指一值填进某一范围的内存。
G运行内存中的程序。
H执行十六进制算术运算。
I从指定输入口输入一道字节值。
L把文件或磁盘扇区内容装入内存。
M拷贝某块内存的内容。
N指定文件名,以便L或W命令读写该文件;指定正调试文件所需的参数。
O发送一字节值至指定输出口。
P执行循环程序,重复字符串指令,软中断,或子程序。
Q结束DEBUG命令执行。
R显示或修改一个或数个寄存器内容。
S在内存指定范围内找寻指定的值。
T执行一条指令,然后显示所有寄存器的内容,所有标志状态,以及下一条要执行的指令(汇编语言格式)。
U反汇编某一范围内的字节,显示其相应汇编语言源语名。
W把正调试文件写入磁盘。
XA分配扩充内存XD释放分配的扩充内存。
XM作扩充内存页的影像。
XS显示扩充内存的状态。
命令参数间的隔离除命令Q外,所有的调试命令都可使用参数。
参数间可用逗号或空格隔开,但只是在十六进制数之间才要求必须隔开。
因此,下列命令是等价的:dcs: 100 110D CS: 100 110D,CS:100,110指定有效地址调试命令中的addres(地址)参数指定内存中的地址。
地址分两部分,一部分是段寄存器字母或4位的段地址,另一部分为偏移地址。
其中,段寄存器或段地址可以省略。
对命令A,G,L,T,U,W,默认段为CS,对所有其余命令,默认段为DS。
所有数值都为十六进制。
以下为有效地址:CS:010004BA:0100注意,在段名和偏移值之间要加冒号。
指定有效地址范围。
调试命令中的range(范围)参数指定内存中的地址范围。
地址范围有两种格式:开始地址和结束地址;开始地址和范围长度(由L指定)。
例如:从CS:100开始,到10F结束,共16字节范围,可使用两种格式说明:CS:100 10FCS:100 1 101、DEBUG:A(汇编)一、概述直接汇编8086/80878088汇编语言源程序,汇编结果放内存。
本命令将汇编语言语句转换成执行的机器码,语句中所有操作数据均为16进制,由1到4个字符组成。
格式:A[address]参数address指定输入汇编语言语句的地址。
地址为16进制数但实际输入时结尾不必加字符“h”,如果不指定地址,命令A将从上一次汇编结束地的地址开始。
相关命令有关在指定地址输入数据的具体说明,参阅DEBUG E命令有关反汇编的具体说明,参阅DEBUG U命令。
二、注意事项使用助记符地址段名助记符为CS:,DS:,ES:,SS:。
远程返回助记符为RETF。
字符串处理助记符必须根据其处理的字符串的长度选择使用。
例如,移动字串(16bits)使用MOVSW,移动字节串(8bits)使用MOVSB。
转移语句和子程序调用的汇编汇编命令将根据语句中地址字节移动自动汇编短,近,远转移或调用,生成目标地址。
用户也可以使用前缀NEAR或FAR直接说明这类转移或调用。
例如:-a0100:05000100:0500 jmp 502 ;2字节短转移,生成2字节目标地址。
0100:0502 jmp near 505 ;3字节近转移,生成4字节目标地址。
0100:0505 jmp for 50a ;5字节远转移,生成8(段+偏移)字节目标地址。
前缀NEAR可以省略为NE。
字内存地址和字节内存地址的区分当仅从操作数本身不能区分究竟是字内存地址还是字节内存地址是地,必须用前缀WORD PRT(字)或BYTE PTR(字节)指字其类型。
两者可省略为WO和BY,例如:dec wo[si]neg byte ptr[128]指定操作数DEBUG按常规认方括号内的操作为内存地址。
否则,为立即数。
例如:mov ax ,21 ;把数值21装入AXmov ax,[21] ;把内存21H单元的内容装入AX使用伪指令A命令使用常用的两个伪指令:DB和DW。
DB汇编字节,DW汇编字。
汇编后生成的值存入内存(分别以字节和字为单位存放)。
例如:db 1,2,3,4, "this is an example"db 'this ia a quotation mark:"db "this is a quoutation mark:'"dw 1000,2000,3000,"BACH"三、应用举例A命令支持所有各种形式的寄存器间接寻址指令,例如:add bx, 34[pb+2].[si-1]pop[bp+di]push[si]A命令支持同义操作代码,例如:loopz 100loope 100ja 200jnbe 200使用8087操作代码时,应加前缀W AIT或FWAIT,例如:fwait fadd st,st(3) ;this line assembles;ar fwait prefix2、DEBUG: C(比较)一、概述比较丙块内存的内容格式C range address参数range指定待比较的第一块内存的起始和结束地址,或其起始地址和长度。
有关本参数有效值的说明,参阅DEBUG命令。
address指定待比较的第二块内存的起始和结束地址,或其起始地址和长度。
有关本参数有效值的说明,参阅DEBUG命令。
二、注意事项如果比较的两块内存内容相同,DEBUG不显示任何信息,只返回DEBUG提示符,如果比较的内容有差别,将以下格式显示这些差别。
address1 byte1 btye2 address2三、应用举例以下两条命令的执行结果相同:cl100,10f 300c100L10 300两条命令都比较从100h到10Fh和从300h到30Fh的两块内存的内容。
DEBUG执行这两条命令时将显示与下面相似的信息(假定DS=197F):197F: 1000 4D E4 194F:0300197F: 0101 67 99 197F:0301197F: 0102 A3 27 194F:0302197F: 0103 35 F3 194F:0303197F: 0104 97 BD 197F:0304197f: 0105 04 35 197F:0305197F: 0107 76 71 197F:0307197F: 0108 E6 11 197F:0308197F: 0109 19 2C 197f:0309197F: 010A 80 0A 197F:030A197F: 010B 36 7F 197F:030B197F: 010C BE 22 197F:030C197F: 010D 83 93 197F:030D197F: 010E 49 77 197F:030E197F: 010F 4F 8A 197F:030F注意上表中缺地址197F:0106和197F:0306,这表示两个地址存放的数值相同。
3、DEBUG:D(卸出)一、概述显示指定范围内存的内容格式D[range]参数range指定要显示其内容的内存的起始地址和结束地址,或起始地址和长度。
有关范围有效值的说明,参阅DEBUG命令。
如未指定范围,将从上一次D命令显示的结束地址开始,显示128字节的内容。
相关命令有关寄存器内容的显示,参阅DEBUG R命令。
有关反汇编的说明,参阅DEBUG U命令。
二、注意事项D命令显示的内存内容分为两部分:十六进制值部分(字节值都显示十六进制的格式)和ASCII字符部分(显示与字节值对应的ASCII字符),无法显示的字符用圆点(.)表示每一行显示行显示16字节的内容,第8和第9字节间用短横线(-)隔开,每一显示行都从16字节边界处开始显示。
三、应用举例假设打入如下命令:dcs:100 10fDEGUG将显示类似如下格式的内容:04BA: 0100 54 4F04D000F53 41 57 59-52 00 00 00 00 00 00 TOM.SAWYERM......如随后再打入D命令但不指定范围,DEGUG将紧接着上次显示的最后地址(110)开始显示内存内容,格式同上;每一显示行显示的起始地址都比上一行的大16字节(如显示器屏幕为40列,则大8字节)。
如输入如下命令,DEGUG将从cs:100开始,显示20H字节内容:dcs:100 L 20(命令中L可为小写)如输入如下命令,DEGUG将显示CS段内从100H开始到115H为止的内容:dcs:100 1154、DEGUG: E(输入数据)一、概述输入数据到指定内存。
输入的数据可为16进制数,也可为ASCII字符。
指定内存在输入新数据后,原先的内容丢失。
格式E address[list]参数address指定要输入数据的第一个内存单元。
list指定要输入到内存连续单元的数据。
可以是一串16进制数或字符。
相关命令有关汇编命令的说明,参阅DEGUG A命令。
有关内存内容显示的说明,参阅DEGUG D命令。
二、注意事项使用address参数如果指定了地址但未指定LIST,DEGUG显示指定地址及其内容,等待用户输入。
此时,用户可作如下操作:输入新值。