2024年5月2日发(作者:)

附录2

动态调试程序的使用

是专为汇编语言设计的一种调试工具,可用来检查、修改存储单元和寄

器的内容,装入、存储及启动运行程序,也可用 汇编简单的汇编语言程序。

( 注: DEBUG 只能在 DOS 或 WINDOWS 98 及WINDOWS ME 下运行 )

DEBUG的命令表

命 令

A(Assemble)

C(Compare)

D(Dump)

E(Enter)

F(Fill)

G(GO)

H(Hexarthmetic)

I(Input)

L(Load)

M(Move)

N(Name)

O(Output)

Q(Quit)

R(Register)

S(Search)

T(Trace)

U(Unassmble)

W(Write)

A (汇编)命令

用途:把计算机的宏汇编语句直接汇编到内存中.

格式:A[address]

说明:“A”是一条逐行汇编命令,当使用“A”命令时,并不直接将16进制字节(机器

码)键入存储器,而键入的是助记符。但键入的汇编语句被汇编在指定地址的连续单元中.

在“A”命令后没指出地址时,分两种情况:

目 的

汇编语句

比较内存

显示内存

改变内存

填充内存

执行程序

十六进制运算

输入

装入内存

传送内存

定义文件

输出字节

退出DEBUG状态

显示寄存器

检索字符

单步/多步跟踪

反汇编

文件或数据写盘

格 式

A[address]

C range address

D[address]

D[range]

E address list

F range list

G[=address] [address]

H Value Value

I port address

L[address]

M range range

N[d:[path]filename[.exe]]

O port address byte

Q

R[register name]

S range list

T or T[address][Value]

U[address] or U[range]

W[address[drive sector sector ] ]

a.没指定地址同时前面没有使用汇编命令,则语句被汇编到CS:100开始的区域中.

b.没指定地址,但前面已有汇编命令,则语句被汇编到紧接着前一条汇编语句的后

一个地址单元里。

- ;“-”为DEBUG提示符

-A

0CDE:0100 DB ‘THIS IS AN EXAMPLE’,‘$’

0CDE:0113 DB ‘1 2 3 4 5 6 7 8 9 A B C D E F $’

OCDE:0133 MOV DX,0100

0CDE:0136 MOV AH,09

0CDE:0138 1NT 21

0CDE:013A MOV DL,0D

0CDE:013C MOV AH,02

0CDE:013E INT 21

0CDE:0140 MOV DL,0A

0CDE:0142 MOV AH,02

0CDE:0144 INT 21

0CDE:0146 MOV DX,0100

0CDE:0149 MOV AH,09

0CDE:014B INT 21

0CDE:014D 1NT 20

0CDE:014F

- ;“-”为DEBUG提示符

*在DEBUG状态下键入的数字都是16进制数,所以不要用H表示为16进制数。

在语句输入完后,只要按ENTER键,即告诉DEBUG用户程序输入完毕,此时回

到DEBUG初始状态。

注意:

(1)DEBUG不能识别操作数是字存储单元,还是字节存储单元。必须用前缀

“WORD PTR”或“BYTE PTR”来明确指出数据类型。 WORD 和 BYTE 可简写为

WO,BY。

例: NEG BYTE PTR[l28]

DEC WORD PTR[SI]

(2)NEAR前缀可缩写为NE,但FAR前缀不能缩写。

C(比较)命令

用途:比较两个内存区的内容。

格式: C range address

说明:比较两个内存区的内容,比较长度由range决定,若发现不相等的字节,按下

列格式显示它们的内容。

addr1 bytel byte2 addr2

例: 先用 D 命令显示两个存储区的内容。

-D 0100