实验一-DEBUG的使用(1)

合集下载

工业用微型计算机实验一

工业用微型计算机实验一

实验一DEBUG命令的使用及汇编语言源程序的调试步骤1. DEBUG命令的使用一、实验目的1.练习简单的DOS命令(DIR, CD,MD ,CLS)2.学习使用DEBUG程序的常用命令。

(R,D,E, A,U,T, G,Q)3.了解8086内存地址空间分配二、预备知识1.DOS常用命令练习在Windows 98、Windows2000、Windows XP 中启动DOS,单击“开始”菜单中的“运行”命令,打开“运行”对话框,在文本框中输入“command”后,单击“确定”按钮。

进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter 键将窗口变换为全屏幕方式。

(1)要更换当前目录到硬盘的其它分区,应该输入盘符然后回车。

比如要到D盘,那么就输入D:。

(2)cd命令,改变缺省目录或显示当前目录。

(3)dir 命令,查看电脑中的文件。

其中凡后缀为exe 、com 或bat 的文件都是可以直接执行的。

这些以exe 为后缀的文件叫可执行文件;以com 为后缀的文件叫命令文件;以bat 为后缀的文件叫批处理文件。

如果我们要执行这些文件,只需在提示符下敲入文件基本名然后回车即可,不需输入文件后缀。

(4) del 命令,删除文件。

要删除当前目录中的某个文件,输入del 空格再加上文件名就可以了。

如:要删除当前目录中的a.asm 文件。

(5)copy 命令,复制文件。

复制就是原来的文件并没有任何改变,重新产生了一个内容和原来文件没有任何差别的文件。

copy 命令的格式: copy 源文件名 目的文件名 无论源文件还是目的文件○1 如果不指明驱动器名,即为当前驱动器; ○2 如果不指明目录,即为当前目录; ○3 如果不指明文件名,则为相同文件名。

回到根目录2.掌握DEBUG程序的常用命令。

DEBUG是DOS、Windows都提供的实模式(8086方式)程序的调试工具。

使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

实验一DEBUG的使用

实验一DEBUG的使用

实验一 DEBUG 的使用实验目的:1.学习使用.学习使用DEBUG DEBUG DEBUG程序的各种命令。

程序的各种命令。

程序的各种命令。

2.掌握.掌握8088/868088/868088/86指令系统指令系统指令系统---------算数指令。

算数指令。

算数指令。

3.掌握用.掌握用DEBUG DEBUG DEBUG调试自编程序的方法。

调试自编程序的方法。

调试自编程序的方法。

4.掌握.掌握8088/8086 CPU 8088/8086 CPU 寄存器的用途和存储器组织及它们之间的关系。

寄存器的用途和存储器组织及它们之间的关系。

寄存器的用途和存储器组织及它们之间的关系。

5.掌握内存操作数及寻址方法。

.掌握内存操作数及寻址方法。

6.掌握汇编语言伪操作.掌握汇编语言伪操作:BYTE PTR,WORD PTR :BYTE PTR,WORD PTR。

内容及步骤:一、一、DEBUG DEBUG 命令使用命令使用: :1、 敲 DEBUG 进入进入进入 DEBUG DEBUG 环境,显示提示符环境,显示提示符环境,显示提示符 '_ ' '_ '。

2、 用命令用命令 D100 10F D100 10F 观察内存中的观察内存中的161616进制码及屏幕右边的进制码及屏幕右边的进制码及屏幕右边的ASCII ASCII ASCII字符。

字符。

字符。

3、 用命令用命令 E100 30 31 32 E100 30 31 32 ………… 3F 3F 将30H 30H~~3FH 3FH写入地址为写入地址为写入地址为100H 100H 100H开始的内存单元中,开始的内存单元中,再用再用D D 命令观察结果,看键入的命令观察结果,看键入的161616进制数是什么字符的进制数是什么字符的进制数是什么字符的ASCII ASCII ASCII码码?4、 用命令用命令 F100 10F 'A' F100 10F 'A' 将'A''A'的的ASCII ASCII码填入内存,用码填入内存,用码填入内存,用D D 命令查看结果。

debug的使用实验报告

debug的使用实验报告

debug的使用实验报告
《Debug的使用实验报告》
在软件开发过程中,debug是一个非常重要的步骤,它可以帮助开发者找到并
修复代码中的错误。

在本次实验中,我们将探讨debug的使用方法以及其在软
件开发中的重要性。

首先,我们需要明确debug的定义。

Debug是一种通过检查、测试和纠正软件
中的错误来确保其正常运行的过程。

在实际应用中,debug通常涉及使用调试
器工具来逐步执行代码并观察其行为,以便找出问题所在。

在本次实验中,我们使用了一个简单的Java程序作为例子来演示debug的使用。

该程序包含了一些常见的错误,如语法错误、逻辑错误和运行时错误。

通过使
用调试器工具,我们逐步执行程序并观察其行为,以便找出并修复这些错误。

在实验过程中,我们发现debug的使用能够极大地提高代码的质量和稳定性。

通过逐步执行程序并观察其行为,我们可以更容易地找出并修复代码中的错误,从而减少了在后期测试阶段发现问题的可能性。

此外,debug还可以帮助我们
更好地理解程序的运行逻辑,从而提高了代码的可读性和可维护性。

总的来说,通过本次实验,我们深刻认识到了debug在软件开发中的重要性。

它不仅可以帮助我们找出并修复代码中的错误,还可以提高代码的质量和稳定性。

因此,在日常的软件开发过程中,我们应该充分利用debug工具,以确保
我们的程序能够正常运行并具有良好的性能。

实验一 利用 DEBUG 调试汇编语言程序段

实验一 利用 DEBUG 调试汇编语言程序段

实验名称实验一利用 DEBUG 调试汇编语言程序段一、实验目的1.熟悉 DEBUG 有关命令的使用方法;2.利用 DEBUG 掌握有关指令的功能;3.利用 DEBUG 运行简单的程序段。

