实验二 汇编语言动态调试程序Debug的使用

合集下载

汇编实验报告(-)调试程序DEBUG的使用

汇编实验报告(-)调试程序DEBUG的使用

汇编实验报告(-)调试程序DEBUG的使用《汇编语言程序设计》实验报告实验一调试程序DEBUG 的使用一、实验目的通过实验掌握下列知识:1、DEBUG命令:A,T,D,F,G;2、数据在内存中的存放方式和内存操作数的几种寻址方式;3、汇编指令:INC,DEC,LOOP,INT 3的应用;4、汇编语言伪指令:BYTE PTR和WORD PTR的应用。

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

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

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

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

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

1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境,显示提示符 '- '。

2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。

注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。

3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。

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

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

实验二 汇编语言动态调试程序Debug的使用

实验二 汇编语言动态调试程序Debug的使用

实验二 Debug的使用(基础与验证型)一、实验要求和目的熟练掌握动态调试程序DEBUG的使用;二、软硬件环境1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2、软件环境:装有MASM 5.0、Debug、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。

三、实验涉及的主要知识单元通过编辑、汇编和连接后的程序是可以执行的程序。

但是,一个程序特别是比较复杂的程序不能保证没有一点错误。

因此,在投入正式运行前必须进行调试,以检查程序的正确性。

调试程序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个单元所对应的可显示的字符。

汇编语言实验_Debug命令的使用

汇编语言实验_Debug命令的使用

实验一Debug命令的使用一、知识点1、DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。

在汇编语言程序调试中很常用。

DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。

DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。

DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。

