文档库 最新最全的文档下载
当前位置:文档库 › Debug使用说明

Debug使用说明

Debug使用说明
Debug使用说明

附录DEBUG调试程序的应用

1.直接启动DEBUG程序

如https://www.wendangku.net/doc/0b13708220.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中断服务,这一软中断用来正常结束程序。

运行步骤:

(1)进入DEBUG

设C盘上有https://www.wendangku.net/doc/0b13708220.html,程序,进入DOS环境后键人DEBUG,即

C:\>DEBUG

随后屏幕显示:

_

“_”号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。现在用A 命令输入程序如下:

(2)输入程序并汇编

_A 100

169C:0100 MOV DL,33

169C:0102 MOV AH,2

169C:0104 INT 2l

169C:0106 INT 20

169C:0108

至此程序已输入完毕,并汇编成机器指令。现在用G命令运行程序如下:

(3)运行程序

_G

3

Program terminated normally

如果现在想分析一下该程序的指令,可以用反汇编命令U作如下操作:

(4)反汇编

_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

(5)将机器指令程序送到起始地址为200H的若干单元

_E 200 B2,33,B4,02,CD,21,CD,20

(6)执行机器指令程序

_G=200

3

Program terminated normally

二、常用DEBUG命令

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

1.汇编命令A

格式:(1)A <段寄存器名>:<偏移地址>

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

(3)A <偏移地址>

(4)A

功能:汇编命令是将用户输入的汇编语言指令,汇编为可执行的机器指令。键人该命令后显示段地址和偏移地址并等待用户从键盘逐条键入汇编语言指令。每当输入一行语句后按“ENTER”键,输入的语句有效。若输入的语句中有错,DEBUG会显示“^ Error”,要求用户重新输入,直到显示下一地址时用户直接键入回车键返回到提示符“_”。

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

2.比较命令C

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

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

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

3.显示内存单元命令D

格式:(1)D <地址>

(2)D <地址范围>

(3)D

其中(1)以CS为段寄存器;(3)显示CS:100为起始地址的一片内存单元内容。

功能:该命令将显示一片内存单元的内容,左边显示行首字节的段地址:偏移地址,中间是以十六进制形式显示的指定范围的内存单元内容,右边是与十六进制数相对应字节的ASCII码字符,对不可见字符以‘·’代替。

4.修改内存单元命令E

格式:(1)E <地址><单元内容>

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

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

功能:(1)将指定内容写入指定单元后显示下一地址,以代替原来内容。可连续键入修改内容,直至新地址出现后键入回车为止;(2)将<单元内容表>逐一写入由<地址>开始的一片单元中,该功能可以将由指定地址开始的连续内存单元中的内容,修改为单元内容表中的内容。

例如:_E DS:30 F8,AB,”AB”

该命令执行后,从DS:30到DS:33的连续4个存储单元底内容将被修改为F8H,ABH,41H,42H。

5.填充内存命令F

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

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

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

该命令将由地址05BC:200开始的10H(16)个存储单元顺序填充“B2,58,59,5A,3C,B2,58,59,5A,3C,B2,58,59,5A,3C,B2”

6.连续执行命令G

格式:(1)G

(2)G=<地址>

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

其中(2)、(3)中的“=”是不可缺省的。

功能:

●默认程序从CS:IP开始执行。

●程序从当前的指定偏移地址开始执行。

●从指定地址开始执行,到断点自动停止并显示当前所有寄存器、状态标志位的内容

和下一条要执行的指令。DEBUG调试程序最多允许设置10个断点。

7.跟踪命令T

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

功能:如果键入T命令后直接按“ENTER”键,则默认从CS:IP开始执行程序,且每执行一条指令后要停下来,显示所有寄存器、状态标志位的内容和下一条要执行的指令。用户也可以指定程序开始执行的起始地址。<条数>的缺省值是一条,也可以由<条数>指定执行若干条命令后停下来。

例如:T

该命令执行当前指令并显示所有寄存器、状态标志位的内容和下一条要执行的指令。

又例如:T 10

该命令从当前指令开始执行10H条指令后停下来,所有寄存器、状态标志位的内容和下一条要执行的指令。

8.反汇编命令U

格式:(1)U <地址>

(2)U <地址范围>

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

9.执行过程命令P

格式:P

功能:执行一条指令或一个过程(子程序),然后显示各寄存器的状态。

说明:该命令主要用于调试程序。它与跟踪命令T的作用类似,T命令是跟踪一条或多条指令,而P命令是执行一条指令(包括带重复前缀的数据串操作指令)或一个完整的过程(子程序)。

例如:设有如下指令序列

MOV AH,02H

INT 21H

当要执行INT 21H这条指令时,若用T命令进行跟踪,则进入INT 21H程序(DOS 功能调用)后,需要数十次T命令才能返回当前程序;若采用P命令进行调试,则只执行INT 20H一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。因此,当读者以后遇到CALL、INT n指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用P命令。

10.定义待装入文件命令N

格式:N [d:][PA TH]filename[.EXT]

功能:N命令一般和L命令联合使用,为L命令定义指定路径的待装入文件。

11.装入文件命令L

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

其中<地址>的缺省值为CS:100。逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:物理扇区是按0面0道1区,0面0道2区,…….0面0道9区,0面1道1区,……0面39道9区,1面0道1区,……l面39道9区排列。而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道1扇区至9扇区,逻辑扇区号为0~8;物理扇区1面0道1扇区至9扇区,逻辑扇区号为9~11H;物理扇区0面1道l扇区至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起始的一片内存单元。

12.内存单元搬家命令M

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

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

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

例如:M CS:100 110 600

该命令把由CS:100起到CS:110止共17个字节搬至DS:600至DS:610的一片单元。

13.写盘命令W

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

功能:该命令是将内存<地址>起始的一片单元内容写入指定扇区。只有W而没有参数时,与N命令配合使用使用户完成写盘操作。用户可用N命令先定义被调试的文件,再将

被调试文件的字节长度值送BX、CX(BX寄存器存放字节长度值的高位,CX寄存器存放字节长度值的低位),最后用写盘命令W将被调试文件存入磁盘。

例如:欲将https://www.wendangku.net/doc/0b13708220.html,文件写入磁盘,设文件长度为40字节,可进行如下操作。

_N https://www.wendangku.net/doc/0b13708220.html,

_R CX

CX xxxx

:0040

_R BX

BX xxxx

:0000

_W

Writing 00040 bytes

14.显示命令R

格式:(1)R

(2)R <寄存器名>

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

键入该命令后将显示指定寄存器名及其内容,“:”后可以键入修改内容。键入修改内容后按“ENTER”键有效。若不需修改原来内容,直接按“ENTER”即可。

例如:R AX

15.端口输出命令O

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

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

例如:O 2F 4F

该命令将4FH从2FH口输出。

16.搜索指定内存命令S

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

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

例如:S 100 110 4l

屏幕显示:04BA:0104

04BA:010D

表示在100H~110H之间的一片存储单元中,104H和10DH两个单元有41H。

又如:S CS:100 L 10 ‘AB’

表示在当前代码段位移100H至110H处搜索连续3个字节内容为41H、42H(分别对应A、B的ASCII码)的单元。

17.十六进制算术运算指令H

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

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

18.端口输入命令I

格式:I <端口地址>

功能:将从指定端口输入的内容显示出来。

19.结束DEBUG返回DOS命令Q

格式:Q

功能:返回DOS提示符下。

实验一 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.wendangku.net/doc/0b13708220.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.wendangku.net/doc/0b13708220.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比较两块内存的内容。

相关文档