1DEBUG命令的功能及使用

合集下载

debug指令详解

debug指令详解

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.学习使用.学习使用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.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使用方法简介

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是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。

它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。

它的功能包括以下几个方面。

1,直接输入,更改,跟踪,运行汇编语言源程序;2,观察操作系统的内容;3,查看ROM BIOS的内容;4,观察更改RAM内部的设置值;5,以扇区或文件的方式读写软盘数据DEBUG把所有数据都作为字节序列处理。

因此它可以读任何类型的文件。

DEB UG可以识别两种数据: 十六进制数据和ASCⅡ码字符。

它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。

在DEBUG中输入数据有两种方法: 提示方法和非提示方法。

在用提示方法时,用户可以输入要求输入数据的命令,后跟数据所要输入的地址。

然后用户就可以看到该地之中已有内容及一个冒号提示符。

此时用户可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到短横(-)提示符。

在运用非提示方法时,用户可以输入要输入数据的内存地址以及要输入的字节。

但与使用字处理程序或正文编辑程序时不一样,在使用DEBUG时,用户不能直接移动光标到一入口点输入或修改数据,而要一次输入一个或几个字节。

在使用DEBUG时可以只涉及内存中的数据,从而一般都要指定所要处理的内存地址,地址的输入格式是: [段地址]: [位移]。

如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。

前100H字节保留给程序段前缀使用,这一专用区域用于建立DOS与程序之间的联系。

DEBUG总是用四位十六进制数表示地址。

用两位数表示十六进制数据。

讲到这里大家应该对DEBUG有了初步的了解,但是光知道这些可不够,接下来我来讲讲DEBUG的命令格式和命令。

DEBUG命令详解

DEBUG命令详解

命令行参数形式:格式: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命令的使用