(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。

2、Debug的调入和退出以WIN2000环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态:C:\Documents and Settings\lfy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。

退出Debug的命令:Q3、Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。

若不指定地址,则系统从默认的地址开始存放。

按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。

(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。

若未指定寄存器,则默认为显示所有寄存器的内容。

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

(3)内存单元内容的命令E,格式为:- E 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。

DEBUG的使用及程序调试方法

DEBUG的使用及程序调试方法

实验一 DEBUG的使用及程序调试方法一.实验目的1、掌握常用DEBUG命令以及调试简单程序。

2、掌握常用汇编指令的功能及其书写格式。

3、掌握在DUBUG下进行简单程序设计并调试。

二.实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。

三.实验原理DEBUG是专门为汇编语言设计的调试工具软件,它通过单步、设置断点等方式,为使用者提供了非常有效的调试手段。

在DEBUG 下所有输入的数据都是十六进制,所以不需要后面加H。

并且不区分大、小写字母。

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

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

3、DEBUG的主要命令(1)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态,格式为:-RR命令显示中标志位状态的含义如下表所示:标志名置位复位溢出Overflow(是/否)OV NV 方向Direction(减量/增量)DN UP 中断Interrupt(允许/屏蔽)EI DI 符号Sign(负/正)NG PL 零Zero(是/否)ZR NZ 辅助进位Auxiliary Carry(是/否)AC NA 奇偶Parity(偶/奇)PE PO 进位Carry(是/否)CY NC2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如输入:-R AX系统将响应如下:AX F1F4:表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,输入修改后内容,如:-R BXBX 0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OV DN EI NG ZR AC PE CY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。

汇编实验报告--利用DEBUG调试汇编语言程序段

汇编实验报告--利用DEBUG调试汇编语言程序段

实验一利用DEBUG调试汇编语言程序段学生姓名:何茂杰学号:2010305104 专业班级:10级计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。

二、实验内容1.学会使用debug的A, U, T, D, E等命令。

2.编写一个程序计算Y=(X*U+V)/1000,X、Y、U、V(均为16位有符号二进制数)的存放地址自己确定。

分别使用两种以上的寻址方式对X、Y、U、V寻址。

三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;2.学会使用debug的A, U, T, D, E等命令。

五、主要实验步骤(一)学会使用DEBUG中的简单命令:1.打开DOS,开始——运行——cmd。

2.进入DEBUG,在DOS下输入DEBUG,直接进入。

3.在DEBUG中输入D,查看D命令结果,输入D 1000,查看指定地址的数据。

4.在DEBUG中输入E100,修改地址100的数据,再输入D100,查看修改后的结果。

5.在DEBUG中输入R,查看当前寄存器的内容。

6.在DEBUG中输入A,输入以下代码:mov ax,1234mov [1000],ax输入T显示第一条命令运行结果,再次输入T,显示第二条命令运行结果,输入d1000,验证命令运行结果。

7.在DEBUG中输入A,输入以下代码:mov ax,1234mov [1000],ax输入G [=起始地址] [结束地址]↓,再输入D1000,验证命令运行结果。

8.在DEBUG中输入U [起始地址] [结束地址],从[起始地址]开始进行反汇编。

9.在DEBUG中输入Q,推出DEBUG程序。

(二)用DEBUG验证乘法、除法、加法、减法等功能:1.验证加法和带进位加,使用A命令,在DEBUG中键入以下代码:mov ax,f111mov bx,f222mov cx,2mov dx,3add ax,bxadc cx,dx使用G命令查看结果2.验证减法和带借位减法,使用A命令,在DEBUG中键入以下代码:mov ax,2mov bx,3mov cx,5mov dx,2sub ax,bxsbb cx,dx使用G命令查看结果3.验证乘法和除法,使用A命令,在DEBUG中键入以下代码:乘法:mov al,b4mov bl,11mul bl使用G命令查看结果除法:mov ax,400mov bl,b4div bl使用G命令查看结果六、实验数据及处理结果反汇编:执行情况:七、思考题启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?答:进入DOS,输入DEBUG xxx.exe,其中xxx为文件名。

总汇编实验二用DEBUG程序调试程序功能段

总汇编实验二用DEBUG程序调试程序功能段

总汇编实验二用DEBUG程序调试程序功能段实验二主要是通过使用DEBUG程序调试汇编语言编写的程序功能段。

DEBUG是一个在DOS操作系统下的调试工具,它可以用来查看和修改内存中的程序和数据。

通过DEBUG,我们可以逐条执行程序功能段的指令,并观察其执行过程中的变化。

这有助于我们理解程序的运行原理,找出其中的错误,并进行调试和修复。

DEBUG程序的基本功能如下:1.查看内存中的程序和数据:DEBUG可以通过指定内存地址来查看内存中的内容。

我们可以使用d命令来显示指定地址范围内的内存内容。

这在调试程序时很有用,可以帮助我们检查变量的值是否正确。

2.修改内存中的程序和数据:DEBUG可以让我们修改内存中的程序和数据,从而实现调试和修复程序的功能。

我们可以使用e命令来修改指定地址处的内存内容。

3.单步执行程序:DEBUG可以将程序的执行过程分解为单条指令的执行,从而帮助我们逐步查看程序的执行情况。

我们可以使用t命令来单步执行程序。

4.中断程序的执行:DEBUG可以在程序执行过程中暂停执行,从而方便我们进行调试。

我们可以使用p命令来中断程序的执行。

5.显示寄存器的值:DEBUG可以显示CPU寄存器的值。

我们可以使用r命令来查看和修改寄存器的值。

这对于调试程序时检查寄存器的值非常有用。

6.显示和修改标志位:DEBUG可以显示和修改CPU的标志位。

我们可以使用f命令来查看和修改标志位的值。

这对于调试程序时检查标志位的值非常有用。

总而言之,DEBUG程序是一个功能强大的调试工具,可以帮助我们调试汇编语言程序的功能段。

通过它,我们可以查看和修改内存中的程序和数据,单步执行程序,中断程序的执行等等。

这些功能可以帮助我们找出程序中的错误,并进行调试和修复。

汇编实验二DEBUG调试实验

汇编实验二DEBUG调试实验

实验二应用DEBUG软件调试程序实验一、实验原理:Debug是DOS、Windows都提供的实模式程序的调试工具。

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

常用的DEBUG命令使用练习。

我们要用到的Debug功能如下:R命令查看、改变CPU寄存器的内容;D命令查看内存中的内容;E命令改写内存中的内容;U命令将内存中的机器码指令翻译成汇编指令;T命令执行一条机器指令,单步跟踪命令;A命令以汇编指令的格式在内存中写入一条机器指令;P命令,单步执行命令。

二、实验目的:通过DEBUG命令使用练习,掌握汇编的调试工具的使用,进而能够熟练使用调试命令对汇编程序的调试,修改程序运行中的错误,完善程序。

三、实验步骤:1.进入Dos环境,输入DEBUG后即可进入DEBUG。

2.练习使用r,d,,u,t,p,a,q等调试命令,查看各命令的功能和命令输入后的内存变化;四、实验任务:(一)使用Debug,将给出的程序段调入内存,逐条执行(1)用R命令查看CPU寄存器的内容,实验结果如下:用R命令改变CPU寄存器的内容,实验结果如下:(2)命令格式:d ds:100G命令执行前(kk00在内存中的地址:逻辑地址是13B3和物理地址是0100)G命令全数运行后实验结果如下u命令执行(二)利用Debug的E命令更改内存中的数据内容,将“kkkk”改为1vRT(三)利用Debug的A命令将如下程序段实现汇编指令的写入,并执行,用R命令进行查看寄存器值MOV DX,2233HMOV AH,10MOV CX,0FHMOV SI,11HMOV AL,12HAND AL,0FHMOV AH,0(四)查看内存中的内容PC机主板上的ROM中写有一个生产日期,在内存FFF000H~FFFFFH中的某个单元中,找出该生产日期,并尝试改变。

五、实验小结:(本次实验的心得体会,遇到的问题,解决方法以及掌握了什么、自己的感想之类的)。

汇编实验二用DEBUG程序调试程序功能段

汇编实验二用DEBUG程序调试程序功能段

汇编实验二用DEBUG程序调试程序功能段实验报告──学年第学期实验课程汇编语言学生姓名123实验项目DEBUG调试程序的使用学院计算机科学技术实验性质专业选修课班级学号实验地点同组人数 1 第组实验日期第周星期第节成绩5DOSBox-0.74环境参数一、实验目的及要求二、实验原理、实验内容三、实验仪器设备及材料四、操作方法与实验步骤五、实验数据记录及处理六、实验结果分析及讨论一:1.继续学习使用DEBUG程序的各种命令。

2.利用DEBUG学习了解计算机取指令、执行指令的工作过程。

3.掌握8086/8088基本指令的使用方法和功能。

二:实验任务1.按照下列给定步骤完成求累加和程序:程序:MOV BX,1000MOV CX,10MOV AL,0LOP: ADD A L,[BX]INC BXJ: LOOP LOPINT3步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

2)用命令N AA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址) ,用R命令把BX设为:0000H,CX 设为文件长度。