二、实验要求1.仔细阅读有关 DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子;三、实验环境DOS 操作系统四、实验内容1.进入和退出 DEBUG 程序;1)开始—运行点确定进入DOS命令窗口图1进入DOS命令窗口2)在命令窗口中输入 dubug 进入 debug 程序图2进入 debug 程序3)进入 debug 窗口后,输入 q 命令退出 debug图3退出 debug2.学会 DEBUG 中的1)D 命令(显示内存数据 D 段地址:偏移地址)例 1:-D100 ;显示 DS 段, 0100 开始的 128 个字节内容-D ;默认段寄存器为 DS,当前偏移地址(刚进入 debug 程序偏移地址为 0100H)图4默认显示 DS 段内容-D DS:100 ;显示 DS 段, 0100H 开始的 128 个字节内容图5显示 DS 段内容-D CS:200 ;显示 CS 段, 0200H 开始的 128 个字节内容图6显示 CS 段内容-D 200:100 ;显示 DS 段, 0200:0100H 开始的 128 个字节内容图7显示 DS段0200:0100H内容-D 200 ;显示 DS 段, 0200H开始的128个字节内容图8显示 DS段0200H开始的内容-D 100 L 10 ;显示 DS 段, 100H 开始的 100H 个字节内容图9显示 DS段100H开始的100H字节内容2)E 命令(修改指定内存)例 1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:073F:0100 41 42 43 44 48 47 46 45-e 100 修改内存内容-d 100,L08 查看刚才修改的内存内容图10 修改和查看DS段100H开始的80H字节内容例 2: -E 100073F:0100 41. 42 : 42 是操作员键入此命令是将原 100 号内存内容 41 修改为 42,用 D 命令可察看。

实验一熟悉使用调试工具软件DEBUG

实验一熟悉使用调试工具软件DEBUG

实验一熟悉使用调试工具软件DEBUG引言调试是软件开发过程中不可或缺的一部分。

通过调试工具软件DEBUG,我们可以查找和修复程序中的错误、检查变量的值、跟踪代码的执行路径等等。

本实验旨在帮助学生熟悉DEBUG的基本功能和使用方法。

一、实验目标1.熟悉DEBUG软件的界面和基本功能;2.学会使用DEBUG软件进行程序的调试和跟踪;3.掌握DEBUG软件中的断点设置和单步执行等功能。

二、实验环境1. 操作系统:Windows 10;2.调试工具软件:DEBUG。

三、实验步骤[DEBUG软件界面截图](1)Registers窗口显示寄存器的内容,包括通用寄存器、段寄存器等;(2)Disassembly窗口显示汇编指令的内容;(3)Dump窗口显示内存中的内容;(1)r:显示寄存器的内容;(2)u:显示当前汇编指令的地址和指令;(3)d:显示内存中的内容。

通过执行这些指令,我们可以查看和了解程序的运行状态和内存存储的内容。

(1)g:运行程序;(2)t:执行一条指令,并显示执行结果;(3)p:执行一行汇编代码,并显示执行结果。

通过执行这些指令,我们可以跟踪程序的执行路径和变量的值。

6. 在Disassembly窗口中,双击一条汇编指令可以设置断点。

设置断点后,程序执行到断点处会自动停止。

在调试过程中,我们可以查看断点前后的变量值,检查程序是否按照预期执行。

(1)bp:查看断点列表;(2)bl:清除断点列表中的断点;(3)bd:删除一个断点。

通过执行这些指令,我们可以管理和控制断点,实现更精细的调试过程。

8. 在DEBUG软件界面中,点击工具栏上的“跟踪”按钮,可以选中“Trace over”、“Trace into”和“Animate”等选项。

这些选项分别表示在执行过程中是否显示详细过程、是否跳过函数调用、是否动画演示执行过程等。

通过选择不同的选项,我们可以根据需要自定义调试过程。

四、实验总结通过本次实验,我们了解了DEBUG软件的基本功能和使用方法。

汇编实验

汇编实验

实验一DEBUG 命令的使用【实验目的】1.学习使用DEBUG程序的各种命令。

2.掌握用DEBUG调试自编程序的方法,为以后实验打下基础。

【实验内容】1、请自学并完成如下内容:(1)DEBUG的使用方法(1)(2)DEBUG的使用方法(2)2、用DEBUG调试、运行可执行程序。

1)进入DEBUG后,首先用命令R查看当前DS和IP寄存器内容,记录此值。

2)学习R,D,A,U,T,P,G命令的使用。

3)用命令A汇编下列指令,并判断指令正误并说明原因。

(1)LEA DI,[AX](2)MOV DS,2010(3)PUSH AL(4)MOV [BX],03.用A命令汇编下列程序段,完成将DS:2000开始的5个字节内存内容相加,并把相加的结果存放在DS:2005内存单元中,将程序写到硬盘上,然后用DEBUG调试﹑运行该程序,查看运行结果,观察程序段能否完成指定功能,若不能,说明原因。

2000【预习要求】1、仔细阅读试验指导的“前言”、“试验环境与上机步骤”;2、自学“DEBUG使用简介”、“经典DEBUG”;2、计算下列表达式,并思考如何运行程序验证它们45H +70H =_____ ,OF =_____ ,CF =_____ ;F6H +2AH =_____ ,OF =_____ ,CF =_____ 。

【报告要求】1、每个实验内容的实验调式结果、试验分析以及试验问题回答,需有必要的屏幕截图。

2、回答思考题。

3、提交电子版试验报告。

4、雷同的实验报告将不分青红全部被判为0分。

【实验提示】1)DEBUG的进入⑴如果是首次进入DEBUG编程,则只要在DOS提示符下键入DEBUG ↙,即可进入DEBUG环境,显示提示符“-”。

⑵如果要对某个程序使用DEBUG进行调试,只要在DOS提示符下键入DEBUG 文件名↙,即可进入DEBUG环境,显示提示符“-”。

2)程序的汇编与反汇编⑴源程序可以在DEBUG下,用汇编命令A输入到内存中,只需在DEBUG提示符“-”下,键入汇编命令A ↙,并在显示“段寄存器地址:偏移地址”后面键入你自己编写的程序,每键入一条,按一次回车键。

