DEBUG使用

(1)在DOS提示符下,键人命令

C:/>DEBUG [盘符][ 路径][文件名[.扩展名]] ↙

(2)先运行DEBUG程序, 在DEBUG状态下用N和L命令装入

C:/>DEBUG ↙

—N 文件名 ↙

—L ↙
例: C>DEBUG A:EX_MOVE.EXE ↙

或:C>DEBUG ↙

-N A:EX_MOVE.EXE ↙

-L ↙

DEBUG命令的一般规则

(1) DEBUG提示符——破折号(—)

(2) 在DEBUG命令中使用的地址格式约定:

[<段地址>:]<位移量>

其中<段地址>可以是段寄存器名,也可以是十六进制的值,也可以缺省。

例:CS:100 0914:100

地址范围的格式为:

<段地址>:<始位移量> <末位移量>

或:<段地址>:<始位移量> L <长度>

例:CS:100 110 0914:100 L10

(3) 命令与参数之间的分隔符(空格或逗号)可有可无,但两个十六进制之间必须要有分隔符。因此,下列三个命令是等价的:

DCS:100 100 ;命令D与参数之间无分隔符

D CS:100 100 ;命令D与参数之间有分隔符空格

D,CS:100,100 ;命令D与参数之间有分隔符逗号

(1) 显示内存储单元的内容

格式1:D <地址>

格式2:D <地址范围>

格式3:D

格式1,从指定偏移量开始显示128(80H)个字节内容;格式2,显示指定范围内存单元的内容;格式3,从当前位移量开始,显示128(80H)个内存单元内容。除非显示指定,D命令默认数据段。
例: —D 100 ↙

(2) 修改内存储单元的内容

①输入命令E(Enter)

格式1:E <地址> <字节串>

格式2:E <地址>

格式1 可以用给定的内容表来替代指定范围的存储单元内容。

例如,一EDS:100 F3’XYZ’8D

格式2则是采用逐个单元相继修改的方法。从指定地址开始,逐一显示内存单元的内容,若需修改,可以直接输入要修改的内容; 如不需修改,可以按”空格”键跳过;直到按回车键结束.

例如,一EDS:100

②填写命令F(Fill)

格式:F <地址范围> <要填入的字节或字节串>

如果<要填入的字节或字节串>的字节数超过指定的范围,则多余的不计.如果<要填入的字节或字节串>的字节数小于指定的范围,则重复使用<要填入的字节或字节串>填入,直到填满指定的所有单元为止。

例如:一f 4BA:100 L 5F3’XYZ’8D

或: 一f 4BA:100 104 5F3’XYZ’8D

显示和修改寄存器内容R(Register)

格式1:R

格式2:R 寄存器名

格式3:RF

格式1显示CPU内所有寄存器内容和标志位状态;格式2显示和修改指定的寄存器内容;格式3显示和修改标志位状态。

例如:一R

一RCX

一RF

运行命令G(Go)

格式1:G

格式2:G =<始址>

格式3:G=<始址> <断点>

格式1从当前的CS:IP开始运行;格式2从指定的地址开始运行;格式3当指令执行到断点时.就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。

例如:一 G

一G=110

一G=110 130

跟踪命令T(Trace)

格式1:T

格式2:T =<始址>

格式3:T=<始址> <跟踪条数>
格式1从当前的CS:IP开始跟踪,每次跟踪1条指令,系统就暂停,并显示当前寄存器值和下一条要执行的指令;格式2从指定的地址开始跟踪;格式3从指定的地址开始跟踪,执行指定条数后就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令

汇编命令 A(Assemble)

格式1:A

格式2:A <始址>

汇编命令将输入的汇编语言语句,汇编成机器代码,相继地存放在从指定地址开始的存储区

反汇编命令 U(Unassemble)

格式1:U

格式2:U <始址>

格式3:U <范围>

格式1从上一个U命令的最后一条指令的下一个单元开始,反汇编址32个字节;格式2从指定的地址开始,反汇编址32个字节;格式3反汇编指定范围内的字节。

查找S

格式:S〈范围〉〈字符串〉

在指定的范围中,查找指定的字符串。

例如:一S 0000 FFFE ‘ABC’

命名命令N (Name)

格式:N〈文件名〉

装入命令L(Load)

格式1:L [〈地址〉]

格式2:L[〈地址〉] [〈盘号:〉〈逻辑扇区号〉〈扇区数〉]

格式1将用命名命令N命名的文件的内容装入指定的内存区域;格式2将磁盘扇区的内容装入指定的内存区域。其中盘号0是A盘,1是B盘,2是C盘。当没有指定地址,则将信息装入CS:0100H处。

例:装入B盘中的Q1.COM文件

一N B:Q1.COM

一L

例:装入A盘中的DOS引导纪录

一L 100 0 0 1

写命令W(Write)

格式1:W [〈地址〉]

格式2:W[〈地址〉] [〈盘号:〉〈逻辑扇区号〉〈扇区数〉]

格式1从指定的内存区域将由CX寄存器指定的字节数写入用命名命令N命名的文件中;格式2从指定的内存区域将指定的扇区数写入指定的磁盘和扇区中。当没有指定地址,则从CS:0100H处开始写入。

例:将内存CS:100H处的1个扇区,装入A盘中的DOS引导记录(DOS引导记录在0磁道1扇区)

一W 100 0 0 1

退出DEBEG命令Q(Quit)

; program title goes head—
;
;EQU STATEMENT GO HEAD—
; *************
STACK SEGMENT PARA STACK ‘STACK’
DB 20 DUP(‘STACK ‘)
STACK ENDS
;********************
DATASG SEGMENT
; DATA GOES HEAR
DATASG ENDS
; *********************
EXTRA SEGMENT
; DATA GOES HEAR
EXTRA ENDS
; *********************
CODESG SEGMENT
;———————-
MAIN PROC FAR
ASSUME CS:CODESG,DS:DATASG,ES:EXTRA,SS:STACK
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATASG
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
; MAIN PART OF PROGRAM GOES HEAR
RET
MAIN ENDP
;———————–
CODESG ENDS
;**************************
END MAIN