MS-DOS 命令—— DEBUG.EXE
DEBUG.EXE 是一个对某些人来说很熟悉,但对其他人来说很陌生的命令。一些人们使用它的时候就像是一个专家而一些人们却连它是什么都不知道,也不知道怎样使用它。我呢,既不是使用这个程序的专家,又不是对它一点也不知道的人。我只是想介绍一些关于它的有用的技巧。
让我先给你看一个例子:
C:\>COPY CON TEST.TXT
I am a white rabbit.
I like peace.
^Z
1 file(s) copied
C:\>DEBUG
-A 100
0C46:0100 MOV AX, 0201
0C46:0103 MOV BX, 0300
0C46:0106 MOV CX, 0001
0C46:0109 MOV DX, 0080
0C46:010C INT 13
0C46:010E INT 3
0C46:010F
-G = 100
-D 4BE 4FF
0C46:04B0 00 01 ..
0C46:04C0 01 00 17 FE 7F 03 3F 00-00 00 C5 BB 3F 00 80 00 ......?.....?...
0C46:04D0 41 04 0C FE FF FF 04 BC-3F 00 96 68 00 01 00 00 A.......?..h....
0C46:04E0 C1 FF 0F FE FF FF 9A 24-40 01 37 D3 F3 01 00 00 .......$@.7.....
0C46:04F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.
-N MBR.DAT
-R BX
BX 0000
:0
-R CX
CX 0000
:200
-W 300
-N TEST.TXT
-L 300
-R BX
BX 0000
:
-R CX
CX 0025
:
-D 300 324
0C46:0300 49 20 61 6D 20 61 20 77-68 69 74 65 20 72 61 62 I am a white rab
0C46:0310 62 69 74 2E 0D 0A 49 20-6C 69 6B 65 20 70 65 61 bit...I like pea
0C46:0320 63 65 2E 0D 0A ce...
-Q
C:\>
在这个例子里,我给你看了三样东西:
- 用 DEBUG.EXE 来获得第一个硬盘的主引导记录。(黄色)
- 用 DEBUG.EXE 来把数据从内存保存到一个文件。(红色)
- 用 DEBUG.EXE 来把一个文件中的数据读到内存中。(浅蓝色)
如果你以前没有用过 DEBUG.EXE,你需要知道上面显示的文本并非所有都是要你自己打进去的:有些文本是 DEBUG.EXE 显示的信息。如果你真的想学好 DEBUG.EXE,你需要练习这些。更多有关 DEBUG.EXE 的信息,在它的命令行上输入“?”即可。如果你想安全地练习上述操作,你需要切换到纯 MS-DOS。你在视窗 NT/2000 下无法进行直接磁盘访问。你在视窗 9x 下无法安全地访问主引导扇区。所以你需要在做这些事情之前先切换到纯 MS-DOS。
对以上操作的详细解释:
-A 100 从内存地址 100H 处开始输入汇编代码(注:DEBUG
自动从 0000H 到 FFFFH 分配 64KB 内存空间)
0C46:0100 MOV AX, 0201 设置访问模式为“读”(AX 是 CPU 的一个寄存器,
通常保存加数或者用于中断;由于 INT 13H 将被
调用,这里它的含义是“把访问模式设成‘读’”)
0C46:0103 MOV BX, 0300 设置内存地址为 0300H
0C46:0106 MOV CX, 0001 设置扇区号为 0001H(这个是硬盘扇区地址的一部分)
0C46:0109 MOV DX, 0080 设置硬盘号为 0080H(0080H 是 PC 机上的第一个硬盘)
0C46:010C INT 13 调用 INT 13H
0C46:010E INT 3 调用 INT 3H 来将控制返回给 DEBUG.EXE
0C46:010F (在这里打一个回车)
-G = 100 从 100H 开始执行代码
-D 4BE 4FF 显示有关分区表和主引导记录签名的信息(4BEH =
0300H + 01BEH,1BEH 是标准的分区表起始偏移地址,
从这个位置开始,一共有四个分区表;每个分区表是
16 字节长;剩余的两个在 04FEH 和 04FFH 处的
字节应当是 55H 和 AAH,它们组成了主引导记录的
签名)
0C46:04B0 00 01 ..
0C46:04C0 01 00 17 FE 7F 03 3F 00-00 00 C5 BB 3F 00 80 00 ......?.....?...
0C46:04D0 41 04 0C FE FF FF 04 BC-3F 00 96 68 00 01 00 00 A.......?..h....
0C46:04E0 C1 FF 0F FE FF FF 9A 24-40 01 37 D3 F3 01 00 00 .......$@.7.....
0C46:04F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.
主引导记录信息(你的可能和我的不同)
-N MBR.DAT 设置文件名为“MBR.DAT”
-R BX 获取并改变 BX 的值(BX 和 CX 在一起表示文件的
长度;它们在读取或者写入一个文件的时候被用到)
BX 0300
:0
-R CX 获取并改变 BX 的值(因为主引导记录是 0200H,也
就是,00000200H,所以 BX 设成 0000H 而 CX 设成
0200H)
CX 0001
:200
-W 300 从内存地址 0300H 处开始保存数据到文件直到长度
00000200H 为止
以下部分可以在视窗 NT 中完成。
-N TEST.TXT 把文件名设置成“TEST.TXT”
-L 300 把它读到内存地址 0300H
-R BX 获取并改变 BX(然后是 CX)的值来获取它的长度
BX 0000
: (在这里直接按回车)
-R CX
CX 0025
: (在这里直接按回车)
-D 300 324 显示文件的内容(0300H + 0025H - 1 = 0324H 是
内存中文件的末尾)
0C46:0300 49 20 61 6D 20 61 20 77-68 69 74 65 20 72 61 62 I am a white rab
0C46:0310 62 69 74 2E 0D 0A 49 20-6C 69 6B 65 20 70 65 61 bit...I like pea
0C46:0320 63 65 2E 0D 0A ce...
-Q 退出 DEBUG
从上面那个例子中你可能会发现一些有趣的事情:回车键只是一个键,但它在一个纯文本文件中占两个字节:“0D 0A”。
现在你知道如何使用 DEBUG.EXE 把主引导记录加载到内存了,那么我就来告诉你如何把一块内存保存为主引导记录:只要把“MOV AX, 0201”换成“MOV AX, 0301”就可以了。如果你已经把那些读主引导记录的汇编代码输入了,你只要输入“A 100”,“MOV AX, 0301”,然后按回车键就就可以了。我希望我写的这些对你有帮助。
返回 MS-DOS 基础知识