实验一Debug命令的使用

实验一Debug命令的使用

实验一Debug命令的使用实验一Debug命令的使用一、实验说明1、 DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。

在汇编语言程序调试中很常用。

DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。

DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。

DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。

(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。

2、 Debug的调入和退出以Windows环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态,如:C:\Documents and Settings\mjy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。

退出Debug的命令:Q3、 Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。

若不指定地址,则系统从默认的地址开始存放。

按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。

(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。

若未指定寄存器,则默认为显示所有寄存器的内容。

应用:常用于通过寄存器的值查看指令的执行结果。

(3)内存单元内容的命令E,格式为:- E 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。

debug+的使用

debug+的使用
格式: D [<地址>/<范围>] (1) D <地址> (2) D <范围> (3) D 功能:以两种形式显示指定范围的内存内容。一种形式为十六 进制内容,一种形式为以相应字节的内容作为ASCII码的字符, 对不可见字符以‘.’代替。
如果想知道内存10000H处的内容,可以用"d 段地址:偏移 地址"的格式来查看,如输入 -d 1000:0 使用 d 1000:9查看1000:9处的内容。 使用 d 1000:0 9查看1000:0-1000:9的内容 一进入Debug,可直接使用D命令直接查看,将列出Debug预设 的地址处开始128个字节单元的内容
汇汇编编语语言言程程序序设设计计实验
四、Debug常用命令
? 显示 Debug 命令列表。
T 执行一条指令,然后显示
R 显示或改变一个或多个寄 所有寄存器的内容
存器的内容
P 执行循环、重复的字符串
D 显示查看内存中的内容。 指令、软件中断或子例程。
E 从指定地址开始,将数据输 不跟踪内部。
入到内存,即改写内存的内容。
汇汇编编语语言言程程序序设设计计实验
3、E命令
格式: E <地址> [<单元内容表>] (1) E <地址>
功能: 不断显示地址,可连续键入修改内容,直至新地址出现后 键入回车Enter为止。 (2) E <地址> <单元内容表> 其中<单元内容表>是以空格分隔的十六进制数,或用’或” 括起来的字符串,或者是二者的组合。
功能:将<单元内容表>逐一写入由<地址>开始的一片单元。 如将内存1000:0-1000:9单元中的内容分别写为0、1、2、3、

实验一 DEBUG的使用

实验一 DEBUG的使用
三.对以下源程序进行调试,记录下每一条指令的目标代码,相应寄存器变化情况和程序的最终执行结果。
源程序:MOV AL,30H
MOV BL,26H
ADD AL,BL
PUSH AX
POP DX
MOV AH,02H
INT常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
0AF4:0108 int 21
0AF4:010Amov dl,43
0AF4:010Cint 21
0AF4:010E int 20
0AF4:0110
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF4 ES=0AF4 SS=0AF4 CS=0AF4 IP=0100 NV UP EI PL NZ NA PO NC
:0206 CD20 INT 20H ;结束
步骤:a.用E命令将目标代码写入内存CS:0200H~0207H
—E DS:200 B2,33,B4,02,CD,21,CD,20
b.用G命令从200H开始执行。
—G=CS:200
屏幕显示:
3
Program terminated normally.

c.用U命令反汇编
(2)用键盘,将AX,BX,CX,DX及DS,ES清0。
2.简单程序的执行:
(1)用E命令输入一段程序并执行,其源程序,目标代码及地址分配如下:
CS:0200 B233 MOV DL,33H ;将十六进制数‘33’存入DL中
:0202 B402 MOV AH,02H ;DOS2号功能调用
:0204 CD21 INT 21H ;屏幕显示DL内容

DEBUG的基本命令使用

DEBUG的基本命令使用

实验一 DEBUG的基本命令使用实验名称:利用DEBUG验证寻址方式实验目的:掌握DEBUG的常用指令(R,D,E,A,U,T 指令)的使用方法,理解不同寻址方式的特点实验内容:在DEBUG中利用A命令输入以下汇编指令,并用U命令显示,利用T 命令单步跟踪指令的执行过程,利用R或者D命令观察相关寄存器或者内存单元内容的变化(相关过程和结果要体现在实验报告上)。

(1)立即寻址MOV AX,1MOV BL,02HMOV BH,34H-a13AE:0100 mov ax,113AE:0103 mov bl,0213AE:0105 mov bh,3413AE:0107-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0100 NV UP EI PL NZ NA PO NC13AE:0100 B80100 MOV AX,0001-tAX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0103 NV UP EI PL NZ NA PO NC13AE:0103 B302 MOV BL,02-tAX=0001 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0105 NV UP EI PL NZ NA PO NC13AE:0105 B734 MOV BH,34-tAX=0001 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0107 NV UP EI PL NZ NA PO NC13AE:0107 0000 ADD [BX+SI],AL DS:3402=00(2)寄存器寻址在验证完(1)后,执行mov ax,bx-a13AE:0107 mov ax,bx13AE:0109-tAX=3402 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0109 NV UP EI PL NZ NA PO NC13AE:0109 0000 ADD [BX+SI],AL DS:3402=00 -rAX=3402 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0109 NV UP EI PL NZ NA PO NC13AE:0109 0000 ADD [BX+SI],AL DS:3402=00(3)直接寻址用e命令向DS:1000处写入1234H,用D命令DS:1000处内容,然后执行mov AX,[1000H]-e 13a8:1000 34 12-d 13a8:1000 100113A8:1000 34 12 4.-a13AE:0109 mov ax,[1000]13AE:010C-tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010C NV UP EI PL NZ NA PO NC13AE:010C 0000 ADD [BX+SI],AL DS:3402=00 -rAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010C NV UP EI PL NZ NA PO NC13AE:010C 0000 ADD [BX+SI],AL DS:3402=00(4)寄存器间接寻址用E命令向DS:1000处改写5678H,用D命令观察DS:1000处内容,然后执行-e13a8:1000 78 56-d 13a8:1000 100113A8:1000 78 56 xV-a13AE:010C mov si,100013AE:010F mov ax,[si]13AE:0111-tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010F NV UP EI PL NZ NA PO NC13AE:010F 8B04 MOV AX,[SI] DS:1000=0000 -tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0111 NV UP EI PL NZ NA PO NC13AE:0111 0000 ADD [BX+SI],AL DS:4402=00 -rAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0111 NV UP EI PL NZ NA PO NC13AE:0111 0000 ADD [BX+SI],AL DS:4402=00(5)变址寻址执行Mov BX,1000hMov AX,[BX+1]观察指令执行后AX,BX内容,以及[BX+1]内存单元处数据-a13AE:0111 mov bx,100013AE:0114 mov ax,[bx+1]13AE:0117-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0114 NV UP EI PL NZ NA PO NC13AE:0114 8B4701 MOV AX,[BX+01] DS:1001=0000 -tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0117 NV UP EI PL NZ NA PO NC13AE:0117 0000 ADD [BX+SI],AL DS:2000=00 -rAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0117 NV UP EI PL NZ NA PO NC13AE:0117 0000 ADD [BX+SI],AL DS:2000=00 -d 1001 100213AE:1000 00 00 ..(6)变址加基址寻址用E命令向DS:1000~1004处写入0AB90H,03412H,然后执行Mov BX,1000hMov SI,1Mov AX,[BX+SI]Mov CX,[BX+SI+1]-e 1000 12-e 1001 34-e 1002 90-e 1003 ab-a13AE:0117 mov bx,100013AE:011A mov si,113AE:011D mov ax,[bx+si]13AE:011F mov cx,[bx+si+1]13AE:0122-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011A NV UP EI PL NZ NA PO NC13AE:011A BE0100 MOV SI,0001-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011D NV UP EI PL NZ NA PO NC13AE:011D 8B00 MOV AX,[BX+SI] DS:1001=9034 -tAX=9034 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011F NV UP EI PL NZ NA PO NC13AE:011F 8B4801 MOV CX,[BX+SI+01] DS:1002=AB90 -rAX=9034 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011F NV UP EI PL NZ NA PO NC13AE:011F 8B4801 MOV CX,[BX+SI+01] DS:1002=AB90。

试验一调试工具DEBUG的使用

试验一调试工具DEBUG的使用
回答:
5)SP的中文名称?________,当前SP=______,为何变小?
____________________________
〈操作〉-t
6)刚执行的指令是:______________
〈操作〉-t
7)刚执行的指令是:______________
相关单元____变为______.
〈操作〉-t
code ends
end start
7、单步运行程序,分别记录运行上述程序中粗体部分时所对应的目标操作数中的内容。
【思考题】
1、上述一(1)程序中所完成1+2+3+…+100的功能,ax中保存最后计算结果,如果cmp bx,100,改成cmp bx, 400,AX中是否为1+2+3+…+400的结果,为什么?如果需要完成这种功能,应该怎样处理?
2)程序的入口地址=?_________________
(2)用断点命令观察执行结果
-g 10
回答:
3)AX=________ BX=________
对这2个寄存器的用途解释一下:______________________
(3)单步执行
用-q先退出DEBUG,重新进入DEBUG,debugex1.exe
〈操作〉-u 0 10
〈操作〉-r
〈操作〉-t
回答:
4)DS=______的两个字节,存放在堆栈段的哪两个地方(字节地址)?__________________
说明:用d ss:偏移量可观察到堆栈段的数据,以此验证。
〈操作〉-t
说明:此时执行了mov ax,0指令。
〈操作〉-t
说明:此时执行了PUSH AX指令。

