当前位置:文档之家› 1DEBUG命令的功能及使用

1DEBUG命令的功能及使用

实验一DEBUG命令的功能及使用
一实验目的
掌握汇编语言基本运行环境和熟悉DEBUG调试程序的命令。

包括:学习使用指令,掌握常用的指令功能和简单程序设计;掌握DEBUG调试程序的命令,熟悉程序输入、存储器和CPU寄存器及标志位的检查方法,单步、断点、连续等运行程序的调试方法。

二实验内容
DEBUG的主要命令功能与格式
1.汇编命令A
格式:A [[<段寄存器名>/<段地址>:] <段内偏移>]
上式等价于:
(1)A <段寄存器名>:<段内偏移>
(2)A <段地址>:<段内偏移>
(3)A <段内偏移>
(4)A
功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。

注:其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。

以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。

2.显示内存命令D
格式:D [<地址>/<范围>]
上式等价于:
(1)D <地址>
(2)D <范围>
(3)D
功能:以两种形式显示指定范围的内存内容。

一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以‘.’代替。

注:其中(1)以CS为段寄存器。

(3)显示CS:100起始的一片内容。

3.修改内存命令E
格式:E <地址> [<单元内容表>]
上式等价于:
(1)E <地址>
(2)E <地址> <单元内容表>
其中<单元内容表>是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。

功能:(1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter 为止。

(2)将<单元内容表>逐一写入由<地址>开始的一片单元。

4.填充内存命令F
格式:F <范围> <单元内容表>
功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。

例如:-F 5BC:200 L 10 B2,‘XYZ’,3C <Enter>
5.执行命令G
格式:G [=<地址>[,<断点>]]
上式等价于:
(1)G
(2)G=<地址>
(3)G=<地址>,<断点>
功能: 执行内存中的指令序列
注:(1)从CS:IP所指处开始执行
(2)从指定地址开始执行
(3)从指定地址开始执行,到断点自动停止。

6.内存搬家命令M
格式:M <源地址范围> <目标起始地址>
其中源及目标地址若仅输入偏移量,则隐含相对DS。

功能:把<源地址范围>中的内容顺序搬至<目标起始地址>起的一片连续单元。

例如:-M CS:100 110 600
把从CS:100起至CS:110止17个字节搬至DS:600至DS:610的一片单元。

7.结束DEBUG返回DOS命令Q
格式:Q
功能:返回DOS提示符下
8.显示修改寄存器命令R
格式:R [<寄存器名>]
上式等价于:
(1)R
(2)R <寄存器名>
功能:(1)显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句形式。

其中对状态标志FLAG以每位的形式显示,见下表。

(2)显示指定寄存器内容
例如:-R AX <Enter>
-R F <Enter>
9.执行并显示系统环境命令T
格式:T [=<地址>] [<条数>]
功能:执行由指定地址起始的、由<条数>指定的若干条命令。

其中<地址>的缺省值是当前IP值,<条数>的缺省值是一条。

例如:-T <Enter> 执行当前指令并显示状态
-T 10 <Enter> 从当前指令始执行10H条指令
10.反汇编命令U
格式:U [<地址>/<地址范围>]
上式等价于:
(1)U <地址>
(2)U <地址范围>
(3)U
功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。

注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。

地址及范围的缺省值是上次U 指令后下一地址的值。

这样可以连续反汇编。

三实验例程及步骤
例1 在DEBUG下运行如下程序。

MOV DL,33H ;字符3的ASCII码送DL
MOV AH,2 ;使用DOS的2号功能调用
INT 21H ;进入功能调用,输出‘3’
INT 20H ;BIOS中断服务程序,正常结束。

该程序运行结果是在显示器上输出一个字符‘3’。

如果要输出其它字符,请改变程序中‘33H’为相应字符的ASCII码。

运行步骤:
(1)进入DEBUG,用A命令送程序并汇编,见图1.1。

(2)用反汇编U 命令显示程序,图1.2为反汇编命令显示结果。

图中右边是汇编指令,中间是该汇编指令的机器码,左边是存放该条指令的内存单元地址。

(3)用执行命令G 执行程序,图1.3为执行结果。

(4)用E 命令送机器指令程序并用D 命令显示内存,运行过程见图1.4。

图1.1 汇编程序过程
图1.2 反汇编命令U 的显示结果
图1.3 执行命令G 的显示结果
图1.4 送机器指令并显示内容结果
(5)再次用执行命令G执行程序,图1.5为执行结果。

图1.5 G命令执行结果
(6)Q命令退出DEBUG返回DOS。

例2 在DEBUG下运行下述程序,查看执行结果。

MOV AX,0FEH ;被乘数0FEH送AX
MOV CL,2
SHL AX,CL ;被乘数乘以4,结果送AX
MOV BX,AX ;被乘数乘以4的结果送BX保留
MOV CL,2
SHL AX,CL ;被乘数乘以16,结果送AX
ADD AX,BX ;被乘数乘以20,结果在AX中
MOV [300H],AX ;将积存入DS段第300H—301H号内存单元
MOV AH,4CH ;将功能号4CH送AH
INT 21H ;执行DOS的4CH号功能调用,结束程序返回DOS。

该程序运行结果是将0FEH乘以14H,结果放在DS段第300H-301H号内存单元中。

(1)进入DEBUG,显示300H至301H号内存单元内容,见图1.6。

(2)用A 命令装入程序段并汇编,见图1.7。

(3)用T 命令执行到断点处(程序正常结束前)停止,执行“-T=100,8 <Enter>”后的结果见图1.8。

(4)用D 命令显示300H 至301H 的内容(最终结果),如图1.9
所示。

图1.6 D 命令显示结果
图1.7 用A 汇编程序
图1.8 用T 命令执行到断点处的结果
图1.9 用D命令显示最终结果
(5)用Q命令退出DEBUG环境,返回DOS。

四预习要求
1.安装并熟悉ASM汇编语言编译环境。

2.预习DEBUG的相关命令。

3.复习教材指令系统章节内容,熟悉8086/8088指令系统。

五实验报告要求及思考
1.根据实验描述汇编语言的编译过程,并画出相关流程框图;书写对教材指令系统等相关的实验结果。

2. 总结Debug调试程序的方法。

3.思考题。

下面是一个2字节非压缩BCD码加的程序,试分析程序中被加数和加数以及和分别存放在哪些寄存器中,程序中CH有何作用。

阅读后再设计一个2字节非压缩BCD码减法程序。

然后分别计算56+98=?,90-15=?,并查看各寄存器的内容。

MOV CH,AH
ADD AL,BL
AAA
XCHG AL,CH
ADC AL,BH
AAA
MOV AH,AL
MOV AL,CH
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。

可复制、编制,期待你的好评与关注)。

相关主题