当前位置:文档之家› Debug的学习扫盲

Debug的学习扫盲

Debug的学习扫盲
Debug的学习扫盲

关于Debug的学习扫盲

Debug是什么?

豪华绚丽的Windows让人们把DOS抛到遥远的记忆角落。然而,真正有价值的东西不会轻易退出历史的舞台,Debug就是这样的经典作品之一。从古老的DOS到现今的Windows XP,Debug一直紧紧跟随着微软的操作系统,静静躺在系统文件夹里。也许你平时对它不闻不问,但要想成为人人羡慕的系统高手,我们就得唤醒这个沉睡已久的命令行工具了,通过阅读本文对它的研究,相信你会同笔者一样的感觉到:姜,还是老的辣!

A、寻根溯源:世界第一只计算机BUG和Debug

霍德华·艾肯在哈佛大学攻读物理学博士学位时,开始梦想制作一台计算机帮他解决数学难题,工作后,他找到IBM 公司为其投资100万美元研制计算机,第一台成品艾肯把它取名为:马克Ⅰ号,又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机、肉铺磅秤、咖啡碾磨机等乱七八糟玩意的行业,正式跨进了计算机“领地”。

1945年9月9日,为马克II号编制计算程序的女数学家格雷斯·霍波在调试程序时出现了故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是霍波把这只飞蛾粘在了计算机的工作日志中,并恢谐地把程序故障统称为“臭虫”(bug),自此以后,只要这台计算机一停止运转(那时候是经常的事),同事们就会开玩笑地对霍德华·艾肯说,我们正在“Debug”(除虫)呢!后来“bug”成为计算机领域的专业行话,如DOS系统中的调试程序,程序名称就叫Debug。

目前那只飞蛾还保存在美国史密森尼博物院的美国历史国家博物馆中呢。

1981年,第一个PC DOS(即DOS 1.00)面世时就已经带上了https://www.doczj.com/doc/3c2291420.html,。不过,到目前为止,Debug一直没有大的变动——当然,这是指Debug提供给用户的功能,Debug本身代码、内部运行机制必然随着操作系统的变化而不断改变。然而,无论是Windows 98、2000还是XP,Debug的操作方式与纯DOS环境下基本一样。

B、初学乍练:短短几行命令学用Debug

Debug.exe文件位于Windows\system32目录(Windows XP)或Windows\command目录(Windows 9x)下。基本使用方法如下:

Step 1:点击“开始→运行”,输入“CMD”(Windows 2000/XP)或“Command”(Windows 9x)打开命令提示符窗口。

Step 2:输入“Debug”并回车,出现提示符“-”,现在你已经开启了神秘的Debug世界了。

小提示

执行“?”命令可以参看Debug主要命令及参数。

Step 3:输入“D FE00:0”,回车后可以看到结果(见图1),这个就是主板BIOS的厂商信息。接着再输入“D FFFF:5 L 8”,回车后,主板的BIOS版本日期也出来了。

Step 4:现在再输入“Q”命令,回车后就退出了Debug程序。

C、继续深入:Debug经典实例秀

在操作以下实例之前,提醒您要注意操作安全,因为Debug命令有一定风险,如果输入错误,有可能对系统造成一定破坏,这点请您一定注意。

实例1:查看你的显卡信息

输入“D C000:0090”命令并回车,这时右侧部分可以看到系统中显卡的显存、生产厂商等信息。

实例2:制作BIOS密码破解器

忘记BIOS密码,一般都采用放电法来清空密码,但这对普通用户有一定难度,并且还得开机箱。其实利用Debug 的0命令则简单得多!请在“-”后输入以下命令:

o 70 19

o 71 15

q

重启电脑,系统提示CMOS校验和出错,并要求重新进入BIOS设置CMOS。

小提示:70和71是CMOS的两个端口,我们可以在它们的后面随意写入一些错误数据(如19、16、17等),就会清空CMOS里所有设置,如果不见效不妨多用几个数据试试。

如果觉得每次输入Debug命令太麻烦,可以用下面的方法把命令存成一个COM文件,需要解除密码时只要运行一下就行了。请在Debug中命令提示符“-”后输入以下命令:

A 100

MOV DX,70

MOV AL,10

OUT DX,AL

MOV DX,71

MOV AL,01

OUT DX,AL(这里要两次回车,接着会出现“-”提示符,然后再输入下面的命令)

R CX(回车后会出现“CX 0000”,然后再次按回车)

0C

N https://www.doczj.com/doc/3c2291420.html,

W

Q

这样就会在Debug当前目录下生成https://www.doczj.com/doc/3c2291420.html,,是一个清除BIOS口令设置的程序,只要在DOS提示符下键入“pass”,然后按回车即可。经我们测试,其实在Windows下面运行也可以成功,只是不太稳定,有时会重新启动计算机。

二、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 https://www.doczj.com/doc/3c2291420.html, A: B:

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

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

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

IP寄存器置为0100H。栈指针SP指向尾部或装入程序的暂存部分的底部。

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

注意,若DEBUG装入扩展名为.EXE的文件,则DEBUG需重定位且设置段寄存器指示器为文件中所定义的值。但DS,ES 指向最低可用段处的程序区前缀。BX和CX为文件容量值。而 .EXE文件如果在连接时选择了装入内存高处的参数,则该程序装入高处。

三、DEBUG的主要命令功能与格式

DEBUG命令是在DEBUG提示符“-”下,由键盘键入的。每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键 Enter。命令及参数的输入可以是大小写的结合。Ctrl+Break键可中止命令的执行。Ctrl+Num Lock键可暂停屏幕卷动,按任一键继续。所用数均为十六进制数,且不必写H。

* 1. 汇编命令A

格式:A [[<段寄存器名>/<段地址>:] <段内偏移>]

上式等价于:

(1) A <段寄存器名>:<段内偏移>

(2) A <段地址>:<段内偏移>

(3) A <段内偏移>

(4) A

功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。

注: 其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。

2. 比较命令C

格式: C <源地址范围>,<目标地址>

其中<范围>是由<起始地址> <终止地址>或者是由<起始地址> L <长度>指出的一片连续单元。