4)用命令W 100将此程序存到AA命名的磁盘文件中。

5)用命令Q退出DEBUG。

6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。

若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。

7)用E命令在内存地址1000H处键入16个数字8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。

符合预期。

9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样, 若不一样,检查程序是否有错。

10)重复G J与T,再检查AX是否正确。

(J为断点地址)没有问题。

11)用G命令使程序运行到结束,检查AX值是否正确。

汇编语言实验debug

汇编语言实验debug

使用DEBUG DEBUG调试工具 实验 使用DEBUG调试工具
3.显示内存命令D 3.显示内存命令D 显示内存命令 D命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 0000:0000H 元的内容 查看1000:0(即物理地址10000H) 1000:0(即物理地址10000H)处的内容 -d 1000:0 查看1000:0(即物理地址10000H)处的内容 查看1000:9(即物理地址10009H)处的内容。 1000:9(即物理地址 处的内容。 -d 1000:9 查看1000:9(即物理地址 处的内容 查看1000:0 1000:C的内容 1000:0-d 1000:0 C 查看1000:0-1000:C的内容 注意: 注意: • 可指定段寄存器:-d CS:100 10F 可指定段寄存器: • 不指定段寄存器时默认显示数据段内容 • 若只指定首地址,则显示从首地址开始的128个字节:-d 100 若只指定首地址,则显示从首地址开始的128个字节: 128个字节 • 可以不指定任何地址,会显示下一组128字节内容 可以不指定任何地址,会显示下一组128 128字节内容
使用DEBUG DEBUG调试工具 实验 使用DEBUG调试工具
四、常用DEBUG命令 常用DEBUG命令 DEBUG
命令查看、改变CPU寄存器的内容; CPU寄存器的内容 1. 用R命令查看、改变CPU寄存器的内容; 命令将内存中的机器指令翻译成汇编指令; 2. 用U命令将内存中的机器指令翻译成汇编指令; 命令查看内存中的内容; 3. 用D命令查看内存中的内容; 命令改写内存中的内容; 4. 用E命令改写内存中的内容; 5. 用T命令执行一条机器指令 6. 用G命令运行至断点处 7. 用A命令以汇编指令的格式在内存中写入机器指令 8. 用C命令进行内存区域比较

汇编语言课程2_调试程序DEBUG

汇编语言课程2_调试程序DEBUG
R命令
12




DEBUG
② R 寄存器名;显示并修改指定的寄存器. 寄存器名;显示并修改指定的寄存器. RIP;RF等 RAX ;RIP;RF等 5.汇编命令 汇编命令A 5.汇编命令A [地址 地址] 从指定的地址开始输入符号指令; A [地址];从指定的地址开始输入符号指令; 如省略地址,则接着上一个A 如省略地址,则接着上一个A命令的最后一个单元开 若第一次使用A命令省略地址,则从当前CS:IP 始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS 100). CS: 开始(通常是CS:100). 注释: DEBUG下编写简单程序即使用 命令. 下编写简单程序即使用A 注释:①在DEBUG下编写简单程序即使用A命令. 每条指令后要按回车. ②每条指令后要按回车. 不输入指令按回车,或按Ctrl+C结束汇编. Ctrl+C结束汇编 ③不输入指令按回车,或按Ctrl+C结束汇编. 支持所有8086符号硬指令,伪指令只支持DB 8086符号硬指令 DB, ④支持所有8086符号硬指令,伪指令只支持DB, DW,不支持各类符号名. DW,不支持各类符号名.
参数格式2
7




DEBUG
命 令 索 引
D命令 U命令 N命令 S命令 E命令 G命令 L命令 I命令 F命令 T命令 W命令 O命令 R命令 P命令 C命令 M命令 A命令 Q命令 H命令
命令索引
8




DEBUG
§3.DEBUG命令 3.DEBUG命令 1.显示命令D 1.显示命令D 显示命令 [地址 地址] ① D [地址] [范围 范围] ② D [范围] ;如不指定范围,一次显示8行×16个字节. 如不指定范围,一次显示8 16个字节. 个字节 -D ;默认段寄存器为 ,当前偏移地址 默认段寄存器为DS, -D DS:100 /-D CS:200 /- -D 200:100 200;200为偏移地址 默认段寄存器DS 为偏移地址, -D 200;200为偏移地址,默认段寄存器DS -D DS:100 110/ -D 100 L 10

汇编实验-DEBUG 调试程序的使用-

汇编实验-DEBUG 调试程序的使用-
2016──2017学年第二学期
实验课程
汇编语言程序设计
学生姓名
实验项目
DEBUG调试程序的使用
学院
计算机科学技术学院
实验性质
验证性实验
班级学号
实验地点
同组人数
第13组
实验日期
第周星期第节
成绩
环境参数
DOSBox 0.74
1、实验目的及要求
1.学习使用DEBUG程序的各种命令。
2.利用DEBUG学习了解计算机取指令、执行指令的工作过程。
4、向内存从B8100H开始的单元中填写数据,如:
-e b810:0000 01 01 02 02 03 03 04 04
3、实验仪器设备及材料
Windows系统和DOSBox 0.74。
4、操作方法与实验步骤
2
2.(1)
2.(2)
01寄存器寻址
02寄存器寻址
03立即数寻址
04直接寻址
06寄存器间接寻址
我希望可以在将来的学习当中能进一步加深对汇编语言编程的理解。
仪器设备损坏、非正常损耗材料(试剂)及处理情况:
教师对报告的最终评价及处理意见:
教师签字:
年月日
XXXX:011FINT 20
(1)用D命令显示XXXX:0200---XXXX:0203单元内容。
(2)指出以上汇编语言指令中源操作数使用的是什么寻址方式?
(3)用T命令单步跟踪,观察指令的执行结果,并记录。
3、查看内存单元内容,pc机主板上的ROM中写有一个生产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。
08立即数寻址
09基址变址寻址
10立即数寻址

调试工具debug的使用及基本指令的用法 (实验2)

调试工具debug的使用及基本指令的用法 (实验2)
DS=10DD ES=10DD SS=10DD CS=10DD IP=0100 NV UP DI PL NZ NA PO NC
10DD:0100 7C0A JL 010C(标志寄存器的各个标志位)
(当前CS:IP所指向的指令)
标志寄存器各标志位的含义:
溢出标志OF: OV/NV(1溢出/0不溢出)
方向标志DF: DN/UP(1减/0增)
《微机原理与接口技术》实验报告
实验序号:实验2实验项目名称:调试工具debug的使用及基本指令的用法
学 号
姓 名
专业、班
实验地点
指导教师
实验时间
一、实验目的及要求
1、掌握debug的基本命令和8086的各种基本指令的用法。
2、掌握DEBUG下的主要命令及在DEBUG下编写简单程序、调试程序的方法;
3、理解CPU各种寄存器的作用:
10DD:2010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
4、观察和修改内存单元的内容
-e 2000修改从地址DS:2000H开始内存单元的内容
10DD:2000 00.01 00.02

汇编_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

15
15、S检索 格式:S 起始地址 结束地址 值表 S 起始地址 L字节数 值表 功能:在指定内存范围内检索值表指定的字符,如果找到,则显示 检索到的单元地址;如果没找到,则显示提示符。 例: 设内存DS:0000H开始存入1,2,3, ‘A’ , ‘B’ , ‘A’ , ‘B’ 要求检索字符‘A’ , ‘B’ , ‘F’ -SDS:0 06 A 1542:0003 1542:0005 -SDS:0 06 B 1542:0004 1542:0006 -SDS:0 06 F -
通过调试工具检查功能的正确性。
2
二、调试工具软件DEBUG
1、简介 面向汇编语言的动态调试工具,有19条命令。 通过跟踪、测试对.EXE和.COM文件动态跟踪调试。 查找文件中的错误及运行结果。 可以直接编写、调试小程序。 2、DEBUG的启动方式
(1)在DOS状态下直接输入
C:DEBUG ADD.EXE (2)在DOS状态下输入 C:DEBUG -NADD.EXE -L
17
16
16、C比较 格式:C 起始地址 结束地址 目的地址 C 起始地址 L字节数 目的地址 功能:比较两个数据块内容,如果不相同,则显示其内容和地址。 默认为数据段,目的地址只包含偏移地址。 例:把ES:0开始的10个字节内容与DS:100H开始的区域进行比较, 找出与之不同的内容。 -CES:0 LA DS:100 执行结果: 82DD:0000 03 2D 82CD:100 82DD:0002 00 02 82CD:102 82DD:0003 05 09 82CD:103 82DD:0008 04 66 82CD:108 17、Q退出 格式:-Q 功能:退出DEBUG命令。
9
例2:从CS:0004开始执行3条指令。 -T=4 3

调试程序DEBUG命令说明

调试程序DEBUG命令说明

调试程序DEBUG命令说明
DEBUG是常用的汇编语言级调试工具,为汇编语言程序员提供了分析指令、跟踪程序的有效手段
如何进入Debug程序?
答:在命令提示符下输入“debug”回车即可
懂得汇编的朋友,相信看懂下面命令是没多大问题的。

常用命令:
-A 汇编格式:A 起始地址
例如:输入“A”,回车,然后输入“MOV AX,10”回车。

再按一次回车,则退出汇编状态。

-U 反汇编格式:U 起始地址结束地址
例如:接上面,输入“U”,回车,即可看到结果。

以下不再举例,类似上面,有待自己研究,这样记得更牢。

谢谢!
-T 单步执行格式:T 起始地址运行指令数
-G 断点执行格式:G 起始地址断点地址结束地址
-D 数据显示格式: D 起始地址结束地址
-R 显示修改寄存器
格式:R 寄存器名
-P 单步执行,不进入中断
格式:T 起始地址运行指令数
-F 连续填入内存内容
格式:起始地址结束地址要填入的数值系列
-E 单个修改内存内容
格式: E 地址填入内容
-Q 退出debug状态
格式: Q 回车
状态标志位的值如下图:
不常用命令:
-M 内存搬家指令:
格式:M 起始地址结束地址目的地址-H 16进制加法:
格式:H 操作数1 操作数2
结果显示:加法结果减法结果。

实验二 DEBUG使用方法

实验二 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调试命令
内容。 (8) Q(退出): 退出DEBUG,该操作不保护文件。 -Q
标志位:
“1”
“0”
OF:溢出标志 —— OV溢出, NV没溢出
DF:方向标志 —— DN减量, UP增量
IF:中断允许标志 —— EI允许, DI禁止
SF:符号标志 —— NG负数, PL正数
ZF:“0”标志
—— ZR为“0”, NZ不为“0”
下次课预习内容:顺序结构程序设计
要求:1、实验指导书及实验报告上的预习内容 2、预习验收时要提供设计的源程序磁盘或笔写程序
-E CS:211 21 2A
;从CS:211H开始输入2个字节的内容
-E 110 ‘anything’
;输入从DS:110H开始的字符串
⑹ D(显示存储器的内容):
默认寄存器是DS,格式是:
-D段地址:偏移地址
;显示80H个字节的内容。
-D
显示从上一次结束处开始的80H个字节 的内容。
⑺ R(显示修改寄存器内容) -R ;显示所有寄存器内容。 -RDS ;显示并可修改DS的内容。 -RF ;显示并可修改标志寄存器
实验数据记录注意事项:
1、实验报告第三页:表格中标志位与计算机 自动给出的不是一一对应的,要求记录1/0
2、实验报告第四、五页:列出调试运行后的程序清单
因为行汇编不识别标号,所以:用行汇编运行的程
序中没有行号,转移指令处是绝对地址。
验收内容:
1、用T命令执行完程序最后一条指令处的界面:
-T =段地址:0
-G=段地址:偏移地址
-G
;从程序当前位置执行到
程序结束
-G =200 260
;从指定200H地址开始执行, 遇到断点

利用DEBUG调试汇编语言程序段

利用DEBUG调试汇编语言程序段

利用DEBUG调试汇编语言程序段利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。

二.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)例1:-D100 ;显示DS段, 0100开始的128个字节内容说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。

