您好,欢迎来到刀刀网。
搜索
您的当前位置:首页Dedug使用介绍

Dedug使用介绍

来源:刀刀网


DEBUG使用介绍

?调试程序DEBUG特点:

1.
2.
3.
4.
5.

在受控环境中测试程序;
装入, 显示或修改任何文件;
实施DOS 程序;
完成磁盘实际读/写操作;
建立或汇编汇编语言程序。

?DEBUG命令格式:

[drive:][path]DEBUG[d:][p][filename][.ext][param...]

其中:


DOS 将使用目前默认磁盘驱动器。

path: DOS查找DEBUG文件一个子目录串表示路径。若

未指定,DOS 将使用目前工作目录。

d: DEBUG将要调试文件所在磁盘驱动器。

p:是查找DEBUG将要调试文件所需子目录路径,若未指定,

DOS使用目前目录。

filename[.ext]DEBUG将要调试文件名。

param 是将被调试程序(或文件)命令行参数。



:

DEBUG所完成初始化动作,假定文件名没有,开启DEBUG:

?段寄存器CSDSESSS置为DEBUG程序后第一个段。

?指令指针寄存器IP置为100H(程序段前缀PSP后第一个语句)。?堆栈指针SP置为段末或COMMAND.COM暂驻部分结束地址(其中 较小那个地址)。

?其它通用寄存器均置为0,标志寄存器置为下述状态。

? NV UP EI PL NE NA PO NC

假如DEBUG命令行含有文件名,段寄存器DSES指向PSP。寄存器BX

CX含有程序长度。

?

DEBUG 使用单字符命令:



这些DEBUG命令关键参考清华大学计算机系列教材IBM-C汇编语言程序设计》一书。

显示存放单元命令DDEBUG, 格式为:





-D[address]

-D[range]

比如,按指定范围显示存放单元内容方法为:

-D100 120
067C:0100 C7 D7 0D 0A 32 33 33 34 - D5 C5 B4 C6 30 10 42
0C ....2334....0.B.

067C:0110 03 41 42 43 44 45 46 47 - 48 49 4A 4B 4C 4D 4E
4F .ABCDEFGHIJKLMNO
067C:0120 8B

其中01000120DEBUG显示单元内容。左边用十六进制表示每

个字节,右边用ASCII字符表示每个字节,“.”表示不可显示字符。这里没

从首地址开始80 个字节内容。假如完全没有指定地址, 则显示上一个D
有指定段地址, D 命令自动显示DS 段内容。假如只指定首地址, 则显示

计算机存放信息基础单位是一个二进制位,一位可存放

一个二进制数:0 1。每8位组成一个字节,位编号以下

所表示:

7

6

5

4

3

2

1

0

正当MS-DOS盛行时候,PC机字长为16,2个字节组成,位编号以

下所表示:

15 14 13 12 11 10

9

8

7

6

5

4

3

2




字节

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

高位字节 MSB

低位字节 LSB

在存放器里以字节为单位存放信息。为了正确地存放或取得信息,每一个字节单元给以一

个存放器地址。地址从0开始编号,次序地每次加1。在机器里,地址也是用二进制数来

表示。它是无符号整数,书写格式为十六进制。

16位二进制能够表示216次方个字节单元地址,它可表示地址范围应该是0-65535

为方便,存放器容量以210次方=1024为基础单位,称为1K。这么,65536 个字节单元存放

容量就是K,其地址编号范围用16进制数表示为0-FFFFH。以下所表示。

0000,0001, 0002, ……, ……, ……0009, 000A, 000B, 000C, 000D, 000E,

000F,

0010,0011, 0012, ……, ……, ……0019, 001A, 001B, 001C, 001D, 001E,

0020, 0021, 0022, ……, 002C, 002D, 002E, 001F,

……

FFE0,FFE1, FFE2, ……, ……, ……FFE9, FFEA, FFEB, FFEC, FFED, FFEE,

FFEF,

FFF0,FFF1, FFF2, ……, ……, ……FFF9, FFFA, FFFB, FFFC, FFFD, FFFE,

FFFF

一个字存入存放器要占有相继二个字节,存放时,低位字节存入低地址,高位字节存入

高地址,以相反次序存入。

存放器特点: 它内容是取之不尽。 从某个单元取出其内容后, 该单元仍然保留着原来内
容不变, 能够反复取出, 只有存入新信息以后, 原来保留内容自动丢失。


存放器地址分段:

前面已经提到16位字长机器能够访问最大存放空间为K字节,PC机最大存放容量为1M(原MS-DOS操作系统下)。要访问1M字节空间存放器必需有20位地址,16进制数表示1M字节地址范围应该为00000-FFFFF

1M字节存放器里,每一个存放单元全部有一个唯一20位地址,称为该存放单元物理地址。CPU访问存放器时,必需先确定所要访问存放单元物理地址才能取得(或存入)该单元内容。20位物理地址由16位段地址和16位偏移地址组成,段地址是指每一段起始地址,因为它必需是小段首地址,所以其低4位一定是0,这么就能够要求段地址只取段起始地址高16位值。偏移地址则是指在段内相对于段起始地址偏移值。这么,物理地址计

算方法以下:
把段地址左移4 位再加上偏移地址值就形成物理地址。 或写成:

16dX


移地址组成。

PC机中,有四个专门存放段地址寄存器,称为段寄存器。它们是代码段CSCodeSegment)、数据段DSDataSegment)、堆栈段SSStackSegment)和附加段ESExtraSegment)寄存器。每个段寄存器能够确定一个段起始地址,而这些段则各有各用途。代码段是存放目前正在运行程序。 数据段存放目前运行程序所用数据,假如程序中使用了串处理指令,则其源操作数也存放在数据段中。堆栈段定义了堆栈所在区域,堆栈是一个数据结构,它是一个比较特殊数据段。附加段是附加数据段,