debug命令的使用

debug命令的使用

实验 DEBUG命令的应用一实验要求熟悉DEBUG的应用,利用DEBUG观察寄存器的值,掌握直接汇编指令,单步调试,编辑数据等指令,为学习指令系统打好基础。

二实验步骤DEBUG程序是DOS操作系统为汇编语言程序设计者和系统管理员提供的一个通用调试工具,使用DEBUG可以直接深入到计算机系统内部,读写CPU各寄存器或存储器单元内容,并可以直接访问接口和外设的寄存器。

DEBUG的功能可分为下面几类:(1)读写、比较和显示存储器单元内容;(2)在存储器之间,存储器与磁盘之间传送数据和程序;(3)在指定存储单元中添充数据或字符串,在指定范围内查找数据或字符串;(4)设置程序起始执行地址或断点,执行程序或分段执行程序;(5)跟踪程序执行,显示处理器状态;(6)汇编或反汇编源程序;DEBUG只使用十六进制表示数据(十六进制数后不能加H),但所有数据在内存中均以二进制形式存放和运算。

DEBUG只有几十条单字母命令,功能强且易掌握,下面介绍DEBUG命令的使用方法。

(说明:下面的”< >”表示命令的一项参数,“[ ]”表示该选项为可选项。

)1、DEBUG 的进入和退出:(1)进入DEBUG的两种方法:方法一:在DOS提示符下直接键入:C> DEBUG↙(回车符)DEBUG即被调入内存并启动运行,显示DEBUG的提示符“—”。

方法二:在DOS提示符下,键入:C> DEBUG 文件名(回车符)DEBUG即被调入内存并启动运行,然后将指定的文件调入内存,并显示DEBUG 提示符“—”。

由于DEBUG可以将任一文件调入内存,所以“文件名”必须写全称,若有扩展名一定要输入扩展名。

(2)退出DEBUG时,键入命令:—Q↙就可从DEBUG状态返回DOS。

2、汇编与反汇编命令:汇编命令A和反汇编命令U是DEBUG下常使用的命令。

(1)汇编命令A格式:A [<起始地址>]功能:逐行汇编程序,主要用于小段汇编程序。

《汇编语言》课程实验指导书

《汇编语言》课程实验指导书

《汇编语言》课程实验指导书《汇编语言》课程实验指导书扬州大学信息学院计算机科学与工程系 2007年5月实验一 DEBUG的使用(一)目的及要求进一步熟悉常用的单、双操作数指令和各种寻址方式的功能及使用格式,初步掌握调试程序DEBUG程序的基本使用方法,为以后的实验打下基础。