①D SEGREG[起始地址] [L 长度];显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容.②D SEGREG[段地址:偏移地址];显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容-D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)-D DS:100 ;显示DS段, 0100H开始的128个字节内容-D CS:200 ;显示CS段, 0200H开始的128个字节内容-D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容-D 200;显示DS段, 0200H开始的128个字节内容-D 100 L 10 ;显示DS段, 100H开始的100H个字节内容2)E命令(修改指定内存)例1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:08F1:0100 41 42 43 44 48 47 46 45例2:-E 100:08F1:0100 76 42 :42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。

汇编语言实验debug

汇编语言实验debug

练习
(10)向内存从B8100H开始的单元中填写数据,如: -e b810:0000 01 02 03 04 05 05 06 注意:先填写不同的数据,观察产生的现象;再改变填写的的地址, 观察产生的现象。 (11)用汇编命令A输入如下指令: MOV AX,1 MOV BX,2 MOV CX,3 ADD AX,BX ADD AX,CX ADD AX,AX 用T跟踪观察寄存器内容的变化。 (12)上机练习课本P159第8题,并写出每个程序段执行后AL的内容及状态 标志位的值(提示:用A、R命令)
u范围从上一个u命令所显示地址后的第一个地址开始反汇编显示20h个字节内容起始地址从起始地址处开始显示20h个字节内容起始地址结束地址反汇编显示从起始地址到结束地址的内容例如
调试工具DEBUG的使用
一、上机目的 (1)学习如何在Windows的命令模式下启动 DEBUG。 (2)掌握DEBUG的常用基本命令。 (3)学习如何使用DEBUG查看CPU和内存以及 进行跟踪调试。
(1)-t 执行CS:IP指向的一条指令并显示各寄存器状态 (2)-t <指令条数> -t 3 执行CS:IP开始的连续的3条指令并显示各寄存器状态 (3)-t <=起始地址> <指令条数> -t =052A 5 该指令会连续执行从052A开始的5条指令
练习
(1)用R命令修改IP的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (2)用R命令修改CS的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (3)使用D命令,查看内存10000H处的内容; (4)使用D命令,查看1000:0~1000:8中的内容,并修改 这9个字节的内容为1、2、3、4、5、6、7、8、9 (5)采用三种不同的段地址和偏移地址查看同一物理地址
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二 Debug的使用(基础与验证型)一、实验要求和目的熟练掌握动态调试程序DEBUG的使用;二、软硬件环境1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2、软件环境:装有MASM 5.0、Debug、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。

