当前位置: 首页 > 图文教程 > 操作系统 > DOS > DEBUG命令详解

DOS
Windows系统蓝屏死机代码大揭秘(三)
Windows系统蓝屏死机代码大揭秘(四)
操作系统优化中的重要环节
巧设虚拟内存让系统更流畅
Win 98系统中共享文件夹和打印机
老系统如何实现自动关机
让Windows只显示某些文件的扩展名
对于Win 98系统死机的简单预防
热门技巧天天递招 98篇(九)
热门技巧天天递招 98篇(十)
热门技巧天天递招 98篇(十一)
热门技巧天天递招 98篇(十二)
热门技巧天天递招 98篇(十三)
热门技巧天天递招 98篇(十四)
热门技巧天天递招 98篇(十五)
热门技巧天天递招 98篇(十六)
热门技巧天天递招 98篇(十七)
热门技巧天天递招 98篇(十八)
热门技巧天天递招 98篇(十九)
热门技巧天天递招 98篇(二十)

DOS 中的 DEBUG命令详解


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 74 ::
收藏到网摘: n/a

    DEBUG是DOS中的一个外部命令,从DOS 1.0起就带有此命令,因此可见此命令的重要性了。虽然此命令的功能非常强大,可以解决许多问题,可是对许多人来说,尤其是初学者来说,却非常不易掌握。因此,现将DEBUG的命令详细介绍一番,以让大家知道它的使用。
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(比较)

     比较内存的两个部分。

    c range address

    参数

    range

    指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。有关有效的 range 值的信息,请单击“相关主题”列表中的“Debug 说明”。

    address

    指定要比较的第二个内存区域的起始地址。有关有效 address 值的信息,请单击“相关主题”列表中的“Debug 说明”。

    说明

    如果 range 和 address 内存区域相同,Debug 将不显示任何内容而直接返回到 Debug 提示符。如果有差异,Debug 按