debug命令怎么用?是干什么的?

谁帮我解释下debug这个命令啊。有什么作用。我好像听说有关于CMOS设置的。到底是怎么用的?

  DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。
  它的功能包括以下几个方面。
  ⒈ 直接输入,更改,跟踪,运行汇编语言源程序;
  ⒉ 观察操作系统的内容;

  3.查看ROM BIOS的内容;
  ⒋观察更改RAM内部的设置值;
  ⒌以扇区或文件的方式读写软盘数据。
  A 汇编命令
  功能: 将指令直接汇编成机器码输入到内存中。
  说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制, 用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到 CS:0100区域。
  例A:>DEBUG
  -a 0100
  08F1:0100 MOV AH,09
  08F1:0102 MOV DX,109
  08F1:0105 INT 21H;
  08F1:0107 INT 21H;<-XP下运行cmd debug时,应该是INT 20H,21H会出遇无效指令错误
  08F1:0109 db 'May I help you $'
  08F1:0115←离开a状态
  -g ←运行
  May I help you 运行结果
  Program terminated normally表示运行正常

  C比较命令
  功能: 比较两内存区域中的内容是否相同,若不同则显示其地址和内容。
  如:C4000:0 3F 100
  就是用来比较4000:0000-4000:003F与DS:0100-DS:013F之间的内容:其显示格式如下:
  内存地址1内含值1内含值2内存地址2
  例:比较4000:0 3F 100内容的差异
  -C4000:0 3F 100
  4000:0000 64 43 08F1:0100
  4000:0001 3E 69 08F1:0101 显示内容的差异处
  4000:0002 78 FF 08F1:0102
  ……………………………………
  如果要比较的范围在DS内,则段地址不必指出:
  如:-C 0 4 100;比较DS:0---DS:4与DS:100---DS:104
  C命令的另一种格式如下:C地址1 L 长度 地址2
  如:-C000:0 L4 0;由0000:0与与DS:0开始比较它同-C0000:0 3 0命令相等,显示结果如下:
  0000:0000 8A C0 08F1:0000
  0000:0001 10 20 08F1:0001 它们都比较4个字节
  0000:0002 1C 00 08F1:0002
  0000:0003 49 7F 08F1:0003

  转储命令
  * D[地址] 或D[起始地址][目的地址] 转储命令
  功能: 以内存映象方式显示内存中的信息。
  说明: 转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCⅡ字符显示,所有不可打印字符用句号(。)表示。每行显示16个字节的内容,在第八和第九个字节之间有一个连字符 - 此命令隐含的段地址为DS的值。若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令, 则从初使化的段寄存器的内容,加上地址偏移量 0100H 开始显示。
  例:-d10,4f即为显示DS:4f的内容在D命令中如不指出段地址,则其默认为DS段。
  如指明段地址,则从指明的段地址列出指定的范围
  如:-dfff:00:0f
  我们也可以指定长度来列出所需要内存内容
  如:-d 100 L20即为显示由DS:100-DS:11F的内容,共20H个字节:
  * E[地址] [字节串) 修改内存命令
  功能: 从指定的地址开始修改内存值。
  格式:E起始地址[数据行]
  ⑴用给定内容代替指定范围的单元内容
  -E地址 内容表
  例:-E100 41 42 43 44 48 47 46 45
  -D 100,L08
  08F1:0100 41 42 43 44 48 47 46 45 ABCDHGFE…
  ⑵逐个内存内容
  例:-E 100:
  08F1:0100 76 42 :42是操作员键入
  此命令是将原100号内存内容76修改为42,用D命令可察看。
  * F[地址范围] [字节或字节串] 填写命令
  功能: 将要填写的字节或字节串填入由地址范围指定的存储器中。
  例:-f100 120 61 62 63 64
  -d100 11f
  08F1:0100 61 62 63 64 61 62 63 64 -61 62 63 64 61 62 63 abcd abcd abcd abcd
  08F1:0110 13 67 98 E3 C8 2E B3 B6 -03 21 AC 19 3121 4E 96 g……1…
  如果数据行超出指定的范围,则填不下的数值会被忽略。
  例:-f 100 107 41 43 43 44 45 46 47 48 49 4A 4B 4C 4D -d 100,lof
  08F1:0100 41 42 43 44 45 46 47 64 -61 62 63 64 ABCDEFGdabcdabcd
  由上例可看出,超出范围的数据被忽略
  另外,F和E命令都可填入字符串:
  如:-F 100 105 "MSDOS"
  -d 100 l0f
  08F1:0100 4D 53 44 4F 53 46 47 64 -61 62 63 64 MS DOS FGabcd abcd

  G执行命令
  功能: 执行正在调试的程序,当达到断点时停止执行, 并且显示寄存器标志和下一条要执行的命令。
  说明: 如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。如果指定断点,当指令到达指令地址时停止执行,并显示各寄存器标志位的内容和下一条要执行的命令,最多允许用户设定10个断点。
  例:A:\>debug tan.exe
  -u:反编译成汇编语言程码
  …………
  . .
  -g 100 指定中断点
  Program terminated normally:
  另外:我们在DEBUG下可运行一个文件.EXE
  如:A:\>debug tan.exe
  -g
  即可开始运行此程序,和在DOS下完全一样:
  * H[数值][数值] 十六进制算术运算命令
  功能: 分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。
  说明: 替用户完成简单的十六进制数的运算。
  例:-h4538 5623
  9B5B EF15

  I命令
  功能: 从指定的端口输入并显示(用十六进制)的一个字节。
  例:-i70
  F9;显示70端口的内容为F9
  I命令可由80X86的64K个端口取数据

  L命令
  功能: 将一个文件或盘的绝对扇区装入存储器。
  说明: 单个L命令能够装入的最大扇区数是 80H,其中盘号 0,1,2,3……分别代表 A,B,C,……出现读盘错,显示错误信息。
  ⑴格式1.L装入地址 驱动器名 起始扇区/扇区数
  这种方式可把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中,在此外扇区编号引用逻辑/扇区的方式。
  例:-L 100 0 01,将A驱的0扇区装至CS:100上
  -d 100 10f
  08F1:0100 EB 3C 90 3C 53 44 4F 53 -36 2E 32 32 02 01 01 00.L,MSDOS 6.22……
  ⑵格式2:L装入地址
  这种方式可把指定文件装入内存,装入的文件可在进入DEBUG时指定亦可用N命令建立,格式为-n文件名:
  例1 DEBUG tan.pas
  -L 100
  例2 DEBUG
  -n tan.pas
  -L 100
  须知:L命令只能读取逻辑扇区,不能读取硬盘分区表
  L命令中所用的磁盘代码A=00,B=01,C=02……
  
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-19
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 显示扩展内存的状态。
第2个回答  2019-08-15
DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。
  它的功能包括以下几个方面。
  ⒈