三、实验涉及的主要知识单元通过编辑、汇编和连接后的程序是可以执行的程序。

但是,一个程序特别是比较复杂的程序不能保证没有一点错误。

因此,在投入正式运行前必须进行调试,以检查程序的正确性。

调试程序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标志。

格式(2):-D 范围将显示指定地址范围内的内存单元的内容,起始地址可由段基址及段内偏移量两个部分组成,中间用冒号“:”隔开,也可以只指出段内偏移量,而此时的段基址在DS中。

这里所说的范围包含起始地址和结束地址。

比如–D DS:1000 1020将显示数据段偏移地址为1000H到1020H的内容。

(二)修改内存单元内容的命令E格式(1):-E 地址内容表它的功能是用给定的内容表去代替所指定的内存单元的内容。

例如:E DS:0110 41 ‘CLOSE’41该命令执行后,将用列表中的7个字符填入从DS:0110 到DS:0116 的7个存储单元中。

格式(2):E 地址它的功能是可以连续地逐个修改内存单元的内容。

当屏幕上显示指定单元的地址和内容之后,可采取下列办法:①若指定单元的内容需要修改,则将新的内容的十六进制数输入,再按空格键,修改便告完成,然后显示下一个存储单元的地址及内容,若需要修改,可进行同样的操作。

