【微机原理】DEBUG命令详解

合集下载

微机原理实验一(DEBUG)

微机原理实验一(DEBUG)

演示:DEBUG常用命令(此环境下,所有数据均为十六进制,不加后缀)—A 汇编—U 反汇编—D 显示存储器值—E 修改存储器值—R 显示寄存器值—T 单步执行—G 断点执行—Q 退出实验内容:一、利用A命令编辑七条指令,采用MOV AX,源OP的形式,要求源OP使用七种不同寻址方式。

(适当记录结果)U命令对刚才的7条指令反汇编,查看其机器代码,体会不同寻址方式的差异性,注意偏移地址的变化。

R命令查看寄存器初始状态。

T命令执行,注意每条指令执行后AX 的变化,思考原因。

D命令查看相关存储单元的内容,看是否与AX的变化一致。

Q命令退出。

二、判断以下指令正误,并利用A命令、T命令编辑执行,看实际情况是否与你判断的一致。

(记录判断结果,你还可以对你感兴趣的情况加以尝试)1.PUSH SP2.MOV AX, CS3.PUSH [BX]4.MOV [200], 125.MOV [200], 12346.LEA BL, [100]7.LEA BX, [100]8.LEA BX, [100+1]9.LEA BX, [100*2]10.MOV BL, [100]11.MOV BX, [100]12.XCHG AX, BX13.XCHG [BX], [SI]14.XCHG BX, [BX]三、利用A命令编辑以下内容DB 0,1,4,9,10,19,24 此为转换表,表名省略LEA BX, […] 中括号填入上一条伪指令的偏移地址MOV AL, 3XLAT利用T命令或G命令执行,注意AL,BX值的变化,思考XLAT可以用哪些指令替换,从而实现同样的功能。

(记录替换的指令)四、自行设计试验内容,验证LDS、LES 的功能。

(记录验证过程)。

微机接口debug指令详解

微机接口debug指令详解

2014-12-3
6
D命令使用
-d cs:100 按以下格式显示地址范围中的内容(假定 CS=0AF6): 0AF6:0100 77 61 6E 67 78 69 61 6F- wangxiao 69 6A 6B FF 0E 00 01 FF ijk…..

2014-12-3
7
三、DEBUG 命令详解
2014-12-3
5
三、DEBUG 命令详解

★ D命令 格式:D [地址] 或D [起始地址][目的地址] 功能:以内存映象方式显示内存中的数据。 参数说明:指定要显示内容的内存单元的起始 地址和结束地址,或起始地址和长度。如果不 指定 [地址],Debug将从以前 d 命令中所指 定的地址范围的末尾开始显示 128个字节的内 容;第一次从DS:100处开始显示。

2014-12-3
9
三、DEBUG 命令详解
★ T命令 格式:T [=地址] [指令条数] 功能: 逐条跟踪程序的执行,每条指令执行后都 将显示各寄存器的内容。 参数说明:[=地址] 指定第一 条要执行指令的位置。如果 不指定地址,则默认地址是在 CS:IP 寄存器中指定的当前地址,[指令条数] 指定在将 控制返回给 Debug 之前要执行的指令数,默认 值为 1。
debug指令详解
2014-12-3
1
一、DEBUG概述
1、 DEBUG是在DOS状态下面供程序员使用的 程序调试工具。 2、它可以用来检查内存中任何地址中的内容以 及修改特定地址中的内容。 3、DEBUG还可以用于逐指令执行某个程序,追 踪程序的执行过程,比较一条指令执行前后数值 变化情况,读写文件与磁盘扇区。 4、DEBUG还可以用于读写端口中的数值。

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的使用 的使用
Edit 指令
这是修改内存单元的命令,先进入 debug 模式,再进行以下操作: C:\WINDOWS\COMMAND>debug [Enter] -d 100 L20 [Enter] 146F:0100 65 20 68 69 67 68 20 6D-41 6D 6F 72 79 20 61 72 e high mAmory ar 146F:0110 65 61 2E 0D 0A 22 4D 6F-64 75 6C 65 34 00 5E 14 ea..."Module4.^. -e 107 [Enter] 146F:0107 6D.41 [Enter] 注意!用-E显示后,如果不要修改內容,可以直接按 Enter 键结束E命令;如果要继续修 改的话,就按空格键,DEBUG 会自动显示原来内容,等待输入新值。 C:\WINDOWS\COMMAND>debug [Enter] -d 100 L20 [Enter] 146F:0100 65 20 68 69 67 68 20 6D-41 6D 6F 72 79 20 61 72 e high mAmory ar 146F:0110 65 61 2E 0D 0A 22 4D 6F-64 75 6C 65 34 00 5E 14 ea..."Module4.^. -e 107 [Enter] 146F:0107 6D.41 [Space] 146F:0108 41.42 [Space] 6D.43 [Enter] 这时显示内存可以看到: -d 100 L10 [Enter] 146F:0100 65 20 68 69 67 68 20 41-42 43 6F 72 79 20 61 72 e high ABCory ar

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命令的功能及使用功能: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的主要命令实验目的:掌握调试程序DEBUG的使用方法。