(二)实验内容1、用 DEBUG的基本命令,单步执行y=(x-1)2+30的程序,检查每条指令执行后目的地址及有关寄存器的内容。

2、用DEBUG的A命令,键入如下程序段: MOV BX,8275HMOV AX,3412H ;双精度数34128275H——AX、BX ADD BX,92A5HADC AX,2F65H ;加上双精度数2F6592A5H ADD BX,0EAE6HADC AX,9C88H ;加上双精度数9C88EAE6H然后用T命令单步执行,查看每条指令执行后有关寄存器的内容及标志位的变化。

注意:①用A命令时键入的数均为十六进制,故其后的“H”不要键入.②用T命令不适合执行“INT”指令。

3、学会使用DEBUG中的命令:D、G、E、R、T、A、U,为后面调试运行汇编源程序打下基础。

实验二分支、循环程序设计(一)目的及要求1、进一步理解条件转移指令的格式及功能,以便在分支程序中选用合适的指令。

2、提高设计及调试分支程序的能力。

3、掌握循环程序的结构及循环控制方法,提高循环程序的设计能力。

(二)实验内容1、用 DEBUG的基本命令,执行P120例5-2程序。

2、根据以下各题的要求写出其源程序井上机调试运行,显示(或打印)出运行结果。

①从键盘输入一字符串存放在IN-BUF 缓冲区中,然后在下一行以相反顺序显示出来。

②以附录1的格式显示(或打印)出 ASCll码表。

对于无法显示出的格式符或功能符,如空白0、响铃7、换行OAH、回车ODH、空格4DH等均用空格代替。

实验三子程序设计(一)目的及要求1、熟练掌握子程序的设计方法与调用方式,并能正确地书写子程序说明。

实验一--掌握DEBUG-的基本命令及其功能

实验一--掌握DEBUG-的基本命令及其功能

实验一--掌握DEBUG-的基本命令及其功能实验一掌握DEBUG 基本命令及其功能【上篇】查看CPU和内存,用机器指令和汇编指令编程一.实验目的:掌握DEBUG 的基本命令及其功能掌握win7 win8 使用DEBUG功能二.实验内容:1. 预备知识:Debug的使用(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。

使用它,可以查看CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。

(3) 进入DebugDebug是在DOS方式下使用的程序。

我们在进入Debug前,应先进入到DOS方式。

用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。

②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。

三.实验任务解决方案1. 从网上下载Dosbox和debug.exe(文件夹中有)。

2. d ebug.exe放在D:根目录,然后安装,安装完成以后,点击快捷方式进入Dos界面:3.输入mount c d:\ 接着输入c:01 d8 add ax,bx89 c3 mov bx,ax01 d8 add ax,bxb8 1a 00 mov ax,001AH bb 26 00 mov bx,0026H 00 d8 add al,bl00 dc add ah,bl00 c7 add bh,alb4 00 mov ah,000 d8 add al,bl04 9c add al,9CH提示:可用E命令和A命令以两种方式将指令写入内存。

实验一 DEBUG的启动及其基本命令的使用

实验一 DEBUG的启动及其基本命令的使用

实验一 DEBUG的启动及其基本命令的使用一、实验学时1学时。

二、实验目的掌握DEBUG 的基本命令及其功能。

三、实验设备计算机。

四、实验内容DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

1、DEBUG程序的启动在DOS提示符下,可键入命令:C>DEBUG[d:][path][文件名][ 参数1][参数2]其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG 命令。

在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。

用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。

如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。

2、DEBUG的主要命令(1)汇编命令A,格式为:-A[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。

(2)反汇编命令U,有两种格式:1)-U[地址]该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。

2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108或–U 04BA:0100 L9此二命令是等效的。

(3)运行命令G,格式为:-G [=地址1][地址2[地址3。

]]其中地址1规定了运行起始地址,后面的若干地址均为断点地址。

(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址]该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

2)多条指令追踪:-T[=地址][值]该命令从指定地址起执行n条命令后停下来,n由[值]确定。

debug 命令使用祥解

debug 命令使用祥解

debug 命令使用祥解前段时间我在学习汇编语言,发现这语言不是太难学,他里面的算法思想和高级语言都是一样的,我在学这个之前学过c++ ,所以我才这样说的,学习一门语言固然重要,但是学会使用你所用的平台去调试也很重要,下面这个实验是我们现在正在上的接口原理实验,debug命令使用都是我们教员自己总结的,感觉很好,所以就发过来供大家分享。

实验1 DEBUG调试命令练习一、实验目的1、熟悉DEBUG调试程序的常用命令;2、掌握利用DEBUG命令查看和修改CPU中寄存器及内存单元内容的方法;3、学会汇编、反汇编、运行和调试简单程序段的方法。

二、实验内容和步骤1、Debug程序的启动方法1:键入debug后回车只是装入Debug程序,并没指定要调试程序;方法2:相继装入Debug程序和要调试的程序格式:[路径] debug filename屏幕上出现提示符“-”注意:filename必须是可执行文件,要带扩展名exe2、Debug程序的退出在提示符“-”后输入“Q”回车即可。

3、D命令功能:显示数据段中指定单元或单元块的内容。

【例1】D1000↙结果显示128(80H)个字节的内容,一行16个字节,共8行。

其中每一行的第一列是数据段段寄存器DS的当前值,第二列是每一行的第一个字节在段中的偏移量,中间是16个单元的内容(十六进制),单元地址依次加1。

最右边是该单元内容(十六进制形式的ASCII码)所对应的字符。

【例2】D DS:1000↙结果显示和上例相同,因此在没有定义具体的数据段时,可以省略DS。

【例3】D 1234:1000↙结果显示数据段中以1234H为段地址、偏移量从1000H开始的128个单元的内容。

该例定义了显示范围,显示结果的段地址不一定是段寄存器DS中的当前内容,而是一个指定的段地址。

【例4】D 1234:1000 100F↙结果显示数据段中以1234H为段地址、偏移量从1000H开始到100FH结束的16个单元的内容。

实验报告一:DEBUG命令的使用