若某一个单元的内容不需要修改,而操作又要进行下去,则可直接按空格键。

②若需要显示前一个单元的地址和内容,则输入连接号′-′,若要修改,则输入新的内容;若显示前一个单元的地址和内容仍要修改,则可进行同样的操作;若显示的内容不需要修改,则可直接按′-′键,使该操作由高地址向低地址单元连续不断地进行。

③按<CR>键,结束E命令。

(三)检查和修改寄存器内容的命令R格式(1):R此时将显示所有寄存器的内容和全部标志位的状态,以及现行CS:IP所指的机器指令代码和反汇编符号。

格式(2):R 寄存器名该格式可用于检查和修改指定寄存器的内容。

若不修改其内容,可按<CR>键,若需要修改其内容,可以输入1-4 个十六进制数,再按<CR>键。

格式(3):RF该格式可用于显示标志和修改标志位状态。

当系统给出标志位状态后,可采取下列办法:①若不需要修改任一标志位,可按<CR>键。

②若需要修改一个或多个标志位,可输入其相反的值。

各标志位之间可以无空格且与顺序无关,修改后按<CR>键。

由于标志位状态显示时,是用下列特殊符号表示的,因而修改时,只要输入规定的符号即可。

下面是标志名和状态符号的对照表:标志名置位符号复位符号溢出标志OF(是/否) OV NV方向标志DF(减/增) DN UP中断标志IF(允许/禁止) EI DI符号标志SF(负/正) NG PL零标志ZF(是/否) ZR NZ辅助进位标志AF(是/否) AC NA奇偶校验标志PF(偶/奇) PE PO进位标志CF(是/否) CY NC只有追踪标志TF,不能用指令直接修改。

