| windows | linux | DOS | 注册表 | 安装 | 美化 |
当前位置:主页>系统>DOS>文档内容

DOS 知识:DEBUG 详解

来源: 作者: 发布时间:2008-03-03  点击:


DOS 的概况:DOS(Disk Operating System)是一个使用得十分广泛的磁盘操作系统,就连眼下流行的Windows9x/ME系统都是以它为基础。

    常见的DOS有两种:IBM公司的PC-DOS和微软公司的MS-DOS,它们的功能、命令用途格式都相同,我们常用的是MS-DOS。

    自从DOS在1981年问世以来,版本就不断更新,从最初的DOS1.0升级到了最新的DOS8.0(Windows ME系统),纯DOS 的最高版本为DOS6.22,这以后的新版本DOS都是由Windows系统所提供的,并不单独存在。下面的讲解所使用的DOS为Windows98 4.10.2222A的DOS7.0系统。

    DOS的基础知识

    1)DOS的组成
    DOS分为核心启动程序和命令程序两个部分。

    DOS的核心启动程序有Boot系统引导程序、IO.SYS、MSDOS.SYS和COMMAND.COM。它们是构成DOS系统最基础的几个部分,有了它们系统就可以启动。

    但光有启动程序还不行,DOS作为一个字符型的操作系统,一般的操作都是通过命令来完成。DOS命令分为内部命令和外部命令。内部命令是一些常用而所占空间不大的命令程序,如dir、cd等,它们存在于COMMAND.COM文件中,会在系统启动时加载到内存中,以方便调用。而其它的一些外部命令则以单独的可执行文件存在,在使用时才被调入内存。
    (小知识:可执行的程序文件有*.COM和*.EXE两种,一般来讲,*.EXE文件为软件执行程序,而*.COM文件则为命令程序)

    2)DOS的系统提示符
    DOS启动后,会显示“C:〉“以及一个闪动的光标,这及是DOS的系统提示符,它表示了当前所在的盘符和目录,我们可以输入“[盘符] :“来进行转换,如“A:“、“E:“。这里要注意输入的盘符一定要是存在的。
    (小知识:盘符从A到Z,通常A、B盘为软驱,硬盘的盘符从C开始,而光驱的盘符为最后一个)

    3)文件及目录
    电脑中的数据主要都是以文件形式存储的,也可以说DOS以文件的形式来管理数据。
    文件是相关数据的集合,若干数据聚集在一起组成一个文件。每个文件都有文件名,文件名由主文件名和后缀名两部分组成,中间有小圆点隔开。DOS6.22及其以前版本最多仅支持8个字符的主文件名和3个字符的后缀名,而从Windows 95的DOS7.0开始就可支持128个字符的主文件名和后缀名。字母、汉字、数字和一些特殊符号如“!、@、#“都可以作为文件名,但不能有“/、、|、:、?“等符号。

    通常我们可以通过文件的后缀名看出该文件的类型,比如:

    EXE 可执行程序文件
    COM 可执行命令文件
    BAT 可执行批处理文件
    TXT 文本文件
    DAT 数据文件
    BAK 备份文件

    为了方便用户进行操作,DOS还允许使用通配符。所谓通配符,就是“?“与“*“这两个符号,它们可以用来代替文件名中的某些字符。“?“代表一个合法的字符或空字符,比如“AB?D.EXE“文件就可以表示“ABCD.EXE“、“ABDD.EXE“、“ABZD.EXE“等。

    而“*“则代表若干个字符,如“*.BAT“就代表当前目录下所有后缀名为“BAT“的文件。
    DOS以目录树的形式管理磁盘,这里的目录就相当于Windows中的文件夹。和文件夹一样,目录也是一层一层的,构成一个树的形式。在一个盘符中最底层的目录为根目录,根目录下的目录都称为它的子目录,根目录用““表示,一个目录的上一层目录用“..“表示。我们可以通过路径来查找某一个文件或目录,路径就如同地址一样,可以使用户方便、准确地进行查找。比如“C:WindowsCommanddeltree.exe“就是一个文件的路径。

    在同一个目录下,不允许存在相同名称的文件或目录。DOS的内部命令是进行操作的基础,完成了对它们的学习你就跨进了DOS系统的大门。

    1)DIR--显示指定路径上所有文件或目录的信息
    它的格式为“DIR [盘符:][路径][文件名] [参数]“,比如“DIR E:FF.M3U“。输入后回车则会显示出相关信息。另外它还有几个参数:

    /W:宽屏显示,一排显示5个文件名,而不会显示修改时间,文件大小等信息;
    /P:分页显示,当屏幕无法将信息完成显示时,可使用其进行分页显示;
    /A:显示具有特殊属性的文件,这里的属性有“H“隐藏、“R“只读等,我们可以输入“DIR *.* /AH“来显示当前目录下所有具有隐藏属性的文件;
    /S:显示当前目录及其子目录下所有的文件,通过这个参数,我们可以进行某个文件或目录的查找,比如我们可以在“C:〉“后输入“DIR *.DAT /S“来查找C盘中所有后缀名为DAT的文件。

    几种参数可以同时使用,例如“DIR *.COM /W /P /S“。

    2)MD--建立目录
    它的格式为“MD [盘符][路径]“,例如“MD TEMP“。
    注意:该命令一次只能建立一个目录。

    3)RD--删除目录
    格式为“RD [盘符][路径]“。
    注意:该命令只能删除空目录,并且不能删除当前目录。

    4)CD--进入指定目录
    格式为“ CD [路径]“,例如“CD HAPPY“。
    注意:只能进入当前盘符中的目录。其中“CD“为回到根目录,“CD..“为回到上一层目录。

    5)COPY--拷贝文件
    格式为“COPY [源目录或文件] [目的目录或文件]“,比如“COPY C:*.COM D:“,我们也可以输入“COPY C:Command.COM D:Command.BAK“来进行文件拷贝并改名。
    注意:使用该命令进行文件拷贝时,目的目录一定要存在。

    6)DEL--删除文件
    格式为“DEL [盘符][路径][文件名] [参数]“,比如“DEL C:DATA*.BAK“。它有一个参数:“/P“,可以使用户在删除多个文件时对每个文件都显示删除询问。

    7)REN--改名
    格式为“REN [原名] [现名]“,7.0以后版本的DOS都支持对文件名和目录名的修改,而以前的DOS只能修改文件名。

    8)TYPE--显示文本文件
    格式为“TYPE [文件名]“,能对文本文件进行查看。

    以上就是一些常用的内部命令,除此之外,还有一些内部命令,如“CLS“清屏命令、“TIME“显示或改变当前时间、“DATE“显示或改变当前日期、“VER“显示系统版本号等。使用这些内部命令能够对DOS进行基础的操作,掌握它们是进行复杂操作的前提。
    DOS的外部命令就是一些应用程序,能够使用户的操作更加方便和深入。这些外部命令都是以文件的形式存在,Windows系统的DOS外部命令保存在Windwos主目录下的“Command“目录中。下面就让我们来看看常用的一些DOS外部命令。

    1)FORMAT(Format.COM)--格式化命令
    众所周知,新买的磁盘都必须经过格式化后方能使用,FORMAT命令可以完成对软盘和硬盘的格式化操作,格式为“FORMAT [盘符] [参数]“,例如:“FORMAT A: /S“。它有两个常见的参数:

    /Q:进行快速格式化;
    /S:完成格式化,并将系统引导文件拷贝到该磁盘。

    注意:该命令会清除目的磁盘上的所有数据,一定要小心使用。如果进行了普通的格式化,那磁盘上的数据还有可能恢复,但如果加上了“/Q“,那要恢复就比蹬天还难了。

    2)EDIT(Edit.COM)--编辑命令
    其实它就是一个文本编辑软件,使用它可以在DOS下方便地对文本文件进行编辑,格式为“EDIT [文件名] [参数]“,它的参数不是特别实用,我在此就不多讲。

    3)SYS(Sys.COM)--系统引导文件传输命令
    它能够将IO.SYS等几个文件传输到目的磁盘,使其可以引导、启动。格式为“SYS [盘符]“

    4)ATTRIB(Attrib.EXE)--文件属性设置命令
    通过该命令,我们可以对文件进行属性的查看和更改。格式为“ATTRIB [路径][文件名] [参数]“,如果不加参数则为显示文件属性。它的参数有“+?“和“-?“两种,“?“代表属性代号,这些代号有:“H“隐藏;“S“系统;“R“只读,“+“表示赋予,“-“表示去除。

    5)XCOPY(Xcopy.EXE)--拷贝命令
    该命令在“COPY“的基础上进行了加强,能够对多个子目录进行拷贝。它的参数比较多,但是最常用的是“/S“,它可以对一个目录下属的多个子目录进行拷贝,另外“/E“可以拷贝空目录。格式为“XCOPY [源路径][源目录/文件名] [目的目录/文件名] [参数]“。

    6)SCANDISK(Scandisk.EXE)--磁盘扫描程序
    这个命令在实际的操作中有很大的用处,它能对磁盘进行扫描并修复,能够解决大部分的磁盘文件损坏问题。格式为“SCANDISK [盘符:] [参数]“下面是它的几个参数:

    /fragment [驱动器名:路径文件名]:使用这个参数可以显示文件是否包含有间断的块,我们可以通过运行磁盘整理程序来解决这个问题;
    /all:检查并修复所有的本地驱动器;
    /autofix:自动修复错误,即在修复时不会出现提示;
    /checkonly:仅仅检查磁盘,并不修复错误;
    /custom:根据Scandisk.ini文件的内容来运行Scandisk,Scandisk.ini是一个文本文件,它包含了对Scandisk程序的设置,其中的[custom]块是在加上“/custom“参数后才执行的,用户可以根据自己的不同情况来进行不同的设置;
    /nosave:在检查出有丢失簇后直接删除,并不转化为文件;
    /nosummary:不显示检查概要,完成检查后将直接退出程序;
    /surface:在完成初步检查后进行磁盘表面扫描;
    /mono:以单色形式运行Scandisk。

    我们可以根据不同的情况来加上不同的参数。我们可以执行“scandisk /all /checkonly /nosave /nosummary“来完成对磁盘的检查并且自动退出,另外还可以编辑scandisk.ini文件中设置,再运行“scandisk /custom“。如果被损坏的文件比较多,我们可以使用“/autofix“来进行自动修复,不然会忙死你的。

    7)CHKDSK(Chkdsk.EXE)--磁盘检查命令
    它会检查磁盘,并会显示一个磁盘状态报告。格式为“CHKDSK [盘符:] [参数]“,最常用的参数是“/F“,可以对文件错误进行修复。

    8)MOVE(Move.EXE)--文件移动命令
    使用它可以对文件进行移动。格式为“MOVE [源文件] [目的路径]“。同时也可以使用通配符。

    9)DELTREE(Deltree.EXE)--删除命令
    这可是DEL命令的超级加强版,它不仅可以删除文件,并且会将指定目录和其下的所有文件和子目录一并删掉。使用它,我们可以很方便的对目录进行彻底的删除。格式“DELTREE [文件/路径] [参数]“,参数有一个“/Y“,使用时系统会对每个文件进行询问,回答“Y“后才删除。

    10)FDISK(Fdisk.EXE)--分区命令
    我们可以使用它对硬盘进行分区操作,我在下一部分会进行具体讲解。

    以上就是常用的一些DOS外部命令,使用它们可以使你的操作更方便,同时也是进行系统修复所必不可少的。请大家好好地掌握每一个命令及其用处。
    看了前面的文章,相信大家对DOS的基础操作以有了一个较深的印象了吧。但光掌握以上的这些内容是远远不够的,解决电脑问题,最主要的还是能够将学到的死知识转化为自己可以熟练使用的兵器。当然,这也不是一朝一夕就可以达到的,同时也要靠经验的积累。下面就请大家随我一道来看几个实例,从中找出解决问题的关键和主要的思路。

    故障事例:
    某电脑在使用时突然停电,来电后开启电脑,但Windows系统无法正常启动,死机频繁。

    故障分析:
    从这个原因,我们可以大致推断:停电造成电脑非法关机而损伤磁盘文件,从而导致Windows系统受到损坏,无法正常运行。

    大致操作:
    从解决文件损坏这个角度出发,需要修复损坏的文件,如果损坏严重,也可以考虑重装Windows。

    具体操作:
    1、进入DOS。由于Windows受损,只有在DOS下进行操作。在系统引导、出现“Starting Windows.....“的时候按下“F8“键,然后再选择“Command Prompt Only“即可进入DOS方式。为了使修复速度更快,我们可以运行Windows目录下的“SMARTDRV.EXE“程序,这是一个加速磁盘读取速度的缓存程序。

    2、运行SCANDISK程序,必要时可以加上“/autofix“参数,这样在第一次选择后就可让程序自动修复。

    3、运行CHKDSK程序,查看是否还存在着问题,并可以使用“/F“进行修复。

    4、运行Windows,看系统是否恢复正常。如果在启动时提示注册表出错,可以重新进入DOS,在Windows目录下运行“SCANREG /RESTORE“,然后在列表中选择一个好的注册表文件就行了。

    5、如果文件系统受损严重,就需要重新安装Windows。

    如果无法正常进入Windows,那需要重新安装Windows的任务又只得在DOS下进行了。对于广大初学者,在DOS下安装Windows还有一定的困难,下面我就具体讲解一下在DOS下的安装。这里的安装使用光盘启动,若使用软盘启动其操作大致相同。

    1、在开机进行自检时按下“DEL“键从而进入BIOS设置,在“BIOS FEATURES SETUP“的“Boot Sequence“将“CDROM“一项设置在最前面;按“ESC“键退到主画面,按“F10“键,并输入“Y“,即可存盘退出。

    2、在开机前将系统启动盘放入光驱。

    3、在启动后的启动菜单中选择“启动并使用光驱(With CDROM)“,大家也可以选择启动后自动运行Windows98的安装程序,但那样并不和我意,安装过程将十分漫长,所以在安装前我们需要运行“SMARTDRV.EXE“。

    4、进入DOS后就转到光驱盘符,使用“DIR“命令查看目录,然后进入Windows的安装目录(目录名大都可以见名知意,一般为“Win98“、“Win“、“Windows“等)。

    5、运行“SMARTDRV.EXE“。

    6、运行“SETUP.EXE“,回车后会进入磁盘扫描,完成后即可进入安装,其操作就和在Windows中安装一样了。

    看完了这两个最常见的问题,你是否有所收获?主要大家将基础的东西掌握后,面对问题不慌不乱,仔细思考分析,能从其它的故障中不断总结经验,你也很快会成为一个电脑高手。另外,多帮助他人解决问题也能使你获得更多的锻炼机会,增加自己的知识面,从而可以积累更多、更好的资本。

    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 jump

    可以将 near 前缀缩写为 ne。

    区分字和字节内存位置

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

    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 QUOTATION MARK:“’’’’
    db “THIS IS A QUOTATION MARK:’’’’“
    dw 1000,2000,3000,“BACH“

    范例

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

    add bx,34[bp+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(比较) FF

    比较内存的两个部分。

    c range address

    参数

    range

    指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。

    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 BE 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 程序将从以前 d 命令中所指定的地址范围的末尾开始显示 128 个字节的内容。

    有关显示寄存器内容的信息,请参看Debug R(寄存器)。

    说明
    当使用 d 命令时,Debug 以两个部分显示内存内容:十六进制部分(每个字节的值都用十六进制格式表示)和 ASCII 码部分(每个字节的值都用 ASCII 码字符表示)。每个非打印字符在显示的 ASCII 部分由句号 (.) 表示。每个显示行显示 16 字节的内容,第 8 字节和第 9 字节之间有一个连字符。每个显示行从 16 字节的边界上开始。

    范例
    假定键入以下命令:
    dcs:100 10f
    Debug 按以下格式显示范围中的内容:
    04BA: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 

推荐文档


相关文章