实验内容:通过对一个汇编程序进行各种调试和检测,掌握调试程序DEBUG的使用方法。

DEBUG是为汇编语言设计的一种调试工具,主要用于检查、修改和执行汇编语言程序。

它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

DEBUG的作用:1.为用户提供一个可控制的交互式汇编语言运行环境,以控制和监督被调试程序的执行情况。

由于DEBUG操作容易,可以直接和计算机的寄存器以及内存打交道,可以用来汇编简单程序。

2.用户可以直接在程序中修改错误,并立即执行程序以判断这样的修改是否已经奏效,而不必对程序重新汇编来判断修改的效果。

3.DEBUG可以访问DOS的禁区,这样如果引导扇区遭病毒感染,还可以用DEBUG编程加以清除。

步骤:一.进入DEBUG (下文方括号中的项表示任选项,“<CR>”表示回车键)1.进入DOS2.进入C:盘ASM目录3.在DOS提示符下,键入命令debug [执行文件全名]〈CR〉(执行文件指“.exe”文件或“.com”文件)便可进入DEBUG。

若指定文件名,则将该文件调入DEBUG。

进入DEBUG后,出现“–”提示符,即可用DEBUG命令来调试程序。

二.DEBUG命令的规定:1.DEBUG命令中的所有字母大小写皆可;2.DEBUG命令中的数字都是十六进制的;3.DEBUG命令都是一个字母,后面有一个或多个参数;4.命令只有在按下回车键后才开始执行,任何一个命令都可以用CTRL+BREAK键来结束其执行,返回提示符“—”状态;5.命令和参数之间可以用定界符分隔,但只有在两个相邻的十六进制数之间的定界符才是必须的;6.在命令执行过程中,可以用CTRL+NUM LOCK键停止屏幕显示的卷动,以便于查看,按下任何其他键,继续卷动。

三.DEBUG的主要命令:1.显示∕改写寄存器内容命令R格式一:–r<CR> 功能:显示CPU内所有寄存器内容和标志位状态。

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指令详解
格式:E[地址] [字节串]或E[地址]
功能:从指定的地址开始修改内存值。参数说明:[地址]指定存放[字节串]第一个内存的位置,[字节串]是要放入内存单元中的数据。
★F命令
格式:F[地址范围] [字节或字节串]
功能:将要填写的字节或字节串填入由地址范围指定的存储器中。
参数说明:[地址范围]指定要填充内存区域的起始和结束地址,或起始地址和长度。[字节或字节串]指定要输入的数据,可以由十六进制数或引号包括起来的字符串组成。
★H命令
格式:H[数值][数值]
功能:分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。
参数说明:[数值]表示从0到FFFFh范围内的任何十六进制数字。
★I命令
格式:I[端口地址]
功能:从指定的端口输入并显示(用十六进制)指定端口中的数据(字节)。参数说明:[端口地址]指定要读取数据的端口地址。
★U命令
格式:U[起始地址]或者[地址范围]
功能:将内存中的内容转换为汇编语句。
参数说明:[起始地址]或者[地址范围]指定要反汇编代码的起始地址和结束地址,或起始地址和长度。
★W命令
格式:W[地址] [盘符:] [起始扇区] [扇区数]
功能:将内存中的数据写入磁盘中。
参数说明:[地址]指定要写到磁盘文件的文件或部分文件的起始内存地址。如果不指定address,Debug程序将从CS:100开始。[盘符:]指定包含目标盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C,等等。[起始扇区]指定要写入第一个扇区的十六进制数。[扇区数]指定要写入的扇区数。
在DEBUG状态下,所有数据都作为字节序列,可以用DEBUG把任何类型的文件读入内存中。DEBUG能够处理的数据为两种:十六进制数和ASCⅡ码,使用两位数表示十六进制数据(0~9,A~F)。在DEBUG中涉及内存中的数据时,要指定数据所在的内存单元的地址,地址的输入格式是: [段地址]: [位移]。如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。前100H字节保留给程序段前缀使用(称PSP结构,包含程序执行的各种信息),该区域用于建立DOS与程序之间的联系。在DEBUG中,使用四位十六进制数表示地址(0~9,A~F)。

