DEBUG的使用及程序调试方法

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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中。试编写此程序段。

相关文档
最新文档