直接输入,更改,跟踪,运行汇编语言源程序;
  ⒉
观察操作系统的内容;
  3.查看ROM
BIOS的内容;
  ⒋观察更改RAM内部的设置值;
  ⒌以扇区或文件的方式读写软盘数据。
  A
汇编命令
  功能:
将指令直接汇编成机器码输入到内存中。
  说明:
用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制,
用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到
CS:0100区域。
  例A:>DEBUG
  -a
0100
  08F1:0100
MOV
AH,09
  08F1:0102
MOV
DX,109
  08F1:0105
INT
21H;
  08F1:0107
INT
21H;<-XP下运行cmd
debug时,应该是INT
20H,21H会出遇无效指令错误
  08F1:0109
db
'May
I
help
you
$'
  08F1:0115←离开a状态
  -g
←运行
  May
I
help
you
运行结果
  Program
terminated
normally表示运行正常
  C比较命令
  功能:
比较两内存区域中的内容是否相同,若不同则显示其地址和内容。
  如:C4000:0
3F
100
  就是用来比较4000:0000-4000:003F与DS:0100-DS:013F之间的内容:其显示格式如下:
  内存地址1内含值1内含值2内存地址2
  例:比较4000:0
3F
100内容的差异
  -C4000:0
3F
100
  4000:0000
64
43
08F1:0100
  4000:0001
3E
69
08F1:0101
显示内容的差异处
  4000:0002
78
FF
08F1:0102
  ……………………………………
  如果要比较的范围在DS内,则段地址不必指出:
  如:-C
0
4
100;比较DS:0---DS:4与DS:100---DS:104
  C命令的另一种格式如下:C地址1
L
长度
地址2
  如:-C000:0
L4
0;由0000:0与与DS:0开始比较它同-C0000:0
3
0命令相等,显示结果如下:
  0000:0000
8A
C0
08F1:0000
  0000:0001
10
20
08F1:0001
它们都比较4个字节
  0000:0002
1C
00
08F1:0002
  0000:0003
49
7F
08F1:0003
  转储命令
  *
D[地址]
或D[起始地址][目的地址]
转储命令
  功能:
以内存映象方式显示内存中的信息。
  说明:
转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCⅡ字符显示,所有不可打印字符用句号(。)表示。每行显示16个字节的内容,在第八和第九个字节之间有一个连字符
-
此命令隐含的段地址为DS的值。若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令,
则从初使化的段寄存器的内容,加上地址偏移量
0100H
开始显示。
  例:-d10,4f即为显示DS:4f的内容在D命令中如不指出段地址,则其默认为DS段。
  如指明段地址,则从指明的段地址列出指定的范围
  如:-dfff:00:0f
  我们也可以指定长度来列出所需要内存内容
  如:-d
100
L20即为显示由DS:100-DS:11F的内容,共20H个字节:
  *
E[地址]
[字节串)
修改内存命令
  功能:
从指定的地址开始修改内存值。
  格式:E起始地址[数据行]
  ⑴用给定内容代替指定范围的单元内容
  -E地址
内容表
  例:-E100
41
42
43
44
48
47
46
45
  -D
100,L08
  08F1:0100
41
42
43
44
48
47
46
45
ABCDHGFE…
  ⑵逐个内存内容
  例:-E
100:
  08F1:0100
76
42
:42是操作员键入
  此命令是将原100号内存内容76修改为42,用D命令可察看。
  *
F[地址范围]
[字节或字节串]
填写命令
  功能:
将要填写的字节或字节串填入由地址范围指定的存储器中。
  例:-f100
120
61
62
63
64
  -d100
11f
  08F1:0100
61
62
63
64
61
62
63
64
-61
62
63
64
61
62
63
abcd
abcd
abcd
abcd
  08F1:0110
13
67
98
E3
C8
2E
B3
B6
-03
21
AC
19
3121
4E
96
g……1…
  如果数据行超出指定的范围,则填不下的数值会被忽略。
  例:-f
100
107
41
43
43
44
45
46
47
48
49
4A
4B
4C
4D
-d
100,lof
  08F1:0100
41
42
43
44
45
46
47
64
-61
62
63
64
ABCDEFGdabcdabcd
  由上例可看出,超出范围的数据被忽略
  另外,F和E命令都可填入字符串:
  如:-F
100
105
"MSDOS"
  -d
100
l0f
  08F1:0100
4D
53
44
4F
53
46
47
64
-61
62
63
64
MS
DOS
FGabcd
abcd
  G执行命令
  功能:
执行正在调试的程序,当达到断点时停止执行,
并且显示寄存器标志和下一条要执行的命令。
  说明:
如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。如果指定断点,当指令到达指令地址时停止执行,并显示各寄存器标志位的内容和下一条要执行的命令,最多允许用户设定10个断点。
  例:A:\>debug
tan.exe
  -u:反编译成汇编语言程码
  …………
  .
.
  -g
100
指定中断点
  Program
terminated
normally:
  另外:我们在DEBUG下可运行一个文件.EXE
  如:A:\>debug
tan.exe
  -g
  即可开始运行此程序,和在DOS下完全一样:
  *
H[数值][数值]
十六进制算术运算命令
  功能:
分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。
  说明:
替用户完成简单的十六进制数的运算。
  例:-h4538
5623
  9B5B
EF15
  I命令
  功能:
从指定的端口输入并显示(用十六进制)的一个字节。
  例:-i70
  F9;显示70端口的内容为F9
  I命令可由80X86的64K个端口取数据
  L命令
  功能:
将一个文件或盘的绝对扇区装入存储器。
  说明:
单个L命令能够装入的最大扇区数是
80H,其中盘号
0,1,2,3……分别代表
A,B,C,……出现读盘错,显示错误信息。
  ⑴格式1.L装入地址
驱动器名
起始扇区/扇区数
  这种方式可把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中,在此外扇区编号引用逻辑/扇区的方式。
  例:-L
100
0
01,将A驱的0扇区装至CS:100上
  -d
100
10f
  08F1:0100
EB
3C
90
3C
53
44
4F
53
-36
2E
32
32
02
01
01
00.L,MSDOS
6.22……
  ⑵格式2:L装入地址
  这种方式可把指定文件装入内存,装入的文件可在进入DEBUG时指定亦可用N命令建立,格式为-n文件名:
  例1
DEBUG
tan.pas
  -L
100
  例2
DEBUG
  -n
tan.pas
  -L
100
  须知:L命令只能读取逻辑扇区,不能读取硬盘分区表
  L命令中所用的磁盘代码A=00,B=01,C=02……
第3个回答  2020-12-23

debug命令:程序调试工具

第4个回答  2013-09-19
修复安装你电脑比如出什么问题了,DLL什么被误删导致开不了机这时就需要用系统盘进入故障恢复台修复安装

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网