实验一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的使用
三.对以下源程序进行调试,记录下每一条指令的目标代码,相应寄存器变化情况和程序的最终执行结果。
源程序: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的命令及功能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的命令都是一个字母,后跟一个或多个参数:字母 [参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。

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

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

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

如果没有提供偏移地址,则通常就是当前偏移地址。

对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址结束地址”(结束地址不能具有段地址),或者是:“开始地址 L字节长度”。

D(Dump)命令显示主存单元的内容,它的格式如下(注意分号后的部分用于解释命令功能,不是命令本身):D [地址];显示当前或指定开始地址的主存内容D [范围];显示指定范围的主存内容例如,显示当前(接着上一个D命令显示的最后一个地址)主存内容:左边部分是主存逻辑地址,中间是连续16个字节的主存内容(16进制数,以字节为单位),右边部分是这16个字节内容的ASCII字符显示,不可显示字符用点“.”表示。

一个D命令仅显示“8行×16个字节”(80列显示模式)内容。

再如:-d 100;显示数据段100h开始的主存单元-d cs:0;显示代码段的主存内容-d2f0 L20;显示ds:2f0h开始的20h个主存数据E(Enter)命令用于修改主存内容,它有两种格式:E 地址;格式1,修改指定地址的内容E 地址数据表;格式2,用数据表的数据修改指定地址的内容格式1是逐个单元相继修改的方法。

例如,键入“e ds:100”,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命令的功能及使用功能: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各命令详细说明(很详细)

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熟悉指令功能和寻址方式一、实验性质:验证型二、实验目的:掌握debug的使用,能建立和运行汇编语言程序掌握寻址方式DEBUG的命令DEBUG的命令都用单个字母表示,其后可以跟一个或多个参数,参数之间用空格或逗号分隔。

DEBUG的命令参数大多数是地址或地址范围,其地址书写格式为:[段地址:]偏移地址其中的段地址可以用段寄存器名表示,也可以用一个十六进制数表示。

如:ES:10043A5:200地址范围的书写格式为:Ⅰ.[段地址:]起始偏移地址终止偏移地址Ⅱ.[段地址:]起始领衔地址L长度如:CS:10010F和CS:100L10所指的地址范围是一致的。

当输入的命令不正确时,DEBUG将在该行底下指出错误所在。

注意:在DEBUG下,输入的数据和显示的数据都是十六进制数,不用在数据后加“H”A汇编与反汇编命令1.汇编命令A格式:A[地址]功能:从键盘输入汇编程序,并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。

说明:如果不指定汇编地址,则以CS:IP为地址。

例:0BB6:0000-0005写入三条指令。

2.反汇编命令U格式:U[地址]/[地址范围]功能:将指定地址范围内的机器代码翻译成汇编源程序指令显示出来,并同时显示地址及代码。

注意:反汇编时一定确认指令的起始地址,否则得不到正确的结果。

例:反汇编看CS:0005-0011单元的指令。

B显示与修改内存单元内容的命令1.显示内存单元内容命令D格式1:D[地址]格式2:D地址范围只写一个D,表示显示从当前地址单元开始的128个单元中的字节数据说明:D命令在屏幕上显示的内容分为三部分,左边是每一行存储单元的起始地址,中间是各字节单元的内容,右边是各单元内容对应的ASCII码字符(不可显示的字符用"."代替)。

指定要显示的单元的逻辑地址,即写出完整的段地址和偏移地址。

指定要显示数据区起始单元的地址和最后一个单元的地址。

DEBUG命令详解1

DEBUG命令详解1

DEBUG命令详解DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。

它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。

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 参数指定内存位置。

Address 是一个包含字母段记录的二位名称或一个四位字段地址加上一个偏移量。

可以忽略段寄存器或段地址。

a,g,l,t,u 和w 命令的默认段是CS。

所有其他命令的默认段是DS。

所有数值均为十六进制格式。

有效地址如下:CS:010004BA:0100在段名和偏移量之间要有冒号。

指定有效范围项Debug 命令中的range 参数指定了内存的范围。

DEBUG的使用及调试方法

DEBUG的使用及调试方法

DEBUG的使用及调试方法在软件开发过程中,调试是非常重要的一环。

调试是指通过排除软件中的错误或故障,确定程序的正确性和可靠性的过程。

在调试过程中,开发者需要使用各种工具和技术来定位和解决问题,其中DEBUG是一种常用的调试工具。

1.打印调试信息:在代码中添加打印语句,将关键信息输出到控制台或日志文件中。

这个方法简单直接,可以帮助开发者快速定位问题。

然而,过多的打印语句会对程序的性能造成影响,并且需要手动添加和移除。

2.使用断点:断点是调试器提供的一种功能,可以在代码中设置一个断点,当程序执行到断点时,会暂停执行。

开发者可以在断点处检查变量的值,观察程序的执行流程。

调试器还提供了单步执行、继续执行等功能,可以逐行调试程序。

使用断点可以直观地观察程序的执行过程,快速找到错误。

3.日志记录:使用日志记录可以在代码中记录程序的执行过程和状态,以便后续分析。

使用日志记录可以避免过多的打印语句,同时日志记录可以输出到文件中,便于离线分析。

常见的日志记录框架有log4j、logback等,它们提供了丰富的配置选项,可以方便地控制日志的输出级别和格式。

4.调试工具:调试工具是一种集成了多种调试功能的软件,可以帮助开发者更方便地进行调试。

常见的调试工具有Eclipse、Visual Studio等。

调试工具提供了丰富的调试功能,包括断点设置、变量查看、堆栈跟踪等,可以大大提高调试的效率。

5.远程调试:在分布式系统中,可能需要在远程机器上调试程序。

远程调试是一种通过网络连接到目标机器,对程序进行调试的方法。

远程调试需要在目标机器上开启调试端口,并在调试工具中配置远程调试参数。

远程调试可以在开发者的本地环境中进行调试,避免了在目标机器上进行调试的麻烦。

6.单元测试:单元测试是一种通过编写测试代码来验证程序的正确性的方法。

单元测试可以模拟程序的输入和输出,隔离程序中的错误。

在测试过程中,可以使用断言语句来判断程序的输出是否符合预期。

实验一--掌握DEBUG-的基本命令及其功能

实验一--掌握DEBUG-的基本命令及其功能

实验一--掌握DEBUG-的基本命令及其功能实验一掌握DEBUG 基本命令及其功能【上篇】查看CPU和内存,用机器指令和汇编指令编程一.实验目的:掌握DEBUG 的基本命令及其功能掌握win7 win8 使用DEBUG功能二.实验内容:1. 预备知识:Debug的使用(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。

使用它,可以查看CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。

(3) 进入DebugDebug是在DOS方式下使用的程序。

我们在进入Debug前,应先进入到DOS方式。

用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。

②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。

三.实验任务解决方案1. 从网上下载Dosbox和debug.exe(文件夹中有)。

2. d ebug.exe放在D:根目录,然后安装,安装完成以后,点击快捷方式进入Dos界面:3.输入mount c d:\ 接着输入c:01 d8 add ax,bx89 c3 mov bx,ax01 d8 add ax,bxb8 1a 00 mov ax,001AH bb 26 00 mov bx,0026H 00 d8 add al,bl00 dc add ah,bl00 c7 add bh,alb4 00 mov ah,000 d8 add al,bl04 9c add al,9CH提示:可用E命令和A命令以两种方式将指令写入内存。

debug 命令使用祥解

debug 命令使用祥解

debug 命令使用祥解前段时间我在学习汇编语言,发现这语言不是太难学,他里面的算法思想和高级语言都是一样的,我在学这个之前学过c++ ,所以我才这样说的,学习一门语言固然重要,但是学会使用你所用的平台去调试也很重要,下面这个实验是我们现在正在上的接口原理实验,debug命令使用都是我们教员自己总结的,感觉很好,所以就发过来供大家分享。

实验1 DEBUG调试命令练习一、实验目的1、熟悉DEBUG调试程序的常用命令;2、掌握利用DEBUG命令查看和修改CPU中寄存器及内存单元内容的方法;3、学会汇编、反汇编、运行和调试简单程序段的方法。

二、实验内容和步骤1、Debug程序的启动方法1:键入debug后回车只是装入Debug程序,并没指定要调试程序;方法2:相继装入Debug程序和要调试的程序格式:[路径] debug filename屏幕上出现提示符“-”注意:filename必须是可执行文件,要带扩展名exe2、Debug程序的退出在提示符“-”后输入“Q”回车即可。

3、D命令功能:显示数据段中指定单元或单元块的内容。

【例1】D1000↙结果显示128(80H)个字节的内容,一行16个字节,共8行。

其中每一行的第一列是数据段段寄存器DS的当前值,第二列是每一行的第一个字节在段中的偏移量,中间是16个单元的内容(十六进制),单元地址依次加1。

最右边是该单元内容(十六进制形式的ASCII码)所对应的字符。

【例2】D DS:1000↙结果显示和上例相同,因此在没有定义具体的数据段时,可以省略DS。

【例3】D 1234:1000↙结果显示数据段中以1234H为段地址、偏移量从1000H开始的128个单元的内容。

该例定义了显示范围,显示结果的段地址不一定是段寄存器DS中的当前内容,而是一个指定的段地址。

【例4】D 1234:1000 100F↙结果显示数据段中以1234H为段地址、偏移量从1000H开始到100FH结束的16个单元的内容。

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命令实用使用说明文件

5)单步跟踪执行程序 )
6)执行后检查源数据区和目标数据区 )
注意, 命令输入指令时, 注意,用A命令输入指令时,如果输入错误 命令输入指令时 如果输入错误debug会立 会立 即指出错误和位置。地址不会变化, 即指出错误和位置。地址不会变化,以便用户修正指 令。
附加2 附加2 汇编语言上机过程 5.0上机过程 第一步编辑: 用MASM 5.0上机过程 第一步编辑:
附加1 DEBUG验证程序段 附加1 用DEBUG验证程序段
DEBUG 程序是专门为汇编语言设 计的一种调试工具,它通过单步、跟 踪、断点和连续等方式为程序员提供 了非常有效的调试手段。 格式: DEBUG [驱动器][路径][文件名][参数] DEBUG主要命令表 DEBUG主要命令表
命令 汇编
MOV AX,1200H
例2: :
MOV BX,3400H MOV CX,5600H PUSH CX PUSH AX PUSH BX POP CX POP AX POP BX AX=___________ CX=___________ BX=___________
标志 溢出OF 溢出 方向DF 方向 中断IF 中断 符号SF 符号 零位ZF 零位 辅助AF 辅助 奇偶PF 奇偶 进位CF 进位
为1时 时 OV DN EI NG ZR AC PE CY
为0时 时 NV UP DI PL NZ NA PO NC
再举一个有访存操作的例子 MOV SI, 0050H MOV DI, 0100H MOV CX, 5 CLD REP MOVSB ; (DS)=2000H ; (ES)=3000H
这是还未执行的 下一条指令的地 址和指令码
这是还未执行 的下一条指令 的反汇编
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一DEBUG命令的功能及使用
一实验目的
掌握汇编语言基本运行环境和熟悉DEBUG调试程序的命令。