调试工具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是调试汇编语言的有力工具。

通过DEBUG程序的运行,可以显示或修改寄存器的内容。

也可以显示或修改存储器的内容。

可以单步执行,可以断点执行,可以连续执行。

也可以对存储器的目标代码进行反汇编。

通过这些操作,可以查看程序的运行情况和查找错误。

一、DEBUG的调用:1、DEBUG的调用格式:DEBUG的调用格式有两种:(1) DEBUG↵(2) DEBUG<文件标识符>↵在DEBUG成功的调入内存后,将出现提示符“-”,说明系统是在DEBUG程序管理之下。

DEBUG所属的命令,只有在出现DEBUG提示符后才能有效。

第一种方法调入后,则DEBUG程序或者与正在内存中的内容打交道,或者可以通过NAME和LOAD命令从指定的盘上读入被调试的程序。

第二种方法,则由OS把DEBUG程序调入内存后,DEBUG又直接将“文件标识符”所指的可执行文件调入内存中(对于.EXE文件,DEBUG把它装入到最低可用的区段中,并从100H开始装入。

对于不同的机器,或同一机器的不同的环境,其段地址是不同的)。

2、寄存器的初始化:进入DEBUG后,各个寄存器和标志位均被初始化。

其值可以用寄存器查看命令查看。

比如下图:3、标志寄存器:二、DEBUG命令一览表:关于DEBUG程序的更详细用法,可再进入DEBUG程序后输入“?”而获得。

DEBUG的命令共有19条。

三、常用DEBUG命令:1、反汇编命令U:用于将存储器中的指令码进行反汇编,翻译成较有意义的助记符形式,以帮助理解。

显示它们的段地址、偏移地址、机器码和汇编语言程序。

如图1.5所示。

一般常用以下三种格式:(1)U↙(2)U[address] ↙(3)U range↙其中,address是反汇编的起始地址,由CS:IP或IP指定。

微机原理 实验1(DEBUG的使用)

微机原理  实验1(DEBUG的使用)

(3)显示和修改标志位状态 ) 格式: 格式:RF 若不需要修改任一个状态标志,则直接按 若不需要修改任一个状态标志,则直接按enter键; 键 若有一个或多个标志需要修改, 若有一个或多个标志需要修改,则可以输入此标志的 相反值。输入的标志的次序是无关的,输入的各个标 相反值。输入的标志的次序是无关的, 志之间,可以没有空格。 志之间,可以没有空格。 在调试程序DEBUG中提供了测试标志位的手段,它用符 中提供了测试标志位的手段, 在调试程序 中提供了测试标志位的手段 号表示标志位的值。每种标志位的符号表示如下表: 号表示标志位的值。每种标志位的符号表示如下表:
4、运行命令G(Go) 、运行命令 ( ) 格式: 格式:G [=address1] [address2 [address3 . . . ] ] 说明: 指定了运行的起始地址, 说明:address1指定了运行的起始地址,如不指定则从 指定了运行的起始地址 当前的CS:IP开始运行。后面的地址均为断点地址,当 开始运行。后面的地址均为断点地址, 当前的 开始运行 指令执行到断点时, 指令执行到断点时,就停止执行并显示当前所有寄存器 及标志位的内容和下一条将要执行的指令。 及标志位的内容和下一条将要执行的指令。
* 地址的格式为: [段地址 偏移地址 地址的格式为: 段地址 段地址:] 其中,段地址可以是段寄存器名,也可以是一个数值。 其中,段地址可以是段寄存器名,也可以是一个数值。若 命令中没有指定段地址, 命令自动显示DS段的内容 命令中没有指定段地址,则D命令自动显示 段的内容 。 命令自动显示 如:D DS:0100 、D 0400:0200、D 0100 、 * 范围的格式为: 范围的格式为 段地址:] (1)[段地址 开始偏移地址 结尾偏移地址 ) 段地址 * 结尾地址只允许有地址位移量,不允许有段地址 结尾地址只允许有地址位移量, 如:D CS:100 CS:110 是错误的。 是错误的。 应为: 应为:D CS:100 110 段地址:] (2) [段地址 开始偏移地址 ) 段地址 L长度 长度

微机原理 debug 使用

微机原理 debug 使用