功能:从<源地址范围>的起始地址单元起逐个与目标起始地址以后的单元顺序比较单元的内容,直至源终止地址为止。遇有不一致时,以<源地址> <源内容> <目标内容> <目标地址>的形式显示失配单元及内容。

* 3. 显示内存命令D

格式: D [<地址>/<范围>]

上式等价于:

(1) D <地址>

(2) D <范围>

(3) D

功能:以两种形式显示指定范围的内存内容。一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII 码的字符,对不可见字符以‘.’代替。

注: 其中(1)以CS为段寄存器。(3)显示CS:100起始的一段内容

* 4. 修改内存命令E

格式: E <地址> [<单元内容表>]

上式等价于:

(1) E <地址>

(2) E <地址> <单元内容表>

其中<单元内容表>是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。

功能: (1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter为止。(2)将<单元内容表>逐一写入由<地址>开始的一片单元。

5. 填充内存命令F

格式: F <范围> <单元内容表>

功能: 将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。

例如: -F 5BC:200 L 10 B2,‘XYZ’,3C

* 6. 执行命令G

格式: G [=<地址>[,<断点>]]

上式等价于:

(1) G

(2) G=<地址>

(3) G=<地址>,<断点>

功能: 执行内存中的指令序列

注: (1)从CS:IP所指处开始执行

(2)从指定地址开始执行

(3)从指定地址开始执行,到断点自动停止。

7. 十六进制算求运算指令H

格式: H <值1> <值2>

功能: 求十六进制数<值1>和<值2>的和与差并显示结果。

8. 端口输入命令I

格式: I <端口地址>

功能: 从指定端口接收信息并将输入的内容显示出来。

* 9. 读盘命令L

格式: L <地址> <驱动器号> <起始逻辑扇区> <所读扇区个数n>

其中<地址>的缺省值为CS:100。逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:物理扇区是按0面0道1区,0面0道2区,……,0面0道9区,0面1道1区,……,0面39道9区,1面0道1区,……,1面39道9区排列。而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道1扇区至9扇区,逻辑扇区号为0—8;物理扇区1面0道1扇区至9扇区,逻辑扇区号为9—11H;物理扇区0面1道1扇区至9扇区,逻辑扇区号为12—1AH;……。这样每道先0面后1面一直排下去。

其中<驱动器号>为0、1或2,0表示A驱,1表示B驱,2表示硬盘。

功能: 将<驱动器号>指定的盘上,从<起始逻辑扇区>起,共n个逻辑扇区上的所有字节顺序读入指定内存地址开始的一片连续单元。当L后的参数缺省时,必须在L之前由N命令指定(或进入DEBUG时一并指出)所读驱动器文件名。此时L执行后将该文件装入内存。

例如:-N EXAMPLE

-L

将当前驱动器上的EXAMPLE文件装入CS:100起始的一片内存单元。

10. 内存搬家命令M

格式: M <源地址范围> <目标起始地址>

其中源及目标地址若仅输入偏移量,则隐含相对DS。

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

例如:-M CS:100 110 600

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

* 11. 命名待读/写文件命令N

格式: N <文件名说明>

功能: 为L/W命令指定待装入/写盘文件

注: 其它形式参考DOS手册

12. 端口输出命令O

格式: O <端口地址> <字节>

功能:将该<字节>从指定<端口地址>输出。

例如:-O 2F 4F

将4FH从端口2FH输出

* 13. 结束DEBUG返回DOS命令Q

格式:Q

功能:返回DOS提示符下

* 14. 显示修改寄存器命令R

格式: R [<寄存器名>]

上式等价于:

(1) R

(2) R <寄存器名>

功能: (1)显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句形式。其中对状态标志FLAG以每位的形式显示,详见下表。

状态标志显示形式示意图

标志位溢出OF 方向DF 中断IF 符号SF 零 ZF 辅助AF 奇偶PF 进位CF

状态有/无减/增开/关负/正零/非有/无偶/奇有/无

显示 OV/NV DN/UP EI/DI NG/PL ZR/NZ AC/NA PE/PO CY/NC

(2)显示指定寄存器内容

例如:-R AX

-R F

15. 搜索指定内存命令S

格式: S <地址范围> <表>

功能:在指定范围搜索表中内容,找到后显示表中元素所在地址

例如:-S CS:100 110 41

显示:04BA:0104

04BA:010D

表示在位移100H至110H间的上述两处有41H。又如:

-S C3:100 L 11 41“AB”E

表示在当前代码段位移100H至111H处寻找连续4个字节内容为41H、41H、42H、0EH的起始单元地址。

* 16. 执行并显示系统环境命令T

格式:T [=<地址>] [<条数>]

功能:执行由指定地址起始的、由<条数>指定的若干条命令。其中<地址>的缺省值是当前IP值,<条数>的缺省值是一条。

例如:-T 执行当前指令并显示状态

-T 10 从当前指令始执行10H条指令

* 17. 反汇编命令U

格式:U [<地址>/<地址范围>]

上式等价于:

(1) U <地址>

(2) U <地址范围>

(3) U

功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次U指令后下一地址的值。这样可以连续反汇编。

* 18. 写盘命令W

格式:W <地址> <盘号> <起始逻辑扇区> <所写逻辑扇区数n>

功能:与L命令不同的地方是将内存从<地址>起始的一片单元内容写入指定扇区。只有W而没有参数时,与N命令配合使用将文件写盘。

注:要求大家对其中打"*"的DEBUG命令必须能熟练使用。

四、如何在DEBUG环境下执行汇编指令

本节从几个典型例子出发,通过上机实习,引导读者学会使用DEBUG调试程序运行汇编语言程序,以便读者在以后的学习中能够有一个熟练的调试和运行手段。

在进入DEBUG的提示符‘-’之后,用户可以通过DEBUG的命令输入汇编源程序,并用相应命令将其汇编成机器语言程序;然后调试并运行该程序。

例1 在DEBUG下运行如下程序。

MOV DL,33H ;字符3的ASCII码送DL

MOV AH,2 ;使用DOS的2号功能调用

INT 21H ;进入功能调用,输出‘3’

INT 20H ;BIOS中断服务程序,正常结束。

该程序运行结果是在显示器上输出一个字符‘3’。如果要输出其它字符,请改变程序中‘33H’为相应字符的ASCII 码。

运行步骤:

(1)进入DEBUG

设DEBUG.EXE位于C盘DOS子目录,进入DOS后键入DEBUG ,即

C:\DOS>DEBUG

屏幕显示: -

‘-’号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。现在用A命令送程序如下:

(2)送程序并汇编

-A 100

169C:0100 MOV DL,33

169C:0102 MOV AH,2

169C:0104 INT 21

169C:0106 INT 20

169C:0108

-

至此程序已送完,汇编成机器指令,顺序存放于CS段100H起始的8个存储单元。

如果在汇编后想看一下机器指令是什么样子的话,方法之一是可以用反汇编命令U作如下操作:

(3)反汇编

-U 100 108

169C:0100 B233 MOV DL,33

169C:0102 B402 MOV AH,02

169C:0104 CD21 INT 21

169C:0106 CD20 INT 20

169C:0108

-

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

(4)运行程序

-G

3

Program terminated normally

-

(5)写COM文件

-R BX

BX 0000

:

-R CX

CX 0000

:A

-N https://www.doczj.com/doc/3c2291420.html,

-W

-

其中(BX)*10000H+(CX)用于指定所写的字节数,(BX)为该数的高16位,(CX)为该数的低16

位。因此,上面的过程实际上是要将A个字节写入文件https://www.doczj.com/doc/3c2291420.html,。

(6)送机器指令程序

-E 200 B2 33 B4 02 CD 21 CD 20

-

(7)显示内存

-D 200 208

169C:0200 B2 33 B4 02 CD 21 CD 20-61 . 3 . . . ! . . a

-

(8)执行机器指令程序

-G=200

3

Program terminated normally

-

(9)退出DEBUG返回DOS,执行https://www.doczj.com/doc/3c2291420.html,文件

-Q

C:\DOS>EXCOM

3

C:\DOS>

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: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 ju mp

可以将near 前缀缩写为ne。

区分字和字节内存位置

当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀word ptr 或者前缀byte ptr 指定数据类型。可接受的缩写分别是wo 和b y。以下范例显示两种格式:

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 QUOTA TION MAR K:"'

db "THIS IS A QUOTA TION MARK:'"

dw 1000,2000,3000,"BACH"

范例

a 命令支持所有形式的间接注册命令,如下例所示:

add bx,34[b p+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 说明”。说明

如果range 和address 内存区域相同,Debug 将不显示任何内容而直接返回到Debug 提示符。如果有差异,Debug 将按如下格式显示:

address1 byte1 byte2 addess2

范例

以下命令具有相同效果:

c100,10f 300

c100l10 300

每个命令都对100h 到10Fh 的内存数据块与300h 到30Fh 的内存数据块进行比较。

Debug 响应前面的命令并显示如下信息(假定DS = 197F):

197F:0100 4D E4 197F:0300

197F:0101 67 99 197F:0301

197F:0102 A3 27 197F:0302

197F:0103 35 F3 197F:0303

197F:0104 97 BD 197F:0304

197F:0105 04 35 197F:0305

197F:0107 76 71 197F:0307

197F:0108 E6 11 197F:0308

197F:0109 19 2C 197F:0309

197F:010A 80 0A 197F:030A

197F:010B 36 7F 197F:030B

197F:010C B E 22 197F:030C

197F:010D 83 93 197F:030D

197F:010E 49 77 197F:030E

197F: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 10f

Debug 按以下格式显示范围中的内容:

04B A: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 115

Debug:E(键入)

将数据输入到内存中指定的地址。

可以按十六进制或ASCII 格式键入数据。以前存储在指定位置的任何数据全部丢失。

e address

参数

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:100

Debug 按下面的格式显示第一个字节的内容:

04B A:0100 EB.

要将该值更改为41,请在插入点键入41,如下所示:

04B A:0100 EB.41_

可以用一个e 命令键入连续的字节值。在键入新值后按SPAC EBAR(空格键),而不是按ENTER 键。Debug 显示下一个值。在此范例中,如果按三次SPACEB AR(空格键),Debug 将显示下面的值:

04B A:0100 EB.41 10. 00. BC._

要将十六进制值BC 更改为42,请在插入点键入42,如下所示:

04B A:0100 EB.41 10. 00. BC.42_

假定决定值10 应该是6F。要纠正该值,请按HYPHEN 键两次以返回到地址0101(值10)。Debug 显示以下内容:

04B A:0100 EB.41 10. 00. BC.42-

04B A:0102 00.-

04B A:0101 10._

在插入点键入6f 更改值,如下所示:

04B A:0101 10.6f_

按ENTER 停止e 命令并返回到Debug 提示符下。

以下是字符串项的范例:

eds:100 "This is the text example"

该字符串将从DS:100 开始填充24 个字节

Debug:F(填充)

使用指定的值填充指定内存区域中的地址。

可以指定十六进制或ASCII 格式表示的数据。任何以前存储在指定位置的数据将会丢失。

f range list

参数

range

指定要填充内存区域的起始和结束地址,或起始地址和长度。关于有效的range 值的信息,请单击“相关主题”列表中的“Debug 说明”。

list

指定要输入的数据。List 可以由十六进制数或引号包括起来的字符串组成。

说明

使用range 参数

如果range 包含的字节数比list 中的数值大,Debug 将在list 中反复指派值,直到range 中的所有字节全部填充。

如果在range 中的任何内存损坏或不存在,Debug 将显示错误消息并停止f 命令。

使用list 参数

如果list 包含的数值多于range 中的字节数,Debug 将忽略list 中额外的值。

范例

假定键入以下命令:

f04ba:100l100 42 45 52 54 41

作为响应,Debug 使用指定的值填充从04BA:100 到04BA:1FF 的内存位置。Debug 重复这五个值直到100h 个字节全部填满为止。

Debug:G(转向)

运行当前在内存中的程序。

g [=address] [breakpoints]

参数

=address

指定当前在内存中要开始执行的程序地址。如果不指定address,Windows 2000 将从CS:IP 寄存器中的当前地址开始执行程序。

breakpoints

指定可以设置为g 命令的部分的1 到10 个临时断点。

有关执行循环、重复的字符串指令、软件中断或子程序的信息,请单击“相关主题”列表中的Debug P(执行)。

有关执行指令的信息,请单击“相关主题”列表中的Debug T(跟踪)。

Debug:H(十六进制)

对指定的两个参数执行十六进制运算。

h value1 value2

参数

value1

代表从0 到FFFFh 范围内的任何十六进制数字。

value2

代表从0 到FFFFh 范围内第二个十六进制数字。

说明

Debug 首先将指定的两个参数相加,然后从第一个参数中减去第二个参数。这些计算的结果显示在一行中:先计算和,然后计算差。

范例

假定键入以下命令:

h19f 10a

Debug 执行运算并显示以下结果。

02A9 0095

Debug:I(输入)

从指定的端口读取并显示一个字节值。

i port

参数

port

按地址指定输入端口。地址可以是16 位的值。

有关将字节值发送到输出端口的信息,请单击“相关主题”列表中的Debug O(输出)。范例

假定键入以下命令:

i2f8

同时假定端口的字节值是42h。Debug 读取该字节,并将其值显示如下:

42

Debug:L(加载)

将某个文件或特定磁盘扇区的内容加载到内存。

要从磁盘文件加载BX:C X 寄存器中指定的字节数内容,请使用以下语法:

l [address]

要略过Windows 2000 文件系统并直接加载特定的扇区,请使用以下语法:

l address drive start number

参数

address

指定要在其中加载文件或扇区内容的内存位置。如果不指定address,Debug 将使用CS 寄存器中的当前地址。

drive

指定包含读取指定扇区的磁盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C等。

start

指定要加载其内容的第一个扇区的十六进制数。

number

指定要加载其内容的连续扇区的十六进制数。只有要加载特定扇区的内容而不是加载debug 命令行或最近的Debug n(名称)命令中指定的文件时,才能使用d rive、start 和number 参数。

有关指定用于l 命令的文件的信息,请单击“相关主题”列表中的Debug n(名称)。

有关写入调试到磁盘的文件的信息,请单击“相关主题”列表中的Debug w(写入)。

注意

使用不带参数的l 命令

当使用不带参数的l 命令时,在debug 命令行上指定的文件将加载到内存中,从地址CS:100 开始。Debug 同时将BX 和C X 寄存器设置为加载的字节数。如果不在debug 命令行指定文件,所装入的文件将是最近使用n 命令经常指定的文件。

使用具有address 参数的1 命令

如果使用带address 参数的l 命令,Debug 将从内存位置address 开始加载文件或指定扇区的内容。

使用带全部参数的l 命令

如果使用带所有参数的l 命令,Debug 将加载指定磁盘扇区的内容而不是加载文件。

加载特定扇区的内容

指定范围内的每个扇区均从drive 读取。Debug 从start 开始加载,直到在number 中指定的扇区

数中的内容全部被加载。

加载 .exe 文件

Debug 忽略.exe 文件的地址address 参数。如果指定.exe 文件,Debug 将文件重新定位到 .exe 文件的标题中指定的加载地址。在.exe 文件被加载到内存前,标题自身从 .exe 文件脱离,因此磁盘上的.exe 文件大小与内存中的不同。如果要检查整个.exe 文件,请使用不同的扩展名重命名文件。

打开十六进制文件

Debug 将具有.hex 扩展名的文件认为十六进制格式文件。键入不带参数的l 命令,可以加载从十六进制文件中指定的地址处开始的十六进制文件。如果键入的l 命令包含address 参数,Debug 将把指定的地址加到在十六进制文件中找到的地址上,以确定起始地址。

范例

假定启动Debug 并键入以下命令:

https://www.doczj.com/doc/3c2291420.html,

现在可以键入l 命令以加载https://www.doczj.com/doc/3c2291420.html,。Debug 将加载文件并显示Debug 提示符。

假定需要从驱动器C将起始逻辑扇区为15 (0Fh) 的109 (6Dh) 个扇区的内容加载到起始地址为04B A:0100 的内存中。为此,请键入以下命令:

l04ba:100 2 0f 6d

Debug:M(移动)

将一个内存块中的内容复制到另一个内存块中。

m range address

参数

range

指定要复制内容的内存区域的起始和结束地址,或起始地址和长度。

address

指定要将range 内容复制到该位置的起始地址。

说明

复制操作对现有数据的影响

如果新数据没有写入正在被复制的数据块中的地址,则源数据将保持不变。但是,如果目标块已经包含数据(就象它在覆盖副本操作中一样),则将改写该数据。(覆盖复制操作是指那些目标数据块部分内容覆盖原数据块部分内容的操作。)

执行覆盖复制操作

m 命令执行目标地址的覆盖复制操作,而不丢失数据。将改写的地址内容首先复制。因此,如果将较高位地址的数据复制到较低位地址,则复制操作从原块的最低位地址开始并向最高位地址进行。反之,如果要将数据从低地址复制到高地址,复制操作从原块的最高地址开始,向最低地址进行。

范例

假定键入以下命令:

mcs:100 110 cs:500

Debug 首先将CS:110 地址中的内容复制到地址CS:510 中,然后将CS:10F 地址中的内容复制到CS:50F 中,如此操作直至将CS:100 地址中的内容复制到地址CS:500 中。要查看结果,请使用Debug d(转储)命令,并使用m 命令指定目标地址

Debug:N(名称)

指定Debug l(加载)或w(写入)命令的可执行文件的名称,或者指定正在调试的可执行文件的参数。

n [d rive:][path] filename

要指定测试的可执行文件的参数,请使用以下语法:

n file-parameters

参数

如果在没有参数的情况下使用,则n 命令清除当前规范。

[drive:][path] filename

指定要测试的可执行文件的位置和名称。

file-parameters

为正在测试的可执行文件指定参数和开关。

有关将文件或指定磁盘扇区的内容加载到内存中的信息,请单击“相关主题”列表中的Debug L(加载)。

有关写入调试到磁盘的文件的信息,请单击“相关主题”列表中的Debug W(写入)。

说明

n 命令的两个用途

可以按两种方式使用n 命令。首先,您可以使用它以指定后面的l(加载)或w(写入)命令所使用的文件。如果在没有命名所调试文件的情况下启动Debug,必须在使用l 命令加载文件之前使用命令nfilename。在CS:5C 为文件控制块(FCB) 正确编排文件名的格式。其次,可以使用n 命令指定被调试文件的命令行参数和开关。

内存区域

以下四个内存区域都会受到n 命令的影响:

内存位置

内容

CS:5C

文件1 的文件控制数据块(FCB)

CS:6C

文件2 的文件控制数据块(FCB)

CS:80

n 命令行的长度(以字符表示)

实验一 DEBUG的使用

实验一 DEBUG的使用 实验目的: 1.学习使用DEBUG程序的各种命令。 2.掌握8088/86指令系统---算数指令。 3.掌握用DEBUG调试自编程序的方法。 4.掌握8088/8086 CPU寄存器的用途和存储器组织及它们之间的关系。 5.掌握内存操作数及寻址方法。 6.掌握汇编语言伪操作:BYTE PTR,WORD PTR。 内容及步骤: 一、DEBUG 命令使用: 1、敲 DEBUG 进入 DEBUG 环境,显示提示符 '_ '。 2、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。 3、用命令 E100 30 31 32 …… 3F 将30H~3FH写入地址为100H开始的内存单元中, 再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 4、用命令 F100 10F 'A' 将'A'的ASCII码填入内存,用D命令查看结果。 5、用命令 F110 11F 41 将41H 填入内存,用D命令观察结果并比较。 6、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内 容。 7、用R命令将AX,BX内容改写为1234H及5678H。 8、用H命令检查下列各组16进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH 二、8088常用指令练习 1、传送指令 1)用A命令在内存100H处键入下列内容: MOV AX,1234 MOV BX,5678 XCHG AX,BX MOV AH,34 MOV AL,56 MOV CX,75AB XCHG AX,CX 2)用U命令检查键入的程序,特别注意左边的机器码。 3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。 2、加减法指令: 1)用A命令在内存200H处键入下列内容:

Debug使用说明

附录DEBUG调试程序的应用 1.直接启动DEBUG程序 如https://www.doczj.com/doc/3c2291420.html,在C盘的根目录下,启动的方法是: C:\>DEBUG _ 这时屏幕上会出现“_”提示符,等待键入DEBUG命令。 2.启动DEBUG程序的同时装入被调试文件 命令格式如下: C:\>DEBUG [d:][PA TH]filename[.EXT] [d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。 例如:BCDSUM.EXE可执行文件在A盘,用DEBUG对其进行调试的操作命令如下。 C:\>DEBUG A:\BCDSUN.EXE↙ DOS在调用DEBUG程序后,再由DEBUG把被调试文件装入内存,当被调试文件的扩展名为COM时,装入偏移量为100H的位置,当扩展名为EXE时,装入偏移量为0的位置,并建立程序段前缀PSP,为CPU寄存器设置初始值。 3.退出DEBUG 在DEBUG命令提示符“_”下键入Q命令,即可结束DEBUG的运行,返回DOS操作系统。 4.在DEBUG环境下建立和汇编程序 在DEBUG环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。 比如,在DEBUG下运行如下程序: MOV DL,33H ;字符3的ASCII码送DL MOV AH,2 ;使用DOS的2号功能调用 INT 21H ;进入功能调用,输出‘3’ INT 20H ;BIOS中断服务,程序正常结束。 该程序运行结果是在显示器上输出一个字符‘3’。如果要输出其它字符,请改变程序中‘33H’为相应字符的ASCII码。其中涉及DOS和BIOS功能调用。因为我们是在DOS的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入/输出指令直接通过端口输入/输出,而必须使用DOS内部提供的子程序完成输入/输出。 DOS功能调用就是为诸如此类的目的设置的。DOS功能调用要求在进入INT 21H调用前,首先将功能调用号送AH寄存器,并根据功能调用号准备初始数据。也就是说INT 21H 的2号功能调用是输出DL寄存器中的字符。INT 20H是BIOS中断服务,这一软中断用来正常结束程序。

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”提示,并用“^”指示错误位置。 许多命令的参数是主存逻辑地址,形式是“段基地址: 偏移地址”。其中,段基地址可以是段寄存器或数值;偏移地址是数值。如果不输入段地址,则采用默认值,可以是缺省段寄存器值。如果没有提供偏移地址,则通常就是当前偏移地址。 对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址结束地址”(结束地址不能具有段地址),或者是:“开始地址L字节长度”。 三、DEBUG子命令 1、显示命令D D(Dump)命令显示主存单元的内容,它的格式如下(注意分号后的部分用于解释命令功能,不是命令本身): D [地址];显示当前或指定开始地址的主存内容 D [范围];显示指定范围的主存内容 例如,显示当前(接着上一个D命令显示的最后一个地址)主存内容: 左边部分是主存逻辑地址,中间是连续16个字节的主存内容(16进制数,以字节为单位),右边部分是这16个字节内容的ASCII字符显示,不可显示字符用点“.”表示。一个D命令仅显示“8行×16个字节”(80列显示模式)内容。 再如: -d 100 ;显示数据段100h开始的主存单元

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=0000 DI=0000 DS=3000 ES=23A0 CS=138E IP=0000 NV UP DI PL NZ NA PO NC 138E:0000 MOV AX,1234 -R AX ;输入命令 AX 0014 ;显示AX的内容 :;供修改,不修改按回车。 若对标志寄存器进行修改,输入:-RF 屏幕显示如下信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。 NV UP DI PL NZ NA PO NC 不修改按回车键。要修改需个别输入一个或多个此标志的相反值,再按回车键。R命令只能显示、修改16位寄存器。 (4)显示存储单元命令D 格式1:D[起始地址]

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

