汇编DEBUG命令详解

DEBUG命令详解DEBUG是DOS中的一个外部命令,从DOS 1.0起就带有此命令,因此可见此命令的重要性了。

虽然此命令的功能非常强大,可以解决许多问题,可是对许多人来说,尤其是初学者来说,却非常不易掌握。

因此,现将DEBUG的命令详细介绍一番,以让大家知道它的使用。

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:05000100:0500 jmp 502 ; a 2-byte short jump0100:0502 jmp near 505 ; a 3-byte near jump0100:0505 jmp far 50a ; a 5-byte far jump可以将 near 前缀缩写为 ne。

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

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

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

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

以下范例显示两种格式:mov ax,21 ; load AX with 21hmov 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 命令支持所有形式的间接注册命令,如下例所示:add bx,34[bp+2].[si-1]pop [bp+di]push [si] )还支持所有操作码同义词,如下例所示:loopz 100loope 100ja 200jnbe 200对于 8087 操作码,必须指定 wait 或 fwait 前缀,如下例所示:fwait fadd st,st(3) ; this line assembles; an fwait prefixDebug:C(比较)比较内存的两个部分。

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

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

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

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

说明如果 range 和 address 内存区域相同,Debug 将不显示任何内容而直接返回到 Debug 提示符。

如果有差异,Debug 将按如下格式显示:address1 byte1 byte2 addess2范例以下命令具有相同效果:c100,10f 300c100l10 300每个命令都对 100h 到 10Fh 的内存数据块与 300h 到 30Fh 的内存数据块进行比较。

Debug 响应前面的命令并显示如下信息(假定 DS = 197F):197F:0100 4D E4 197F:0300197F:0101 67 99 197F:0301197F:0102 A3 27 197F:0302197F:0103 35 F3 197F: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。

这表明那些地址中的值是相同的。

Debug:D(转储)显示一定范围内存地址的内容。

d [range]参数range指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。

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

如果不指定 range,Debug 程序将从以前 d 命令中所指定的地址范围的末尾开始显示 128 个字节的内容。

有关显示寄存器内容的信息,请单击“相关主题”列表中的 Debug R(寄存器)。

说明当使用 d 命令时,Debug 以两个部分显示内存内容:十六进制部分(每个字节的值都用十六进制格式表示)和 ASCII 码部分(每个字节的值都用 ASCII 码字符表示)。

每个非打印字符在显示的 ASCII 部分由句号 (.) 表示。

每个显示行显示 16 字节的内容,第 8 字节和第 9 字节之间有一个连字符。

每个显示行从 16 字节的边界上开始。

范例假定键入以下命令:dcs:100 10fDebug 按以下格式显示范围中的内容:04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER......如果在没有参数的情况下键入 d 命令,Debug 按以前范例中所描述的内容来编排显示格式。

显示的每行以比前一行的地址大 16 个字节(如果是显示 40 列的屏幕,则为 8 个字节)的地址开头。

对于后面键入的每个不带参数的 d 命令,Debug 将紧接在最后显示的命令后立即显示字节内容。

如果键入以下命令,Debug 将从 CS:100 开始显示 20h 个字节的内容:dcs:100 l 20如果键入以下命令,Debug 将显示范围从 CS 段的 100h 到 115h 中所有字节的内容:dcs:100 115Debug:E(键入)将数据输入到内存中指定的地址。

可以按十六进制或 ASCII 格式键入数据。

以前存储在指定位置的任何数据全部丢失。

e address [list]参数address指定输入数据的第一个内存位置。

list指定要输入到内存的连续字节中的数据。

有关集成记忆码的信息,请单击“相关主题”列表中的 Debug A(汇编)。

有关显示内存部分内容的信息,请单击“相关主题”列表中的 Debug D (转储)。

说明使用 address 参数如果在没有指定可选的 list 参数的值情况下指定 address 的值,Debug 将显示地址和内容,在下一行重复地址,并等待您的输入。

此时,您可以执行下列操作之一:替换字节值。

为此,请在当前值后键入新值。

如果您键入的值不是有效的十六进制值,或该值包含两个以上的数字,则 Debug 不会回显无效或额外的字符。

进入下一个字节。

为此,请按 SPACEBAR(空格键)。

要更改该字节中的值,请在当前值后键入新值。

如果按 SPACEBAR(空格键)时,移动超过了 8 位界限,Debug 程序将显示新的一行并在行首显示新地址。

返回到前一个字节。

为此,请按 HYPHEN 键 (-)。