包括:学习使用指令,掌握常用的指令功能和简单程序设计;掌握DEBUG调试程序的命令,熟悉程序输入、存储器和CPU寄存器及标志位的检查方法,单步、断点、连续等运行程序的调试方法。

二实验内容
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 <范围> <单元内容表>
功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。

例如:-F 5BC:200 L 10 B2,‘XYZ’,3C <Enter>
5.执行命令G
格式:G [=<地址>[,<断点>]]
上式等价于:
(1)G
(2)G=<地址>
(3)G=<地址>,<断点>
功能: 执行内存中的指令序列
注:(1)从CS:IP所指处开始执行
(2)从指定地址开始执行
(3)从指定地址开始执行,到断点自动停止。

6.内存搬家命令M
格式:M <源地址范围> <目标起始地址>
其中源及目标地址若仅输入偏移量,则隐含相对DS。

功能:把<源地址范围>中的内容顺序搬至<目标起始地址>起的一片连续单元。

例如:-M CS:100 110 600
把从CS:100起至CS:110止17个字节搬至DS:600至DS:610的一片单元。

7.结束DEBUG返回DOS命令Q
格式:Q
功能:返回DOS提示符下
8.显示修改寄存器命令R
格式:R [<寄存器名>]
上式等价于:
(1)R
(2)R <寄存器名>
功能:(1)显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句形式。

