DEBUG的使用及程序调试方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 DEBUG的使用及程序调试方法
一.实验目的
1、掌握常用DEBUG命令以及调试简单程序。
2、掌握常用汇编指令的功能及其书写格式。
3、掌握在DUBUG下进行简单程序设计并调试。
二.实验环境
微型计算机一台
DOS或WINDOWS操作系统,MASM开发套件。
三.实验原理
DEBUG是专门为汇编语言设计的调试工具软件,它通过单步、设置断点等方式,为使用者提供了非常有效的调试手段。在DEBUG 下所有输入的数据都是十六进制,所以不需要后面加H。并且不区分大、小写字母。
1、直接启动DEBUG程序
如在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中。试编写此程序段。