可以反复按 HYPHEN 键 (-) 向后移动超过多个字节。

在按 HYPHEN 时,Debug 开始新行并显示当前地址和字节值。

停止执行 e 命令。

为此,请按 ENTER 键。

在任何字节位置都可以按 ENTER。

使用 list 参数如果指定 list 参数的值,随后的 e 命令将使用列表中的值替换现有的字节值。

如果发生错误,将不更改任何字节值。

List 值可以是十六进制字节或字符串。

使用空格、逗号或制表符来分隔值。

必须将字符串包括在单或双引号中。

范例假定键入以下命令:ecs:100Debug 按下面的格式显示第一个字节的内容:04BA:0100 EB.要将该值更改为 41,请在插入点键入 41,如下所示:04BA:0100 EB.41_可以用一个 e 命令键入连续的字节值。

在键入新值后按 SPACEBAR(空格键),而不是按 ENTER 键。

Debug 显示下一个值。

在此范例中,如果按三次 SPACEBAR(空格键),Debug 将显示下面的值:04BA:0100 EB.41 10. 00. BC._要将十六进制值 BC 更改为 42,请在插入点键入 42,如下所示:04BA:0100 EB.41 10. 00. BC.42_假定决定值 10 应该是 6F。

要纠正该值,请按 HYPHEN 键两次以返回到地址 0101(值 10)。

Debug 显示以下内容:04BA:0100 EB.41 10. 00. BC.42-04BA:0102 00.-04BA:0101 10._在插入点键入 6f 更改值,如下所示:04BA:0101 10.6f_按 ENTER 停止 e 命令并返回到 Debug 提示符下。

以下是字符串项的范例:eds:100 "This is the text example"该字符串将从 DS:100 开始填充 24 个字节Debug:F(填充)使用指定的值填充指定内存区域中的地址。

合集下载

手把手教你汇编Debug

手把手教你汇编Debug

⼿把⼿教你汇编Debug关于汇编的第⼀篇⽂章:Hello⼤家好,我是程序员cxuan!我们上篇⽂章了解了⼀下基本的寄存器,这篇⽂章我们来进⾏实际操作⼀下。

原⽂链接:我们以后将会⽤到很多 Debug 命令,这⾥我们先来熟悉⼀下它们。

Debug 是什么Debug 是 Windows / Dos 操作系统提供的⼀种功能。

使⽤ Debug 能让我们⽅便查看 CPU 各种寄存器的值、内存情况,⽅便我们调试指令、跟踪程序的运⾏过程。

接下来我们会⽤到很多 debug 命令,但是使⽤这些命令的前提是,你需要在电脑上安装⼀下 debug,Windows/Mac 都可以安装,获取链接我已经给你找出来了。

阿,忘记说了,我们这⾥使⽤的是Dos box来模拟汇编的操作环境。

传送门(Mac 和 Windows 都是):下载完成后打开 DosBox ,打开之后是这样的。

此时我们输⼊ debug 命令应该提⽰的是因为我们还没有进⾏连接和挂载,此时我们执⾏mount c D:\debug执⾏这条命令时,你需要现在 D 盘下创建⼀个 debug ⽂件夹,然后我们挂载到 debug 下⾯。

并且执⾏C:切换到 C 盘路径下。

此时我们就可以执⾏ debug 命令了。

这⾥需要注意⼀点,我在 Windows 10 系统下搭建 Debug 环境时,在挂载完成后输⼊ debug ,还是提⽰Illegal command:debug,此时你需要再下载⼀个debug.exe ,贴⼼的我也把下载地址给你了。

下载地址:密码:3akd需要下载⾥⾯的debug.exe,然后把它放在你挂载的路径下,这⾥我挂载的路径时 D 盘下的 debug ⽂件夹。

放置完成之后,再输⼊ debug 就可以了。

因为每次打开 Dosbox 都会执⾏上⾯这些命令,真的好烦,那怎么办呢?⼀个简单的办法是在 Dosbox 安装路径下找到打开之后,在末尾键⼊就 OK 了,下次直接打开 Dosbox ,会默认执⾏这三条命令,⾄此,就是我搭建 Dosbox 遇到的所有问题了。

DEBUG命令及汇编语言实验(2011版)

DEBUG命令及汇编语言实验(2011版)