其中对状态标志FLAG以每位的形式显示,见下表。

(2)显示指定寄存器内容
例如:-R AX <Enter>
-R F <Enter>
9.执行并显示系统环境命令T
格式:T [=<地址>] [<条数>]
功能:执行由指定地址起始的、由<条数>指定的若干条命令。

其中<地址>的缺省值是当前IP值,<条数>的缺省值是一条。

例如:-T <Enter> 执行当前指令并显示状态
-T 10 <Enter> 从当前指令始执行10H条指令
10.反汇编命令U
格式:U [<地址>/<地址范围>]
上式等价于:
(1)U <地址>
(2)U <地址范围>
(3)U
功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。

注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。

地址及范围的缺省值是上次U 指令后下一地址的值。

这样可以连续反汇编。

三实验例程及步骤
例1 在DEBUG下运行如下程序。

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

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

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

运行步骤:
(1)进入DEBUG,用A命令送程序并汇编,见图1.1。

(2)用反汇编U 命令显示程序,图1.2为反汇编命令显示结果。

图中右边是汇编指令,中间是该汇编指令的机器码,左边是存放该条指令的内存单元地址。

(3)用执行命令G 执行程序,图1.3为执行结果。

(4)用E 命令送机器指令程序并用D 命令显示内存,运行过程见图1.4。

图1.1 汇编程序过程
图1.2 反汇编命令U 的显示结果
图1.3 执行命令G 的显示结果
图1.4 送机器指令并显示内容结果
(5)再次用执行命令G执行程序,图1.5为执行结果。

图1.5 G命令执行结果
(6)Q命令退出DEBUG返回DOS。

例2 在DEBUG下运行下述程序,查看执行结果。

MOV AX,0FEH ;被乘数0FEH送AX
MOV CL,2
SHL AX,CL ;被乘数乘以4,结果送AX
MOV BX,AX ;被乘数乘以4的结果送BX保留
MOV CL,2
SHL AX,CL ;被乘数乘以16,结果送AX
ADD AX,BX ;被乘数乘以20,结果在AX中
MOV [300H],AX ;将积存入DS段第300H—301H号内存单元
MOV AH,4CH ;将功能号4CH送AH
INT 21H ;执行DOS的4CH号功能调用,结束程序返回DOS。

该程序运行结果是将0FEH乘以14H,结果放在DS段第300H-301H号内存单元中。

(1)进入DEBUG,显示300H至301H号内存单元内容,见图1.6。

(2)用A 命令装入程序段并汇编,见图1.7。

(3)用T 命令执行到断点处(程序正常结束前)停止,执行“-T=100,8 <Enter>”后的结果见图1.8。

(4)用D 命令显示300H 至301H 的内容(最终结果),如图1.9
所示。

图1.6 D 命令显示结果
图1.7 用A 汇编程序
图1.8 用T 命令执行到断点处的结果
图1.9 用D命令显示最终结果
(5)用Q命令退出DEBUG环境,返回DOS。

四预习要求
1.安装并熟悉ASM汇编语言编译环境。

2.预习DEBUG的相关命令。

3.复习教材指令系统章节内容,熟悉8086/8088指令系统。

五实验报告要求及思考
1.根据实验描述汇编语言的编译过程,并画出相关流程框图;书写对教材指令系统等相关的实验结果。

2. 总结Debug调试程序的方法。

3.思考题。

下面是一个2字节非压缩BCD码加的程序,试分析程序中被加数和加数以及和分别存放在哪些寄存器中,程序中CH有何作用。

阅读后再设计一个2字节非压缩BCD码减法程序。

然后分别计算56+98=?,90-15=?,并查看各寄存器的内容。

MOV CH,AH
ADD AL,BL
AAA
XCHG AL,CH
ADC AL,BH
AAA
MOV AH,AL
MOV AL,CH
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。

可复制、编制,期待你的好评与关注)。

相关文档
最新文档