204 lines
3.7 KiB
Markdown
204 lines
3.7 KiB
Markdown
# 实验一:DEBUG基础
|
||
|
||
## 一、实验目的
|
||
|
||
1. 掌握DEBUG程序的加载方法
|
||
2. 熟悉DEBUG状态下各种常用命令的使用方法
|
||
|
||
## 二、实验内容
|
||
|
||
### 2.1 DEBUG的加载
|
||
|
||
DEBUG是为DOS提供的一种调试工具,它不能独立运行,需要在DOS环境下加载运行。
|
||
|
||
加载方法:在DOS命令提示符下键入:
|
||
|
||
```
|
||
C:\>DEBUG [程序文件名]
|
||
```
|
||
|
||
### 2.2 基础性实验
|
||
|
||
#### 实验1:DEBUG常用命令(D、E、F、R、G、A、T、U、N、L、W、Q)
|
||
|
||
**(1)显示内存命令D**
|
||
|
||
格式:`D [地址]` 或 `D [范围]`
|
||
|
||
功能:显示指定地址的内存内容
|
||
|
||
例如:
|
||
```
|
||
D 100 ;显示CS:100开始的内存内容
|
||
D 100 120 ;显示CS:100到CS:120范围的内容
|
||
```
|
||
|
||
**(2)修改内存命令E**
|
||
|
||
格式:`E 地址 [数据表]`
|
||
|
||
功能:修改指定地址的内存内容
|
||
|
||
例如:
|
||
```
|
||
E 100 ;逐个修改CS:100开始的内存内容
|
||
E 100 'ABCD' ;从CS:100开始写入字符串ABCD
|
||
```
|
||
|
||
**(3)填充内存命令F**
|
||
|
||
格式:`F 范围 数据表`
|
||
|
||
功能:将数据填充到指定范围的内存
|
||
|
||
例如:
|
||
```
|
||
F 100 110 0 ;将100-110区域填0
|
||
```
|
||
|
||
**(4)显示/修改寄存器命令R**
|
||
|
||
格式:`R [寄存器名]`
|
||
|
||
功能:显示或修改寄存器的内容
|
||
|
||
例如:
|
||
```
|
||
R ;显示所有寄存器内容
|
||
R AX ;显示并修改AX内容
|
||
```
|
||
|
||
**(5)执行程序命令G**
|
||
|
||
格式:`G [=起始地址] [断点地址]`
|
||
|
||
功能:运行程序,可设置断点
|
||
|
||
例如:
|
||
```
|
||
G=100 ;从CS:100开始执行
|
||
G=100 10A ;从100开始执行,在10A处设置断点
|
||
```
|
||
|
||
**(6)汇编命令A**
|
||
|
||
格式:`A [地址]`
|
||
|
||
功能:在指定地址开始汇编入指令
|
||
|
||
例如:
|
||
```
|
||
A 100 ;从CS:100开始输入汇编指令
|
||
```
|
||
|
||
**(7)跟踪命令T**
|
||
|
||
格式:`T [=地址] [条数]`
|
||
|
||
功能:单步执行指令
|
||
|
||
例如:
|
||
```
|
||
T ;执行一条指令
|
||
T=100 5 ;从100开始执行5条指令
|
||
```
|
||
|
||
**(8)反汇编命令U**
|
||
|
||
格式:`U [地址] 或 U [范围]`
|
||
|
||
功能:将机器码反汇编为汇编语言
|
||
|
||
例如:
|
||
```
|
||
U 100 ;从100开始反汇编
|
||
U 100 120 ;反汇编100-120范围
|
||
```
|
||
|
||
**(9)命名命令N**
|
||
|
||
格式:`N 文件名`
|
||
|
||
功能:给要操作的文件命名
|
||
|
||
例如:
|
||
```
|
||
N FILE.COM ;将FILE.COM作为要操作的文件名
|
||
```
|
||
|
||
**(10)装入内存命令L**
|
||
|
||
格式:`L [地址 [驱动器 扇区号 扇区数]]`
|
||
|
||
功能:将文件或扇区内容装入内存
|
||
|
||
例如:
|
||
```
|
||
L ;将已命名文件装入CS:100
|
||
L 100 1 10 5 ;将A盘5个扇区装入CS:100
|
||
```
|
||
|
||
**(11)写盘命令W**
|
||
|
||
格式:`W [地址 [驱动器 扇区号 扇区数]]`
|
||
|
||
功能:将内存内容写入磁盘
|
||
|
||
例如:
|
||
```
|
||
W ;将CS:100开始的内容写入文件
|
||
W 100 1 10 5 ;将CS:100内容写入A盘
|
||
```
|
||
|
||
**(12)退出DEBUG命令Q**
|
||
|
||
格式:`Q`
|
||
|
||
功能:退出DEBUG,返回DOS
|
||
|
||
例如:
|
||
```
|
||
Q ;退出DEBUG
|
||
```
|
||
|
||
### 2.3 加强性实验
|
||
|
||
#### 实验2:DEBUG命令综合练习
|
||
|
||
**【程序】**
|
||
|
||
利用DEBUG的A命令,在内存2000:0000处输入以下程序:
|
||
|
||
```
|
||
MOV AL, [0000]
|
||
MOV BL, [0001]
|
||
ADD AL, BL
|
||
MOV [0002], AL
|
||
INT 20
|
||
```
|
||
|
||
**【思考题】**
|
||
|
||
1. 在DEBUG中如何正确使用段寄存器作为地址前缀?
|
||
2. 如何使用D命令查看程序执行后的内存结果?
|
||
|
||
---
|
||
|
||
## 三、实验步骤
|
||
|
||
1. 在DOS环境下加载DEBUG程序
|
||
2. 使用R命令查看当前寄存器状态
|
||
3. 使用D命令查看内存内容
|
||
4. 使用E命令修改内存数据
|
||
5. 使用A命令输入汇编指令
|
||
6. 使用T命令单步执行程序
|
||
7. 使用G命令运行程序
|
||
8. 使用U命令查看反汇编结果
|
||
9. 使用Q命令退出DEBUG
|
||
|
||
## 四、实验报告要求
|
||
|
||
1. 记录DEBUG加载过程
|
||
2. 记录各命令的使用方法和执行结果
|
||
3. 回答思考题
|
||
4. 总结DEBUG命令的使用心得 |