DEBUG命令及汇编语言实验指导书(2011)石河子大学信息科学与技术学院微机原理与接口技术课程组编目录第一部分DEBUG命令介绍 (3)一、编写汇编语言的两种主要方法: (3)二、80x86和Pentium微处理器中的寄存器 (3)三、DEBUG常用指令 (5)A (Assemble) 汇编指令 (5)D (Display) 显示命令 (5)G (Go) 运行命令 (5)R (Register) 寄存器命令 (5)U (Unassemble) 反汇编命令 (6)T (Track)跟踪命令 (6)DEBUG的基本指令一览表 (6)四、操作实例 (7)五、DEBUG 应用技巧 (8)六、DEBUG实验程序 (9)1、显示一个字符 (9)2、显示所有ASCII码的程序 (9)3、由键盘输入任意字符串,然后显示出来 (9)4、显示一字符串 (9)5、用debug命令改变显示器显示状态 (10)6、将1~16放入以2000H开始的单元中 (10)7、将1000H开始的4个单元中的大数找出来 (10)8、比较连续两个单元中数的大小 (10)9、搜索“$”字符 (11)10、测试数的最高位 (11)11、比较SI和DI的内容,相等则AL=00,不等则AL=FFH (12)12、人机对话程序 (12)七、系统功能调用 (14)1、什么是DOS系统功能调用 (14)2、常用的系统功能调用 (14)第二部分汇编语言实验 (16)一、上机前的软件准备 (16)二、详细说明 (16)三、汇编语言源程序 (18)1、在屏幕上显示一个字符的源程序程序: (18)2、显示所有ASCII的源程序: (18)3、在屏幕上显示一个指定字符串的源程序: (18)4、显示所有26个大小写英文字符 (19)5、对话程序 (19)6、一位数的减法,6-2=4 (20)7、显示2位数结果,16-3 (21)8、比较A、B两单元中的数,将较大的数送A单元。

附录六X86汇编语言程序调试工具DEBUG的使用

附录六X86汇编语言程序调试工具DEBUG的使用

附录七 X86汇编语言程序调试工具 DEBUG 使用简介DEBUG是DOS系统下的程序调试工具,以DOS外部命令形式提供。

该外部命令对应的文件名为DEBUG.EXE,一般存放在DOS子目录下。

运行DEBUG程序的命令格式为:DEBUG [<驱动器名>:][<路径>][<文件名>[.<扩展名>]][<参数1>][<参数2>] < 回车> 例如:C:\DOS>DEBUG A.EXE < 回车>进入DEBUG后出现提示符“-”,就表示可以接受DEBUG命令了。

DEBUG命令使用说明:1)DEBUG命令是在提示符“-”之后,由键盘键入。

2)每条命令以单个字母的命令符开头,然后是命令操作参数。

3)操作参数与命令符之间用空格隔开,操作参数之间用空格或逗号隔开。

4)所用数均为十六进制数,不必加写H。

5)命令结束符是回车键<Enter>(在下面的命令格式中,不再单独标出)。

按组合键Ctrl+Break可中止正在执行的DEBUG命令,并返回提示符“—”。

常用命令介绍如下(以下有下划线处表示是从键盘输入的内容):告警:使用以下关于修改内存的命令A、E、F、M等,应注意内存地址(包括段基值和偏移地址)的准确性。

错误地更新了系统程序区,可能会造成死机!写磁盘的DEBUG命令(本文未列出)更应慎重使用!1.DEBUG命令列表—?屏幕显示DEBUG命令列表。

2.返回DOS命令Q(Quit)—Q退出DEBUG程序并返回DOS。

注意此命令不能将内存中的文件存盘。

3.显示内存单元内容命令D(Dump)—D[地址或范围]其中“范围”包括起始地址和结束地址,可以在地址前加段前缀。

例如:—D1366:110 11F屏幕显示为1366:0110 24 09 7E 21 00 00 00 00-34 00 00 00 00 00 55 13 $.~ !....4.....U.上面分左、中、右三部分显示:左边部分1366:0110是内存单元地址,中间及右边部分分别是1366:0110至1366:011F内存单元内容的16进制数表示及ASCII字符(“.”表示非ASCII码的数字)。

汇编实验-DEBUG程序的各种命令

汇编实验-DEBUG程序的各种命令

一、实验目的及要求1. 继续学习使用DEBUG程序的各种命令。

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

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

二、实验原理、实验内容DEBUG命令1) G命令格式:G[二起始地址][断点地址]功能:从起始地址幵始执行到断点地址,如不设断点地址,则程序一直执行到终止指令才停止2) P命令功能:执行汇编程序,单步跟踪与T命令不同的是:P命令不会跟踪进入子程序或软中断。

