# 实验一: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命令的使用心得