修改内存单元内容的命令E
给定内容代替指定范围的单元内容,格式为: -E 地址 内容表 例如: -E DS:100 F3 58 59 5A 8D 用F3,58,59,5A,8D五个字节代替内存 单元DS:100到DS:100的内容。
修改内存单元内容的命令E
逐个单元相继地修改,格式为: -E 地址 例如: -E DS:100 18E4:0100 89.78 此命令是将0100单元内容89改为78。78是 程序员从键盘输入的。程序员在修改完一个 单元后,可按“空格”键继续修改下一单元 内容,直至按“回车”键结束该命令。
运行命令G
格式为: -G [=地址1][地址2[地址3…]] 例如: -G 0100 地址1指定了运行的起始地址,后面的均为 断点地址,当指令执行到断点时,就停止执 行并显示当前所有寄存器及标志位的内容和 下一条要执行的指令。
汇编命令A
格式为: -A [地址] 例如: -A 该命令允许输入汇编语言语句,并能把它 们汇编成机器代码,相继地存放在从指定地 址开始的存储区中。必须注意:输入的数字 均默认为十六进制数。
关于参数的几点说明:
7、当命令出现语法错误时,将在出错位置显 示“^ Error” 8、可用^C或^Break来终止当前命令的执行, 还可用^S来暂停屏幕显示(当连续不断地显 示信息时)
标志位状态的含义如下所示:
标志名, OF(溢出标志) DF (方向标志) IF (中断标志) SF (符号标志位) ZF (零标志) AF () PF (奇偶标志) CF (进位标志 ) 标志 1 OV UP DI PL NZ NA PO NC 标志 0 NV DN EI NG ZR AC PE CY
退出DEBUG命令Q
格式为: -Q 该命令退出DEBUG程序,返回DOS。

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是为汇编语言设计的一种调试工具,它通过单步执行、设置断点等方式为汇编语言程序员提供了非常有效的程序调试手段。

DEBUG可以直接用来检查和修改内存单元、装入、存储及启动运行程序、检查及修改寄存器,也就是说DEBUG可深入到计算机的内部,可使用户更紧密地与计算机中真正进行的工作相联系。

不仅如此,对汇编语言初学者来说,DEBUG 也是练习使用汇编指令的一种有效工具。

初学者可以直接在DEBUG环境下执行汇编指令。

然而,在DEBUG下运行汇编语言源程序也受到了一些限制,它不宜汇编较长的程序,不便于分块程序设计,不便于形成以DOS外部命令形式构成的 .EXE文件,不能使用浮动地址,也不能使用ASM和MASM提供的绝大多数伪指令。

在DOS系统中,DEBUG是以DOS外部命令文件形式提供给用户的,名为DEBUG.EXE。

命令文件DEBUG.EXE一般存放在DOS子目录下,因此调用DEBUG时,只需在DOS提示符下键入: DEBUG [<驱动器名>:][<路径>][<文件名>[.<扩展名>]][<参数1>][<参数2>] < 回车>例如: C:\DOS>DEBUG A: B:进入DEBUG的提示符是符号“-”。

即,出现提示符“-”就表示可以接受DEBUG命令了。

当进入DEBUG时,寄存器和标志设成以下数值,这些值用于DEBUG调试中的程序。

段寄存器CS,DS,ES和SS均指向DEBUG末尾的第一个段。

IP寄存器置为0100H。

栈指针SP指向尾部或装入程序的暂存部分的底部。

其余寄存器皆取零值,但若用户调用时含文件说明,则CX含文件长度(长度大于64K 时BX含长度的高位);标志为各自的复位值;驱动器传送地址在代码段位移80H处。

注意,若DEBUG装入扩展名为.EXE的文件,则DEBUG需重定位且设置段寄存器指示器为文件中所定义的值。

【微机原理】DEBUG命令一览表

【微机原理】DEBUG命令一览表

DEBUG 主要命令一览表 DEBUG [d:] [path] [.exe] [ 参数]2节。

2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108或–U 04BA:0100 L9 此二命令是等效的。

(3)运行命令G,格式为:-G [=地址1][地址2[地址3。

]] 其中地址1规定了运行起始地址,后面的若干地址均为断点地址。

(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址] 该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

2)多条指令追踪:-T[=地址][值] 该命令从指定地址起执行n条命令后停下来,n由[值]确定。

(5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围](6)修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址内容表例如:-E 2000:0100 F3 “XYZ” 8D 其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。

2)逐个单元相继地修改:-E地址例如:-E 100:18E4:0100 89.78 此命令是将原100号单元的内容89改为78。

78是程序员键入的。

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

微机原理 实验一 DEBUG的使用(1)

微机原理 实验一 DEBUG的使用(1)