其使用方式与T相同3) N命令功能:指定文件名。

为读/写文件做准备4) W命令功能:向磁盘写内容5) L命令功能:从磁盘将文件或扇区内容读入内存注意:使用该命令前,必须用N命令设定文件名1.按照下列给定步骤完成求累加和程序:程序:MOV BX,1000MOV CX,10MOV AL,0LOP: ADD AL,[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退出DEBUG6)用命令DEBUG AAf次调入DEBUGS文件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是否正确。

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,它是可用于测试和调试MS-DOS 可执行文件的程序。

Debug [[drive:][path] filename [parameters]]参数[drive:][path] filename指定要测试的可执行文件的位置和名称。

parameters指定要测试的可执行文件所需要的任何命令行信息。

++说明使用Debug 命令但不指定要测试的文件如果使用没有位置和文件名的Debug 命令,然后键入所有的Debug 命令以响应Debug 提示符,连字符(-)。

Debug 命令以下是Debug 命令列表:? 显示Debug 命令列表。

a 汇编8086/8087/8088 记忆码。

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

汇编语言学习手把手的Debug教程

汇编语⾔学习⼿把⼿的Debug教程⽬录Debug 是什么Debug 实战Debug -rDebug -dDebug -eDebug -uDebug -tDebug -a总结关于汇编的第⼀篇⽂章:Hello⼤家好,我是程序员cxuan!我们上篇⽂章了解了⼀下基本的寄存器,这篇⽂章我们来进⾏实际操作⼀下。

我们以后将会⽤到很多 Debug 命令,这⾥我们先来熟悉⼀下它们。

Debug 是什么Debug 是 Windows / Dos 操作系统提供的⼀种功能。

使⽤ Debug 能让我们⽅便查看 CPU 各种寄存器的值、内存情况,⽅便我们调试指令、跟踪程序的运⾏过程。

接下来我们会⽤到很多 debug 命令,但是使⽤这些命令的前提是,你需要在电脑上安装⼀下 debug,Windows/Mac 都可以安装,获取链接我已经给你找出来了。

阿,忘记说了,我们这⾥使⽤的是 Dos box来模拟汇编的操作环境。

下载完成后打开 DosBox ,打开之后是这样的。

此时我们输⼊ debug 命令应该提⽰的是因为我们还没有进⾏连接和挂载,此时我们执⾏mount c D:\debug执⾏这条命令时,你需要现在 D 盘下创建⼀个 debug ⽂件夹,然后我们挂载到 debug 下⾯。

并且执⾏C:切换到 C 盘路径下。

此时我们就可以执⾏ debug 命令了。

这⾥需要注意⼀点,我在 Windows 10 系统下搭建 Debug 环境时,在挂载完成后输⼊ debug ,还是提⽰ Illegal command:debug ,此时你需要再下载⼀个 debug.exe ,贴⼼的我也把下载地址给你了。

需要下载⾥⾯的 debug.exe,然后把它放在你挂载的路径下,这⾥我挂载的路径时 D 盘下的 debug ⽂件夹。

放置完成之后,再输⼊ debug 就可以了。

因为每次打开 Dosbox 都会执⾏上⾯这些命令,真的好烦,那怎么办呢?⼀个简单的办法是在 Dosbox 安装路径下找到打开之后,在末尾键⼊就 OK 了,下次直接打开 Dosbox ,会默认执⾏这三条命令,⾄此,就是我搭建 Dosbox 遇到的所有问题了。

汇编DEBUG工具讲解

世界技术 报效国家
5.汇编命令A A [地址];从指定的地址开始输入符号指令;如省略地
址,则接着上一个A命令的最后一个单元开始;若第一次使用 A命令省略地址,则从当前CS:IP开始(通常是CS:100)。
注释: ①在DEBUG下编写简单程序即使用A命令。 ②每条指令后要按回车。 ③不输入指令按回车,或按Ctrl+C结束汇编。 ④支持所有8086符号硬指令,伪指令只支持DB、DW, 不支持各类符号名。
如不指定被调试程序,DEBUG设置所有段寄存器的 值相同,并指向最低的、可用的段地址;SP指向本 段的尾部;IP指向本段的0100H单元;其它通用寄存 器和所有状态标志清0。
世界技术 报效国家
如带入的被调试程序扩展名不是.EXE,则BX、 CX包含被调试文件长度(字节数,BX为高位), 其他同上。(带入.COM程序同此)
起始地址,不是范围
世界技术 报效国家
4.显示修改寄存器命令R
① R;★显示所有寄存器和标志位状态;
★显示当前CS:IP指向的指令。
显示标志时使用的符号:
标志
标志=1
OF
OV
DF
DN
IF
EI
SF
NG