例如:输入RF命令,系统可能作出如下响应:OV DN EI NG ZR AC PE CY -若现在要修改奇偶、零、中断和溢出标志位,可在光标处输入:PO NZ DI NV<CR>(四)运行程序命令G格式:G [=地址][地址[地址…]]该命令可以在程序运行中设置断点。

它是Debug程序进行程序调试的主要命令之一。

示例:-g 001a 则执行从当前cs:ip至001a的指令,注意:地址设置必须从指令的第一字节设起。

①第一个参数“=地址”规定了程序执行的起始地址,以CS内容作段地址,等号后面的地址只需给出地址偏移量。

此时,命令G与地址之间的等号不能省去。

如果在G命令执行前,已经设置了CS值和IP值,则也可以直接用G命令,从指定地址执行程序。

②格式中后面给出的地址是指断点地址,最多可设置10个断点。

当程序执行到一个断点时,就停下来,显示CPU各寄存器的内容和标志位的状态,以及下一条待执行的指令,被调试程序的所有断点全部被取消,并返回Debug。

③地址参数所指的单元,必须包含有有效的8088指令的第一个字节,否则将产生不可预料的结果。

④堆栈必须至少包含有6个可用字节,否则也将产生不可预料的结果。

⑤若断点地址只包括地址偏移量,则认为段地址在CS寄存器中。

(五)追踪命令T格式(1):T [=地址]该命令可以在指令执行中进行追踪,若略去地址,则从CS:IP现行值执行。