实验报告一:DEBUG命令的使用

DEBUG命令的使用
一、实验目的
1.练习简单的DOS命令(DIR, CD,MD ,CLS)
2.学习使用DEBUG程序的常用命令。

(R,D,E, A,U,T, G,Q)
3.了解8086内存地址空间分配
二、实验任务
1.用DIR命令查看当前工作目录的文件。

2.用命令 CD进入下一级子目录,用命令 MD建立子目录。

3.用命令 CLS清屏。

4.用R命令查看8086/8088 CPU在开机后执行的第一条指令。

(8086/8088 CPU在开机后
执行的第一条指令在内存FFFF:0H开始处。


实验步骤:
5.用命令D查看DS:200~22F和F000:200~22F两内存块内容,用命令F将字符“A”
分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM 的区别。

实验步骤及实验现象:
6.PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某个单元中,
请找到这个生产日期并试图改变它。

实验步骤:
三、实验报告
1.记录CPU在开机后执行的第一条指令。

2.说明可读写内存RAM和只读内存ROM的区别。

3.记录任务4、5、6的产生的现象,说明原因。

4.针对实验目的认真做小结。

调试工具debug的使用及基本指令的用法

调试工具debug的使用及基本指令的用法

调试工具debug的使用及基本指令的用法
3、观察及修改CPU内部的各寄存器
-r ax AX 0000 :1234 将AX的内容改为1234H -rf NV UP DI PL NZ NA PO NC -ov dn 将标志寄存器的OF置为OV;DF置为DN。
4、观察和修改内存单元的内容
-d 2000
-a 103 修改103处的指令 10DD:0103 mov [2000],ax 10DD:0106 -
调试工具debug的使用及基本指令的用法
6、单步执行程序
-t=100 执行CS:100H处的一条指令,自动显示各寄存器内容及下一条指令。 AX=1234 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000 DS=10DD ES=10DD SS=10DD CS=10DD IP=0103 OV DN DI PL NZ NA PO NC 10DD:0103 A30020 MOV [2000],AX DS:2000=0201 -t 继续执行下一条指令

标志寄存器各标志位的含义:
溢出标志OF: OV/NV(溢出/不溢出) 方向标志DF: DN/UP(减/增) 中断标志IF: EI/DI(开中断/关中断) 符号标志SF:NG/PL(负/正) 零标志ZF: ZR/NZ(零/非零) 辅助进位AF:AC/NA(有/无) 奇偶标志PF:PE/PO(偶/奇) 进位标志CF:CY/NC(有/无)
调试工具debug的使用及基本指令的用法
4、观察和修改内存单元的内容
-e 2000 修改从地址DS:2000H开始内存单元的内容 10DD:2000 00.01 00.02 ↑ 键入的内容,中间按空格键

实验一利用Debug_命令调试小汇编程序

实验一利用Debug_命令调试小汇编程序

实验一:利用Debug 命令调试小汇编程序一。

实验目的:1。

学习使用debug 程序调试小汇编程序2。

熟悉各种Debug 命令的使用。

二。

实验器材:PC 机, DEBUG程序 DOS系统三。

实验原理(DEBUG程序的使用命令)(一)DEBUG程序的调用与命令格式1.调用在DOS提示符下,键入命令:C>DEBUG [d:][path][filename[.exe]]例:E:MASM>DEBUG或 E:MASM>DEBUG AA.EXEDEBUG下的提示符”-”2.命令格式:命令 [参数]•命令DEBUG的所有命令动词均由一个字母(大小写均可)构成!DEBUG下的所有数字均为十六进制数!•参数地址表示方法:段地址:偏移量[addresss] 段寄存器:偏移量如:1419:000或:DS:0000地址范围表示方法:段地址:始偏移量末偏移量[rang] 或:段地址:起始偏移量 L长度(字节数) 如: 1419:100 1FF或: 1419:100 L100(二).DEBUG的主要命令1.显示存储单元命令D(Dump)D[address]或[rang]例如:-D1417:00或:-DDS:00 1F-DDS:00 L202.修改存储单元命令E(Erase)或F(Fill)•E address [list]LIST可以是字节串或字符串(单引号括起)例如:-E13F7:00 41 42 ‘xyz’ 43或-EDS:00 41 42 ‘xyz’ 43也可以用逐个单元相继修改的方法:-E address 如:-E13F7不需要修改单元内容直接在“.”后面直接按空格键表示本单元修改结束;进入下一个内存单元不需要修改单元内容直接在“.”后面输入新的值后,按空格键表示本单元修改结束;进入下一个内存单元按回车键表示整个命令结束•填充命令-F rang list如: -f 13f7:00 1F 41 ‘BCD’ 88-f13f7:00 1f 003.检查和修改寄存器内容命令R (Register ) 有三种格式•显示所有寄存器内容 -R•显示和修改某个寄存器内容NV UP DI PL NZ NA PO NCOV DN EI NG ZR AC PE CY OF 溢出(是/否)DF 方向(减量/增量)IF 中断(允许/关闭)SF 符号(负/正)ZF 零(是/否)AF 辅助进位(是/否)PF 奇偶(偶/奇)CF 进位(是否)标志为标志为标志名-R register name如:-RAX-RBX不需要修改寄存器内容直接在“:”后面按回车结束;需要修改标志在“:”后面输入新的内容,按回车结束;•显示和修改标志位状态-RF不需要修改标志直接在“-”后面按回车结束;需要修改标志在“-”后面输入新的标志,按回车结束4.汇编命令A(Assemble)-A[address]如:-A100在当前地址后面直接输入小汇编指令(标准汇编指令,不能输入宏汇编指令)5.反汇编命令U(Unassemble),有两种格式•从指定地址开始,反汇编32字节-U[address]如:-U1006.运行命令G(Go)-G[=address1] [address2 [address3…]}从指定地址1开始运行,后面为断点地址。

实验一调试程序DEBUG的使用实验报告

实验一调试程序DEBUG的使用实验报告

南昌理工学院实验报告二O一二年月日课程名称:微机原理与接口技术实验名称:调试程序DEBUG的使用班级:姓名:同组人:指导教师评定:签名:【一、实验名称】调试程序DEBUG的使用【二、实验目的】1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG调试程序的方法。

【三、实验内容和原理】1.用编辑软件,输入以下汇编语言源程序:DATSEGMENTADB20;(自定)BDB15;(自定)YDB3DUP(0)ZDB0,0DATENDS STASEGMENTSTACKDW50DUP() STAENDS CODSEGMENT ASSUMECS:COD,DS:DAT STARPROCFAR PUSHDS XORAX,AX PUSHAX MOVAX,DAT MOVDS,AX MOVAX,STA MOVSS,AX MOVAL,AMOVZ,AL MOVZ+1,ALCALLSUB1 MOVAL,BMOVZ,ALMOVZ+1,AL CALLSUB1 MOVAL,AMOVZ,ALMOVAL,BMOVZ+1,AL CALLSUB1 ADDWORDPTRY,AX ADCBYTEPTR[Y+2],0 RETSTARENDPSUB1PROC MOVAL,Z MOVAH,Z+1MULAH ADDWORDPTRY,AX ADCBYTEPTR[Y+2],0 RETSUB1ENDP CODENDS ENDSTAR2.通过编译,连接形成可执行文件;3.用DEBUG将可执行文件调入,并进行调试;(1)用D命令观察数据区在内存中的具体内容,记录单元A 和B的具体地址;(2)用U命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始位置,并记录这个起始地址;(3)用T命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致.得出程序运行的结果:它们是写在什么单元,具体内容是什么,并判断结果是否正确;(4)在子程序SUB1的入口处设一断点,用G命令执行程序,在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致;(5)用E命令修改单元A,B的内容,重新执行程序,并记录结果;(6)用M命令和A命令对程序进行修改:将主程序中最后两条指令(ADD和ADC)修改为一条CALLSUB1指令,重新执行程序;(7)退出DEBUG;4.重新使用编辑软件,把源程序最后一句中的STAR去掉.再次生成可执行文件,并用DEBUG调入内存.当使用U命令时,显示的结果与前一次(未加STAR)的结果有何不同【四、实验条件】微型计算机一台,软件MASM【五、实验过程】根据实验内容,按步骤完成。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一DEBUG的使用一、实验目的熟练掌握DEBUG的常用命令以及使用DEBUG调试程序的一般方法。

二、实验内容1.熟悉DEBUG的常用命令通过CMD命令进入DOS方式,运行DEBUG程序,练习DEBUG常用命令(DEBUG 常用命令详细说明见五和六)。

2.使用DEBUG调试程序(1)用CMD命令进入DOS方式。

(2)运行DEBUG程序。

(3)使用A命令将以下笑脸程序逐行输入。

MOV DL,1MOV AH,2INT 21HINT 20H(4)使用T命令逐条指令运行笑脸程序,观察每条指令执行前后相关寄存器的内容变化情况。

(5)使用G命令连续运行笑脸程序,观察程序运行结果。

(6)使用R命令修改寄存器BX和CX的内容为笑脸程序的长度。

(7)使用N命令将笑脸程序命名为。

(8)使用W命令将笑脸程序写到指定磁盘的指定路径目录中。

(9)退出DEBUG,进入笑脸程序所在目录。

(10)运行笑脸程序。

观察程序运行结果。

(11)用DEBUG调试已生成的程序。

三、实验要求认真完成实验每一步骤,详细记录实验过程、现象和结果,及时整理实验报告。

四、实验作业1.用A命令或E命令将笑脸程序中第1条指令中的立即数修改为46,重复步骤(4)~(10),观察程序运行结果,分析为什么?如果要将笑脸程序修改为显示别的字符程序,如何修改程序?2.如果想无限循环显示笑脸,如何修改程序?3.写出实验体会。

五、DEBUG简介DEBUG是一种面向汇编语言的动态调试工具,共有19条命令。

DEBUG提供了可以跟踪、测试程序的环境和条件,使编程者能对. EXE和.COM文件的执行进行动态跟踪调试,能够较快地查找出文件中的逻辑错误和检查程序的运行结果。

此外,也可以在进入DEBUG后直接用小汇编语言(ASM)编写、调试一些小程序。

Microsoft DEBUG命令的具有以下共性:(1)DEBUG提示符为“-”。

(2)任何命令都以一个英文字母开头,后面跟一个或多个参数。

(3)命令字母和参数可用大写、小写或混合形式。

(4)命令字母和参数中相邻两个十六进制数之间必须用逗号或空格分开,其它各部分之间有无空格或逗号都可以。

(5)执行任何命令期间都可用Ctrl+Break或Ctrl+C结束命令的执行。

(6)键入命令字母和参数后必须按回车键才能使命令有效。

(7)在执行某命令期间,可按Ctrl + NumLock键暂停显示以便观察。

再按任何其它键,则继续显示。

(8)DEBUG检查输入命令的语法错误,即如果输入的命令有错误,将显示错误信息。

(9)在DEBUG程序状态下,控制键和DOS支持的编辑键继续有效。

(10)DEBUG的启动方式有两种:1)在DOS提示符下键入:DEBUG ADD.EXE (“”表示回车键,下同)将出现DEBUG状态的提示符“-”,系统这时已处于DEBUG程序的管理下,并把指定的可执行文件ADD.EXE调入内存。