ZF
ZR
AF
AC
PF
PE
CF
CY
标志=0 NV UP DI PL NZ NA PO NC
② R 寄存器名;显示并修改指定的寄存器。 RAX ;RIP;RF等
写 帮助
格式
N [设备:][路径]文件名[.扩展名]
O 端口地址 P [=地址][值] Q R [寄存器] S 范围 表 T [=地址]或[范围] U [地址]或[范围] W [地址[设备扇区,扇区]] ?

debug和汇编

DEBUG的主要命令有哪些?DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

1.DEBUG程序的调用在DOS的提示符下,可键入命令:C:>DEBUG [d:][path][文件名][参数1][参数2]其中文件名是被调试文件的名字,它必须是可执行文件(EXE),两个参数是运行被调试文件所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。

2.DEBUG的主要命令⑴显示内存单元内容的命令D,格式为:-D [地址] 或 -D [范围]例如,显示指定范围内存单元内容的方法为:-D 100 1FF18E4:0100 47 06 04 02 38 01 47 06 - 06 02 00 02 47 06 08 02 G...8.G.....G...18E4:0110 02 02 3B 04 02 68 02 00 - 4D 20 50 51 56 57 8B 37 ..;..h..M PQVW.7 其中左边为十六进制表示形式,右边为ASCII码表示形式,“.”表示不可显示字符。

这里没有指定段地址,D命令自动显示DS段的内容。

⑵修改内存单元内容的命令E,它有两种格式1)用给定内容代替指定范围的单元内容,格式为:-E 地址内容表例如: -E DS:100 F3 58 59 5A 8D,即用F3,58,59,5A,8D五个字节代替内存单元DS:100到DS:100的内容。

2)逐个单元相继地修改,格式为:-E 地址例如: -E DS:10018E4:0100 89.78此命令是将0100单元内容89改为78。

78是程序员从键盘输入的。

程序员在修改完一个单元后,可按“空格”键继续修改下一单元内容,直至按“回车”键结束该命令。

⑶检查和修改寄存器内容的命令R,它有三种方式1)显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态-R该命令可显示AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,CS,IP及标志寄存器内容。

汇编语言debug调试

21
PSW中的标志位的符号表示 PSW中的标志位的符号表示
标志名 OF DF IF SP ZF AF PF CF 标志为1 标志为1 OV DN EI NG ZR AC PE CY 标志为0 标志为0 NV UP DI PL NZ NA PO NC
6
4.“ 4.“ R ” 命令 功能: 功能:检查和修改寄存器的内容 格式: 格式: (1) -R 执行:显示CPU内所有寄存器内容和标志位状态 CPU内所有寄存器内容和标志位状态 执行:显示CPU (2) -R 寄存器名字 执行:显示和修改某个寄存器的内容 执行: (3) -RF 执行: 执行:显示和修改标志位状态 <上机实践> 上机实践>
8
6.“ 6.“ T ” 命令 功能: 功能:跟踪命令 格式: 格式: [=指令地址 指令地址] (1) -T [=指令地址] 功能:从指定的地址起执行一条指令后停下来, 功能:从指定的地址起执行一条指令后停下来,显示 所有寄存器内容及标志位的值; 所有寄存器内容及标志位的值;如未指定地址则从 当前的CS:IP CS:IP开始执行 当前的CS:IP开始执行 指令地址][要执行的指令条数N] (2) –T [=指令地址][要执行的指令条数N] T [=指令地址][要执行的指令条数 功能:从指定地址开始执行N条指令后停下来, 功能:从指定地址开始执行N条指令后停下来,显示 各寄存器的值 上机实践> <上机实践>
10
8.“ 8.“ U ” 命令 功能: 功能:反汇编命令 格式: 格式: 指令地址] (1) –U [指令地址] U [指令地址 执行:从指定地址开始,反汇编32个字节;若未指定地 执行:从指定地址开始,反汇编32个字节; 32个字节 则从上一个U 址,则从上一个U命令的最后一条指令的下一个单元开 始显示32 32个字节 始显示32个字节 开始地址] 终止地址] (2) –U [开始地址] [终止地址] U [开始地址 [终止地址 执行:从指定的开始地址开始反汇编, 执行:从指定的开始地址开始反汇编,到终止地址结束 <上机实践> 上机实践>
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档