DEBUG的使用及程序调试方法
- 格式:pdf
- 大小:125.84 KB
- 文档页数:6
实验一 DEBUG的使用及程序调试方法
一.实验目的
1、掌握常用DEBUG命令以及调试简单程序。
2、掌握常用汇编指令的功能及其书写格式。
3、掌握在DUBUG下进行简单程序设计并调试。
二.实验环境
微型计算机一台
DOS或WINDOWS操作系统,MASM开发套件。
三.实验原理
DEBUG是专门为汇编语言设计的调试工具软件,它通过单步、
设置断点等方式,为使用者提供了非常有效的调试手段。在DEBUG
下所有输入的数据都是十六进制,所以不需要后面加H。并且不区分大、小写字母。
1、直接启动DEBUG程序
如DEBUG.COM在C盘的根目录下,启动的方法是:
C:\>DEBUG
_
这时屏幕上会出现“_”提示符,等待键入DEBUG命令。
2、启动DEBUG程序的同时装入被调试文件
命令格式如下:
C:\>DEBUG [d:][PATH]filename[.EXT]
[d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件
的文件名,[.EXT]是被调试文件的扩展名。
3、DEBUG的主要命令 (1) 检查和修改寄存器内容的命令R,它有三种方式:
1)显示CPU内部所有寄存器内容和标志位状态,格式为:-R
R命令显示中标志位状态的含义如下表所示:
标 志 名 置 位 复 位
溢出Overflow(是/否) OV NV
方向Direction(减量/增量) DN UP
中断Interrupt(允许/屏蔽) EI DI
符号Sign(负/正) NG PL
零Zero(是/否) ZR NZ
辅助进位Auxiliary Carry(是/否) AC NA
奇偶Parity(偶/奇) PE PO
进位Carry(是/否) CY NC
2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名
例如输入:-R AX
系统将响应如下:
AX F1F4
:
表示AX当前内容为F1F4,此时若不对其作修改,可按
ENTER键,否则,输入修改后内容,如:
-R BX
BX 0369
:059F
则BX内容由0369改为059F
3)显示和修改标志位状态,命令格式为:-RF
系统将给出响应,如
OV DN EI NG ZR AC PE CY-
这时若不作修改可按ENTER键,否则在“-”号之后键入修
改值,键入顺序任意。如
OV DN EI NG ZR AC PE CY-PONZDINV
(2) 显示内存单元内容的命令D,格式为:-D[地址]或-D[范围] 例如输入:-d cs:1000,Debug将从CS:1000开始显示8
行×16个字节的内容;
例如输入:-d,Debug将从上次d命令结束处开始的8行
×16个字节的内容;
例如输入:-d cs:1000 l20,Debug将从CS:1000开始显示
20h个字节的内容;
例如输入:-d ds:1000 1005,Debug将显示范围从DS段
的1000h到1005h中所有字节的内容;
(3) 修改内存单元内容的命令E,它有两种格式:
1)用给定的内容代替指定范围的单元内容:
-E地址 内容表
例如:-E 2000:0100 F3 “XYZ” 8D
其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节
代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别
按它们的ASCII码值代入。
2)逐个单元相继地修改:
-E地址
例如:-E 1000
18E4:1000 89.78
此命令将DS:1000单元的内容89改为78(78是键入的修改
值)。
(4) 反汇编命令U,有两种格式:
1)-U[地址]
该命令从指定地址开始,反汇编32个字节;若地址省略,
则从上一个U命令的最后一条指令的下一个单元开始显示32
个字节。
2)-U范围
该命令对指定范围的内存单元进行反汇编,例如:
-U 04BA:0100 0108或 –U 04BA:0100 L9
两种命令是等效的。
(5) 追踪命令T,有两种格式:
1)逐条指令追踪:
-T[=地址]
该命令从指定地址起执行一条指令后停下来,显示寄存
器内容和状态值。
2)多条指令追踪:
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(6) 汇编命令A,格式为:
-A[地址]
该命令从指定地址开始允许输入汇编语句,把它们汇编成
机器代
码相继存放在从指定地址开始的存储器中。
(7) 运行命令G,格式为:
-G [=地址1][地址2[地址3…]]
其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
(8) 退出DEBUG命令Q,该命令格式为
Q
完成退出DEBUG程序,返回DOS。
四.实验内容:
1、下列程序段执行完后,BX寄存器的内容是什么?
MOV CL, 3
MOV BX, 0B7H
ROL BX,1
ROR BX, CL
2、下列程序段中的每条指令执行完后,AX寄存器及CF、SF、
ZF和OF的内容是什么?
MOV AX, 0
DEC AX
ADD AX, 7FFFH
ADD AX, 2
NOT AX
SUB AX, 0FFFFH
ADD AX, 8000H
SUB AX, 1
AND AX, 58D1H
SHL AX, 1
SAR AX, 1
NEG AX
ROR AX, 1
3、将10000H~1000FH这段空间设置为栈,其中将SP设置为
0010H且使栈空间为空。设置AX=001AH,BX=001BH。利用栈,交
换AX和BX中的数据。
4、在DEBUG环境下编写下列程序段:(选做)
(1)比较AX、BX、CX中带符号数的大小,将最大的数放在
AX中。试编写此程序段。 (2)已知存储器中有一个首地址为ARRAY的8个字的数组,
现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程
序段。
(3)将存储器中从DS:1000H单元开始的10个字节的数据累加
求和。
五.实验报告:
1、程序说明:按照实验内容要求回答问题,给出程序清单和执
行结果。
2、调试说明:包括上机调试的情况、上机调试步骤、调试所遇
到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结
果进行分析。
3、实验心得及建议。