此时,用户可在提示符“-”后输入DEBUG 命令对ADD. EXE 文件进行调试了。

2)在DOS 提示符下键入: DEBUG该方式没有指定被调试文件名,这种方式可以对目前在内存中的内容进行调试;若需装入调试文件,则可在DEBUG 环境下用Name 和Load 命令调入需要调试的文件: -NADD.EXE-L在装入要调试的文件后,就可以使用DEBUG 命令对文件进行调试了。

六、 Microsoft DEBUG 常用命令及使用说明1.DEBUG 常用命令 (1) 内存单元访问命令内存单元一般存放数据的形式在屏幕如表1.1所示。

Debug 中内存单元访问命令一般包括:显示内存单元内容命令(D),向内存单元输入数据命令(E)和在指定内存区域填充数据命令(F)。

表1.1 存储器内容显示形式地址十六进制数据ASCII 码字符127E:0200 0A C0 74 09 56 57 E8 84-21 5F 5E 73 0A B904 01 ..t.VW..!_^s....127E:0210 FC 56 57 F3 A4 5F 5E C3-50 56 33 C9 33 DBAC E8 .VW.._^.PV3.3...127E:0220 C3 23 74 19 3C 0D 74 15-F6 C7 20 75 06 3A06 14 .#t.<.t... u.:..127E:0230 D4 74 0A 41 3C 22 75 E6-80 F7 20 EB E1 5E58 C3.t.A<"u... ..^X.1)D 命令格式:D[<地址范围>]功能:显示地址范围内的内存数据,包括十六进制数及其对应ASCII 码。