每一次T 命令都执行一条指令。

格式(2):T [=地址][值]此时,它可对多条指令进行追踪,即在执行了由值所指定的若干条指令之后,停止执行并显示各寄存器的内容和各标志位,还指出下一条待执行的指令。

(六)汇编命令A若在调试目标程序的过程中,要求改写或增添一段目标程序,则可以用A命令直接在Debug下实现。

格式:A [地址]该命令可以从指定地址开始,将输入的汇编语言语句立即汇编成机器代码,连续存放在内存单元中。

在程序输入完毕后,最后一行不输入内容,直接按回车键,即可返回DEBUG 程序,还可用反汇编命令U对刚输入的内容进行反汇编,以验证输入的程序是否正确。

使用A命令应遵守以下规则:①所有输入数值,均为十六进制数。

②前缀助记符,必须在相关指令的前面输入,可以在同一行,也可以在不同行输入。

③段超越助记符为CS:、DS:、ES:、SS:。

④远调用时的返回指令助记符用RETF。

⑤使用串操作指令时,助记符中必须注明是字节还是字传送。

⑥汇编语言能自动汇编短、近和远的转移及近和远的调用,也能由NEAR和FAR前缀来超越。

例如:0110:0600 JMP 602;短转移0110:0602 JMP NEAR 605;近转移0110:0605 JMP FAR 60A;远转移第一条JMP指令中含有一个字节偏移量。

第二条JMP指令中含有两个字节偏移量。

第三条JMP指令中含有两个字节的偏移量及两个字节的段地址。

⑦当DEBUG不能确定某些操作数涉及的是字类型存储单元还是字节类型的存储单元时,在这种情况下,必须用前缀“WORD PTR”或“BYTE PTR”来加以说明。

例如:NEG BYTE PTR [128]DEC WORD [SI]⑧当Debug不能确定一个操作数是立即数还是存储单元的地址时,可以把地址放在方括号中。

⑨两个最常用的伪指令DB和DW可以在A命令中使用,用来直接把字节或字的值送入相应的存储单元。

例如:DB 2,5,3,4,′THIS IS AN EXAMPLE′DW 6000,2000,7000,′BA′⑩Debug支持所有形式的寄存器间接寻址命令。

例如:ADD BX,74[BP+3][SI-5]POP[BX+DI](七)反汇编命令U格式(1):U地址该命令从指定的地址开始,反汇编32个字节。

若略去指定地址,则以上一个U命令反汇编的最后一条指令地址的下一条指令地址作为起始地址;若没有用过U命令,则以由Debug初始化的段寄存器的值作段地址,以100作为地址偏移量。

格式(2):U范围这种格式的命令,可以对指定范围的内存单元进行反汇编,范围可以由起始地址、结束地址(只能包含地址偏移量)或起始地址及长度来指定。

其命令格式如:U 04BA:100 0108 或U 04BA:0100 L7两者是等效的。

(八)输入命令I格式:I端口地址该命令从指定端口输入一个字节并显示。

例如: I 2E8C C它表示所显示的是从02E8 端口输入的一个字节为CC。

(九)输出命令O格式:O端口地址字节值其功能是向指定的端口输出一个字节。

例如:O 2E8 12它表示将一个字节12H送到输出端口2E8。

(十)命名命令N格式:N文件标识符[文件标识符]该命令用给定的两个文件标识符格式化在CS:5C和CS:6C的两个文件控制块中(若在调用Debug时具有一个文件标识符,则它已格式化在CS:5C的文件控制块中),文件控制块是将要介绍的装入命令L和写命令W所需要的。

N命令能把文件标识符和别的参数放至CS:81开始的参数保存区中。

在CS:80中保存输入的字符个数,寄存器AX保存前两个文件标识符中的驱动器标志。

例如:A> DEBUG<CR>N TEST<CR>L<CR>N命令后,用L命令可将TEST调入自己的CS:100开始的存储区中。

若对正在调试的程序TEST进行调试时,需要用到其它的文件标识符及其它参数,也可用N命令加以实现。

;例如:A> DEBUG TEST<CR>N 文件1 文件2<CR>(十一)装入命令L格式1: L <地址> <驱动器号> <起始逻辑扇区> <所读扇区个数n>其中<地址>的缺省值为CS:100。

相关文档
最新文档