利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序

3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个字节容 说明:指定要显示其容的存区域的起始和结束地址,或起始地址和长度。 ①DSEGREG[起始地址] [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

DEBUG使用方法

DEBUG使用方法 格式: DEBUG[[drive:][path]filename[testfile-parameters]] 参数:[drive:][path]filename 指定待调试可执行文件的所在位置及文件名。 testfile-parameters 指定待设计可执行文件需要的命令参数。 相关命令 -A (汇编,Assemble) -C (比较,Compare) -D (卸出,Dump) -E (输入数据,Enter)) -F (填充,Fill) -G (执行,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显示扩充内存的状态。

在Eclipse中使用debug(Eclipse调试常用技巧)

Eclipse调试常用技巧 发表时间:2010-04-06 最后修改:2010-11-26 记得刚刚毕业的时候,自己连断点也不会打,当时还在用JCreate,就连毕业设计也是用System.out找Bug的,想想真的很笨。开始工作后,一个星期过去了,在一个1、2百万行的系统中找Bug,我依然在用System.out,当时最痛苦的就是修改代码,每次找到疑似Bug,就输出一下,然后重启(那时也不知道代码热替换),直到有一天带我的导师发现了这样笨笨的调试Bug,才让我第一次认识了断点,也知道了代码修改完了可以进行热替换,我这个中国教育的半牺牲品才算向美好生活迈进了一小步。 1、条件断点 断点大家都比较熟悉,在Eclipse Java编辑区的行头双击就会得到一个断点,代码会运行到此处时停止。 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。 在断点处点击鼠标右键,选择最后一个"Breakpoint Properties" 断点的属性界面及各个选项的意思如下图,

2、变量断点 断点不仅能打在语句上,变量也可以接受断点, 上图就是一个变量的打的断点,在变量的值初始化,或是变量值改变时可以停止,当然变量断点上也是可以加条件的,和上面的介绍的条件断点的设置是一样的。 3、方法断点 方法断点就是将断点打在方法的入口处, 方法断点的特别之处在于它可以打在JDK的源码里,由于JDK在编译时去掉了调试信息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈。

4、改变变量值 代码停在了断点处,但是传过来的值不正确,如何修改一下变量值保证代码继续走正确的流程,或是说有一个异常分支老是进不去,能不能调试时改一下条件,看一下异常分支代码是否正确? 在Debug视图的Variables小窗口中,我们可以看到mDestJarName变量的值为" F:\Study\eclipsepro\JarDir\jarHelp.jar" 我们可以在变量上右键,选择"Change Value..."在弹出的对话框中修改变量的值, 或是在下面的值查看窗口中修改,保用Ctr+S保存后,变量值就会变成修改后的新值了。 5、重新调试 这种调试的回退不是万能的,只能在当前线程的栈帧中回退,也就说最多只能退回到当前线程的调用的开始处。 回退时,请在需要回退的线程方法上点右键,选择"Drop to Frame"

汇编语言debug的使用方法

进入Windows操作系统,输入cmd回车 输入debug 回车,这样就进入了debug模式 1: 输入-r 查看或者修改寄存器,可以修改CS IP来指向要执行汇编的内存地址-r 回车查看 -r ax 回车修改ax的值 -r cs 回车修改cs的值 -r ip 回车修改ip的值 2: 输入-D 查看内存中的信息 -d 1000:0000 查看段地址为1000H ,偏移地址为0开始的内存信息 -d 1000:0000 00ff 就是查看1000:0000 到1000:00ff的内存信息 查看主板生产日期 -d fff0:0000 00ff 可以看到右下角的08/14/08 格式月/日/年,08年8月14号生产的主板 这里的生产日期是只读的,无法修改,通过-e修改表面上看是改过了,下次打开后又恢复之前数据了 如果直接用-d 0100 则会显示DS:0100处的内存信息,也就是显示段地址为ds,便宜地址为0100的内存信息。 -d ds:0100 也可以这么使用 3:输入-E修改内存中位置的信息 -e 1000:0000 1a 00 09 10 a1 61 这样就可以修改对应段地址为1000H ,偏移地址为0开始的内存信息 -e 1000:0000 'a+b' 这样就会在内存1000:0000处写入61H(a的ASICC码) 1000:0001处+ 1000:0002 62 4:输入-u查看指定位置对应的汇编指令 -u 1000:0000 查看该处的汇编指令 -u cs:0000 查看段地址为cs处的汇编指令 5:输入-t 执行指令 -t 执行CS:IP所指向的第一个指令,如果要执行自己写入内存的指令,应该先通过-r来改变CS IP的值,然后再执行-t 执行

实验1 Debug命令使用

实验1 查看CPU和内存,用机器指令和汇编指令编程 1. 预备知识:Debug的使用 我们以后所有的实验中,都将用到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个命令是和汇编学习密切相关的。 (3) 进入Debug。 Debug是在DOS方式下使用的程序。我们在进入Debug前,应先进入到DOS方式。用以下方式可以进入DOS。 ①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。 ②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。 下面说明在Windows中进入Debug的一种方法。 选择【开始】菜单中的【运行】命令,如图1所示,打开【运行】对话框,如图2所示,在文本框中输入“command”后,单击【确定】按钮。 图2 在文本框中输入“command”

图1 选择【运行】命令 进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变为全屏方式。然后运行Debug程序,如图3所示。 图3 运行Debug程序 (4)用R命令查看、改变CPU寄存器的内容。 我们已经知道了AX、BX、CX、DX、CS、IP这6个寄存器,现在看一下它们之中的内容,如图4所示。其他寄存器如SP、BP、SI、DI、DS、ES、SS、标志寄存器等我们先不予理会。

DEBUG的基本命令使用

实验一 DEBUG的基本命令使用 实验名称:利用DEBUG验证寻址方式 实验目的:掌握DEBUG的常用指令(R,D,E,A,U,T 指令)的使用方法,理解不同寻址方式的特点 实验内容:在DEBUG中利用A命令输入以下汇编指令,并用U命令显示,利用T 命令单步跟踪指令的执行过程,利用R或者D命令观察相关寄存器或者内存单元内容的变化(相关过程和结果要体现在实验报告上)。 (1)立即寻址 MOV AX,1 MOV BL,02H MOV BH,34H -a 13AE:0100 mov ax,1 13AE:0103 mov bl,02 13AE:0105 mov bh,34 13AE:0107 -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0100 NV UP EI PL NZ NA PO NC 13AE:0100 B80100 MOV AX,0001 -t AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0103 NV UP EI PL NZ NA PO NC 13AE:0103 B302 MOV BL,02 -t AX=0001 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0105 NV UP EI PL NZ NA PO NC 13AE:0105 B734 MOV BH,34 -t AX=0001 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0107 NV UP EI PL NZ NA PO NC 13AE:0107 0000 ADD [BX+SI],AL DS:3402=00 (2)寄存器寻址 在验证完(1)后,执行mov ax,bx -a 13AE:0107 mov ax,bx 13AE:0109 -t AX=3402 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13AE ES=13AE SS=13AE CS=13AE IP=0109 NV UP EI PL NZ NA PO NC

第一章_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[地址] 功能:将指令直接汇编成机器码输入到内存中。 参数说明:[地址]指定存放键入汇编语言指令的内存单元的位置。 A命令使用 说明:用于小段程序的汇编及修改目标程序,所有输入的数字均默认为十六进制,并且不需要以“h”字符结尾。用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到CS:0100区域,则在它上次停止处开始汇编。 注意: 1. 直接在A命令下输入跳转指令时,跳转指令后应跟跳转到的语句所在内存单元的地址, 不能跟标号;使用跳转指令时,可以指定跳转指令的属性:near,far。near 前缀可以缩写为 ne。如下例所示: -a0100:0100 0100:0100 jmp 102 0100:0102 jmp near 105 0100:0105 jmp far 10a

DEBUG使用总结

一、DEBUG的主要命令 A命令 功能: 将助记符指令转换为机器指令码存储在指定的内存单元,即汇编过程 格式1: A xxxx:0100 助记符指令1(ENTER) xxxx:xxxx 助记符指令2(ENTER) …… xxxx:xxxx ENTER结束 功能: 逐次将助记符指令对应的指令码存入从CS: 0100h起的连续的内存单元 格式2:A 起始地址start-addr xxxx:0100 助记符指令1(ENTER) xxxx:xxxx 助记符指令2(ENTER) …… xxxx:xxxx ENTER结束 功能: 逐次将助记符指令对应的指令码存入从CS: star-addr起的连续的内存单元 注: 指令中可以包含数据定义伪指令DB/DW等语句 D命令 功能: 查看指定内存单元的内容 格式1: D [起始地址start-addr [L长度length]] 功能: 显示从起始地址start-addr开始的length个字节,省略start-addr时从DS:0100h开始,省略长度length时默认值为80H(128) 注: start-addr可以为偏移地址, 此时其默认的段基址为DS; 也可以显式地按段地址:偏移地址格式指明完整的逻辑地址, 段地址不一定是段寄存器, 还可以是任意16位地址 格式2: D[起始地址start-addr 终结地址end-addr] 功能: 显示从起始地址start-addr开始到结束地址end-addr之间的字节 注: start-addr和end-addr同时为偏移地址时默认的段基址为DS; start-addr采用段地址:偏移地址格式指明时, end-addr可以不必再指明段地址, 直接以偏移地址形式给出(start-addr和end-addr的段地址始终相同); 当start-addr和end-addr的偏移地址相同时只显示该存储单元的字节. E命令 功能: 修改指定内存单元的内容 格式1: E 起始地址start-addr 字节数据1 字节数据2 … 字节数据n 功能: 逐次用后面的字节数据修改从起始地址起的连续内存单元的内容 格式2: E 起始地址start-addr(按ENTER) 起始地址该内存单元的原值.待输入新值/空格键 功能:在提示情况下逐个修改从起始地址start-addr开始的字节数据的值, 输入空格表示不做修改, 直至输入ENTER键结束 G命令 功能: 执行正在调试的汇编程序至指定的断点 格式: G [start-addr] break-addr1[, break-addr2, …]

MCS1000-DEBUG软件使用说明书(V1.1)

MCS1000-DEBUG软件使用说明书

1、主界面风格 (5) 2、菜单栏 (5) 2.1、文件 (6) 2.1.1、导入配置参数... . (6) 2.1.2、导出配置参数... . (6) 2.1.3、退出 (6) 2.2、系统参数 (6) 2.2.1、试台移动 (7) 2.2.2、网络参数 (8) 2.2.3、系统时间 (8) 2.2.4、产品序列号 (8) 2.2.5、软硬件版本 (9) 2.3、测试 (9) 2.3.1、简单测试 (10) 2.3.2、复杂测试 (11) 2.3.3、DA输出测试 (11) 2.3.4、频率输出测试 (12) 2.3.5、查看AD码值 (12) 2.4、传感器设置 (12) 2.4.1、负荷 (13) 2.4.2、变形 (14) 2.4.3、编码器 (14) 2.5、通道设置 (14) 2.5.1、负荷 (15) 2.5.2、变形 (15) 2.5.3、位移 (16) 2.5.4、大延伸 (16) 2.5.5、位置 (17) 2.5.6、DA通道 (18) 2.5.7、频率 (19) 2.6、线性补偿 (19) 2.7、输入输出 (19) 2.7.1、输入管脚配置 (19) 2.7.2、输入状态 (20) 2.7.3、输出管脚配置 (21) 2.7.4、输出状态 (22) 2.7、闭环控制 (22) 2.7.1、PID调试 (22) 2.8、负荷单位 (24) 2.9、帮助 (24) 3、工具栏 (24) 3.1、联机 (24) 3.2、脱机 (25) 3.3、启动伺服 (25)

3.3、启动伺服 (25) 3.4、向上移动 (25) 3.5、停止移动 (25) 3.6、向下移动 (25) 3.7、移动速度设置框 (25) 3.8、错误信息 (25) 3.9、退出 (25) 4、工作区 (26) 4.1、数据显示及命令测试区 (26) 4.1、曲线绘制及命令控制区 (27)

DEBUG的使用及程序调试方法

实验一 DEBUG的使用及程序调试方法 一.实验目的 1、掌握常用DEBUG命令以及调试简单程序。 2、掌握常用汇编指令的功能及其书写格式。 3、掌握在DUBUG下进行简单程序设计并调试。 二.实验环境 微型计算机一台 DOS或WINDOWS操作系统,MASM开发套件。 三.实验原理 DEBUG是专门为汇编语言设计的调试工具软件,它通过单步、设置断点等方式,为使用者提供了非常有效的调试手段。在DEBUG 下所有输入的数据都是十六进制,所以不需要后面加H。并且不区分大、小写字母。 1、直接启动DEBUG程序 如https://www.doczj.com/doc/3c2291420.html,在C盘的根目录下,启动的方法是: C:\>DEBUG _ 这时屏幕上会出现“_”提示符,等待键入DEBUG命令。 2、启动DEBUG程序的同时装入被调试文件 命令格式如下: C:\>DEBUG [d:][PATH]filename[.EXT] [d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。 3、DEBUG的主要命令

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

debug命令的基本使用

Debug的基本使用 1.使用r命令查看或修改CPU寄存器的内容。 (1)使用r的命令查看: (2)使用r来改变寄存器中的内容: 例如修改AX的值,就需输入“r ax”后按Enter键,在出现的“:”后面输入要写入的数据,并按Enter,再用r查看,修改成功,如图1所示。 图1 用r来修改Ip的值,如图2所示。 2.用d来查看内存的内容。 (1)直接输入d,debug将输出3部分内容,如图3所示。 图3 (2)可以使用“d 段地址:偏移地址”的格式,例如想查看内存10000H处的内容。

(3)在使用“d 段地址:偏移地址”之后,接着使用d命令,可列出后续的内容,如图5所示。 图5 (4)使用d命令查看范围,格式为“d 段地址:起始偏移地址结尾偏移地址”。例如要查看1000:0到1000:9中的内容,如图6所示。 图6 3.用e来改写内存中的内容。 (1)将内存1000:0-1000:9中的内容分别改为0、1、2、3、4、5、6、7、8、9,其格式为“e 起始地址数据数据数据。。。”,如图7所示。 图7 (2)用提问的方法改写内存的内容。以1000:10为起始地址进行改写,其步骤为: 输入“e 1000:10”,并按Enter,在显示光标后面输入想要修改的内容,如果想停止输入,就按Enter,继续就按空格键。(在显示光标后面直接按空格键,则表示不对当前内存单元进行改写) (3)用e向内存中写入字符。

(4)用e命令向内存中写入字符串。 (5)用e命令向内存中写入机器码,用u命令查看内存中机器码的含义,用t命令执行内存中的机器码。 例如要从内存1000:0单元开始写入机器码:b80100b9020001c8,其方法如图8所示。 图8 用u将从1000:0开始的内存单元中的内容翻译为汇编指令并显示出来。(见图9) 使用t命令可以执行CS:IP指向的指令。(图10) 图10 执行T命令后,cpu执行CS:IP指向的指令,则1000:0处的指令b8 01 00(mov ax,0001)得到执行。指令执行后,ax中的内容被改写为1,IP改变为IP+3(因为mov ax,0001的指令

汇编步骤和Debug使用方法

实验预备知识汇编程序的建立与调试 一、汇编程序的建立 1. 使用工具 (1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文 件; (2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件- 目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表; (3)Link连接程序,对使用的目标文件和库文件进行连接,生 成.exe文件,同时调试用.map-地址映像文件; 如果源程序无语法错误,上述三步将生成可运行的.exe文件, 如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存 在错误,需要进行调试。 (4)Debug调试程序,对.exe文件进行调试,修改,直到程序正 确。 图3 目标程序生成步骤图2. 编程过程 (1)用文本编辑软件,编写扩展名为.asm的源文程序文件。 (2)用汇编程序对编好的源文件进行汇编。 命令行:masm [*.asm] ↙ 如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。 使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示: 汇编程序可生成三个文件,*.obj,*.lst和*.crf。 *.obj-目标文件,用于连接生成可执行文件; *.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于调试; *.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用 的行号。

(3)目标文件的连接 命令行:link [*.obj] [*.obj] [*.lib] ↙ 连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。 *.map-地址映像文件,给出内存地址分配的有关信息。 下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe文件。 (4)执行程序 执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。调试工具DEBUG是针对汇编语言程序设计的一种调试工具,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。 二、汇编程序的调试 1. 调试方法 DEBUG工具的调试文件为可执行文件*.exe,在命令行窗口或者DOS环境下,执行DEBUG命令: 命令行Debug [*.exe]↙ 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子命令等待状态“-”。 3.查看与修改内存中的程序: 在“-”提示符下输入:U [偏移地址] [回车] 屏幕将显示从指定的“偏移地址”开始的汇编语言程序段落。屏幕左部显示着每条指令的地址和指令代码(即机器码),屏幕右部显示着汇编语言指令助记符,可帮助你理解或分析汇编语言指令或程序段落。 继续在“-”提示符下输入:U [回车] 可显示当前地址开始的后续汇编语言程序段落。在需要查看内存汇编语言程序段落或指令时,一般都在首次“U”子命令中用指定“偏移地址”,而后直接单打“U”继续查看,直到程序的结尾或不想查看为止。 修改内存中的程序可先用“U”子命令查看相关程序段落,看准需要修改的指令所在地址(主要是偏移地址),然后输入:A <要修改指令的偏移地址>[回车] 最后把新指令输入之后,及时空打回车退出程序输入状态,再用“U”子命令查看复验。 4.运行与单步运行内存中的程序: 在“-”提示符下输入:G=[起始地址,终止地址] [回车] DEBUG就能从指定的起始地址开始,到终止地址之前,把这段内存中的汇编指令连续执行一遍,执行完毕后,在屏幕上将显示出各寄存器的当前值,以便执行结果分析。 在“-”提示符下输入:T=[起始地址] [回车]

Debug使用方法

DEBUG使用方法 启动DEBUG程序,DEBUG程序用于调试可执行文件。 格式: DEBUG[[drive:][path]filename[testfile-parameters]] 参数:[drive:][path]filename 指定待调试可执行文件的所在位置及文件名。 testfile-parameters 指定待设计可执行文件需要的命令参数。 相关命令 A(汇编,Assemble) C(比较,Compare) D(卸出,Dump) E(输入数据,Enter)) F(填充,Fill) G(执行,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比较两块内存的内容。

相关主题
文本预览
相关文档 最新文档