例1-1:输入如下命令:-D 100 130 显示结果如下:0F2A:0100 12 08 2F 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ../………….0F2A:0110 B8 3A 0F 8E D8 BB 00 00-8A 07 43 02 07 43 02 07 8:..X;...C..C..0F2A:0120 A2 03 00 B4 4C CD 21 00-00 00 00 00 00 00 00 00 "..4LM!……..0F2A:0130 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 …………….其中0100至0130是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。

这里没有指定段地址,D命令自动显示DS段的内容。

如果只指定首地址,则显示从首地址开始的80个字节的内容。

如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。

2)输入数据命令(E)格式:E<地址>[<字符串>]功能:逐个修改指定单元内容、或用字符串替代指定连续单元内容。

说明:字符串可以是以单引号括起来的字母、数字或一系列用空格分开的十六进制字节。

输入数据命令E有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。

例1-2:修改内存单元从112开始的内容为“END OF PROGRAM”。

-E 112 ‘END OF PROGRAM’第二种格式则是采用逐个单元相继修改的方法。

命令格式为:-E address例如,-E DS:100则可能显示为:18E4:0100 89.-如果需要把该单元的内容修改为78,则用户可以直接键入78,再按"空格"键可接着显示下一个单元的内容,如下:18E4:0100 89.78 1B.-这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。

例1-3:逐个单元向彩显缓冲区输入数据,彩显缓冲区内存段地址为B800H,其结果立即在屏幕上显示出来。

下面的命令在屏幕上显示3个白底黑字闪烁的大写A。

-E b800:70B800:0070 30.41 07.f0 30.41 07.f0 30.41 07.f0B800:0078 20.注意:点前为原来的内容,点后为键入数据,41是A的ASCII码,f0表示显示属性(白底黑字闪烁)。

每输入一个字节按空格键到下一内存单元。

3)填充数据命令(F)格式:F[<寄存器>]功能:逐个填充指定单元内容、或用字符串替代指定连续单元内容。

例如:-F 02FA:0100 5 F3'XYZ'8D使02FA:0100~0104单元包含指定的五个字节的内容。

如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。

(2)访问寄存器命令R格式:R[<寄存器>]功能:显示或修改寄存器内容。

说明:当R命令后不带参数时,显示各寄存器的内容,否则修改指定寄存器的内容。

在显示寄存器的内容时,首先显示13个16位寄存器的内容,随后是标志寄存器的内容,最后一行是下一条要执行的指令地址及指令内容。

例1-4:显示所有寄存器的内容-RAX=0140 BX=2400 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=08F1ES=08F1 SS=08F1 CS=08F1 IP=0104 NV UP DI PL NA PO NC08F1:0104 EB0A JMP 0110在显示命令执行时,最后显示的是标志寄存器的内容,其意义见表1-2。

例1-5:修改寄存器内容要修改某寄存器内容,就可在R命令后打入寄存器名,DEBUG显示出这个寄存器原来的值,然后打入新值即可。

例如:-R AXAX= 0104:1234 ;写入新值(3)汇编命令A格式:A[<程序起始地址>]功能:逐行汇编程序。

主要用于小段程序的汇编和修改部分连续的目标代码。

说明:使用A命令汇编程序,一般不许使用标号和伪指令,但MS-DOS的DEBUG 允许使用DB和DW这两条伪指令。

A命令可用按Ctrl+C键退出。

例1-6:-A 1001000:0100 MOV DL,411000:0102 MOV AH,21000:0104 INT 211000:0106 INT 201000:0108 ∧C- ;即按CTR和C键退出汇编命令A(4) 4. 反汇编命令U格式:U[<地址范围>]功能:对指定地址范围内的二进制代码进行反汇编,常用于分析目标代码意义。

说明:<地址范围>项缺省时,反汇编起始地址由当前指令指针寄存器IP值决定。

例1-7:例1-6程序反汇编如下:-U 100 1061000:0100 B241 MOV DL,411000:0102 B402 MOV AH,021000:0104 CD21 INT 211000:0106 CD20 INT 20-其中地址范围为100到106。

(5)单步执行命令T格式:T[<=起始地址>][<跟踪条数>]功能:逐条跟踪执行程序指令。

说明:每条指令执行后都将显示各寄存器当前值。

例1-8:说明例1-6程序的单步执行:-TAX=0005 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=127B ES=127B SS=127B CS=127B IP=0103 NV UP EI PL NZ NA PO NC127B:0103 BB0600 MOV BX,0006-TAX=0005 BX=0006 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=127B ES=127B SS=127B CS=127B IP=0106 NV UP EI PL NZ NA PO NC127B:0106 01D8 ADD AX,BX-TAX=000B BX=0006 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=127B ES=127B SS=127B CS=127B IP=0108 NV UP EI PL NZ NA PO NC127B:0108 CD20 INT 20-TAX=000B BX=0006 CX=0000 DX=0000 SP=FFE8 BP=0000 SI=0000 DI=0000DS=127B ES=127B SS=127B CS=00C9 IP=0FA8 NV UP DI PL NZ NA PO NC00C9:0FA8 90 NOP(6)执行程序命令G格式:G[=<起始地址>][<断点>…]功能:完整或分段执行程序。

相关文档
最新文档