什么是DEBUG?DEBUG是DOS提供的用于调试可执行程序的工具软件,在DEBUG环境下,可直接检查和修改寄存器和内存的值,调试和运行程序,使用户进一步了解CPU内部的环境。

DEBUG程序的启动:在DOS的提示符下直接键入命令C:\>DEBUG ↙,进入DEBUG调试程序后,会出现DEBUG提示符“-”,此时就可以使用DEBUG 命令了。

在XP环境下,用鼠标点击“开始”→“所有程序”→“附件”→“提示符命令”。

出现:C:\ Document and Setting \ Administrator>_>CD C:\ ↙C:\>在C:盘的根目录下C:\>debug ↙进入DEBUG调试程序后,会出现DEBUG提示符“-”,此时就可以使用DEBUG命令了。

XP环境下Dos窗口大小的切换用 Alt +↙翻到讲义第12页。

1、R命令 (Register)。

功能:查看和修改寄存器的值。

格式:R↙在R命令后面直接打入回车,显示当前CPU内部所有寄存器的值、标志位状态及将要执行的下一条指令。

若要修改某个寄存器的值,直接在R后面输入该寄存器的名,然后回车,这时会显示该寄存器的当前值,新值直接输入即可。

如:R AX ↙AX 0000 ( 0000 当前值 ):1234 ↙( 1234 新值)翻回讲义到44页,修改实验内容第一部分12个寄存器的值。

AX=1020H BX=5060H CX=A0B0H DX=E0F0H SP=FFFFH BP=0200H SI=3040H DI=7080H DS=2000H ES=0300H SS=0400H CS=0100H翻回到讲义第10页2、D命令 (Dump)。

功能:显示存储器单元的值。

格式:D 段寄存器名:起始地址在使用D命令之前,我们首先要明白,内存已经被我们划分为4个段,即:代码段CS、数据段DS、堆栈段SS和附加段ES。

做题时要明确显示或修改的是哪个段的内容。

查看数据段100H单元开始的后面128个字节内存单元的值。

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

DUBUG命令详解
Debug:A(汇编)
直接将8086/8087/8088 记忆码合并到内存。

该命令从汇编语言语句创建可执行的机器码。

所有数值都是十六进制格式,必须按一到四个字符输入这些数值。

在引用的操作代码(操作码)前指定前缀记忆码。

a [address] 参数address指定键入汇编语言指令的位置。

对address 使用十六进制值,并键入不以“h”字符结尾的每个值。

如果不指定地址,a 将在它上次停止处开始汇编。

有关将数据输入到指定字节中的信息,请单击“相关主题”列表中的Debug E(键入)。

有关反汇编字节的信息,请单击“相关主题”列表中的Debug U(反汇编)。

说明使用记忆码
段的替代记忆码为cs:、ds:、es: 和ss:。

远程返回的记忆码是retf。

字符串处理的记忆码必须明确声明字符串大小。

例如,使用movsw 可以移动16 位的字串,使用movsb 可以移动8 位字节串。

汇编跳转和调用汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。

通过使用near 或far 前缀可以替代这样的跳转或调用,如下例所示:
-a0100:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
1
可以将near 前缀缩写为ne。

区分字和字节内存位置当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀word ptr 或者前缀byte ptr 指定数据类型。

可接受的缩写分别是wo 和by。

以下范例显示两种格式:
dec wo [si]
neg byte ptr [128]
指定操作数Debug 使用包括在中括号([ ]) 的操作数引用内存地址的习惯用法。

这是因为另一方面Debug 不能区分立即操作数和内存地址的操作数。

以下范例显示两种格式:
mov ax,21 ; load AX with 21h
mov ax,[21] ; load AX with the
; contents of
; memory location 21h
使用伪指令使用a 命令提供两个常用的伪指令:db 操作码,将字节值直接汇编到内存,dw 操作码,将字值直接汇编到内存。

以下是两个伪指令的范例:
db 1,2,3,4,"THIS IS AN EXAMPLE"
db 'THIS IS A QUOTATION MARK:"'
db "THIS IS A QUOTATION MARK:'"
dw 1000,2000,3000,"BACH"
范例a 命令支持所有形式的间接注册命令,如下例所示:
2
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )
还支持所有操作码同义词,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
对于8087 操作码,必须指定wait 或fwait 前缀,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
Debug:C(比较)比较内存的两个部分。

c range address
参数range
指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。

有关有效的range 值的信息,请单击“相关主题”列表中的“Debug 说明”。

address
指定要比较的第二个内存区域的起始地址。

有关有效address 值的信息,请单击“相关主题”列表中的“Debug 说明”。

3。

相关文档
最新文档