它是一个辅助数据区, 也是串处理指令目标操作数存放区。 还有四个通用
数据寄存器AXBXCXDX; 四个指针及变址寄存器SPDI;


控制寄存器包含IP(指令指针寄存器)和PSW程序状态字寄存器。这些将

专门开辟一页详加介绍。

修改存放单元内容命令有两种


?

输入命令EEnter, 有两种格式以下:

第一个格式能够用给定内容表来替换指定范围存放单元内容。命令格

式为:

-E address [list]

比如,-E DS:100 F3'XYZ'8D

其中F3, ‘X’, ‘Y’, ‘Z’8D 各占一个字节, 该命令能够用这五
个字节来替换存放单元DS: 0100 0104 原先内容。

比如,-E CS:100

则可能显示为:

18E4:0100 . -

假如需要把该单元内容修改为78,则能够直接键入78,再按空格键可

接着显示下一个单元内容,这么能够不停修改相继单元内容,直到Enter

结束该命令为止。

?

填写命令FFill, 其格式为:



-F range list

比如,-F 4BA:0100 5 F3'XYZ'8D

使04BA:0100-0104 单元包含指定五个字节内容。假如list中字节数超出指定范围,则忽略超出项;假如list字节数小于指定范围,则反复使用list填入,直到填满指定全部单元为止。

检验和修改寄存器内容命令RRegister, 它有三种格式以下:


?

显示CPU 内全部寄存器内容和标志位状态, 其格式为:

-R

比如,

-r



DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PONC
18E4: 0100 C MOV WORD PTR[0204], 0138 DS:0204=0000

其中标志位状态含义可见下表:





ZF

AF

PF

CF

零(是/否)

辅助进位(是/否)

奇偶(偶/奇)

进位(是/

ZR

AC

PE

CY

NZ

NA

PO

NC


?

显示和修改某个寄存器内容, 其格式为:

-R register name

比如,键入

-r ax

系统将响应以下:

AX F1F4



修改内容如:

-r bx

BX 0369

:059F

则把BX寄存器目前内容修改为059F

?

显示和修改标志位状态, 命令格式为:


-RF

系统将响应, :



OVDN EI NG ZR AC PE CY -

此时如不修改其内容可按Enter,不然,建入欲修改内容,:

OVDN EI NG ZR AC PE CY - PONZDINV

即可,键入次序是任意。

运行命令GGo, 其格式为:

其中,地址1指定了运行起始地址,如不指定则从目前CS:IP开始运行。后面地址均为断

点地址,当指令实施到断点时,就停止实施并显示目前全部寄存器及标志位内容,和下一条

将要实施指令。

跟踪命令TTrace, 有两种格式:


?

逐条指令跟踪



-T[=address]



?

多要指令跟踪

-T[=address][value]

从指定地址起实施n条指令后停下来,n value指定。

汇编命令AAssemble, 其格式为:

-A[address]

该命令许可键入汇编语言语句, 并能把它们汇编成机器代码, 相继地存放在从指定地址开始存放区中。 必需注意: DEBUG 把键入数字均看成十六进制数, 所以如要键入十进制数,

则其后应加以说明, 100D




反汇编命令UUnassemble, 有两种格式:


?

从指定地址开始, 反汇编32 个字节, 其格式为:

-U[range]

比如:

-u100

18E4:0100 C MOV WORD PTR[0204],0138
18E4:0106 C7060602 MOV WORD PTR[0206],0200
18E4:010C C7060802 MOV WORD PTR[0208],0202
18E4:0112 BB0402 MOV BX,0204

18E4:0118 CD20 INT 20
18E4:0115 E80200 CALL 011A

18E4:011D 57 PUSH DI
18E4:011E 8B37 MOV SI,[BX]

假如地址被省略则从上一个U命令最终一条指令下一个单元开始显示32个字节。

? 对指定范围内存放单元进行反汇编,格式为:

-U[range]

比如:

-u 100 10C




18E4:0100 C MOV WORD PTR[0204],0138

18E4:0106 C7060602 MOV WORD PTR[0206],0200

18E4:010C C7060802 MOV WORD PTR[0208],0202

-u100 112

18E4:0100 C MOV WORD PTR[0204],0138

18E4:0106 C7060602 MOV WORD PTR[0206],0200

18E4:010C C7060802 MOV WORD PTR[0208],0202

这两种格式是等效。

-N filespecs [filespecs]
命名命令NName, 其格式为:

[d:][path] filename[.ext]

比如:

-N myprog

-L

-

可把文件myprog 装入存放器。


装入命令LLoad, 有两种功效:


?

把磁盘上指定扇区范围内容装入到存放器从指定地址开始区域中。其格式为:

-L[address[drive sector sector]]

? 装入指定文件,其格式为:

-L[address]

此命令装入已在CS:5CH 中格式化了文件控制块所指定文件。如未指定地址,则装入CS:0100开始存放区中。

写命令WWrite, 有两种功效:


?

把数据写入磁盘指定扇区。其格式为:
-W address drive sector sector

-W [address]

此命令把指定存放区中数据写入由CS:5CH处文件控制块所指定文件中。如未指定地址则数据从CS:0100 开始。要写入文件字节数应先放入BXCX中。

退出DEBUG 命令QQuit, 其格式为:

-Q

它退出DEBUG, 返回DOS。本命令无存盘功效, 如需存盘应先使用W命令。

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务