使用DEBUG工具调试汇编

D (Dump) 显示内存单元内容 内存以16进制显示

-D [地址]
-D [范围]

P 执行循环、重复的字符串指令、软件中断或子例程。不跟踪内部

-p

E(Enter)修改内存字节

-E 地址 内容表

例如
修改指定范围内容
-E DS:100 43 8D F7
查看修改后的内容
-D DS:100

R(Register)显示CPU内部所有寄存器内容和标志位状态 可以修改寄存器

显示和修改某个寄存器的内容

-R 寄存器名

例如

查看修改后的内容
-R
修改指定范围内容
-R AX
查看修改后的内容
-R

如果不想要修改修改AX的内容,可以在:出现后,直接回车就取消修改了。可以拿来查看寄存器中存储数据的内容。

-R AX
AX 0000
:                ---->直接回车(Enter)退出

G(Go)结束 运行命令

-G [=地址1][地址2[地址3......]]

  其中,地址1规定了运行起始地址,后面的若干地址均为断点地址。

T(Trace)跟踪执行 追踪命令T

逐条指令追踪

-T [地址]

该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

多条命令追踪

-T [地址][值]

该命令从指定地址起执行后停下来,n由[值]确定。

A(Assemble)逐行汇编 汇编命令A

-A [地址]

该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。

U(Unassemble)反汇编 反汇编指令U

按地址反汇编

该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一个指令的下一个单元开始显示32个字节。

-U [地址]

  

按范围反汇编

该指令对指定范围的内存单元进行反汇编。

-U 范围

N(Name)置文件名 命名命令N

-N 文件标识符 [文件标识符]

此命令将两个文件标志符格式化在CS:5CH和CS:6CH的两个文件控制块里面,以便使用L或者是W命令把文件装入或者存盘。

L(Load)读盘 装入命令L

把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:

-L 地址 驱动器 扇区号 扇区数

装入到指定文件中,格式为:

-L [地址]

此命令已在CS:5CH中格式化的文件控制块所制定的文件。 在用L命令前,BX和CX中应包含所读文件的字节数。

W(Write)存盘 写命令W

把数据写入到磁盘的指定扇区:

-W 地址 驱动器 扇区号 扇区数

把数据写入到指定文件中:

-W [地址]

此命令把指定内存区域中的数据写入由CS:5CH处的FCB所规定的文件中。 在用W命令前,BX和CX中应包含要写入文件的字节数。

Q(Quit)退出 退出命令Q

-Q

它退出DEBUG程序,返回DOS,但该命令本身并不把内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。

DEBUG调试过程

  • 编写源代码XX.asm文件
  • 在debug中键入xx.asm
  • 生成xx.obj文件
  • 在debug中键入linkXX.obj
  • 生成XX.exe可执行文件
  • 在debug中键入XX.exe 执行文件
  • 用U命令和T命令调试。
  • 在执行指令时.在寄存器状态下方会显示下次该执行的指令和该指令的操作数在内存中的内容,根据指令来观察寄存器的状态标志的变化来查错和查看执行结果。