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

合集下载

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

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

实验一熟悉使用调试工具软件DEBUG实验一熟悉使用调试工具软件debug实验一熟悉调试工具软件调试编写汇编语言时,如果源程序中存在语法或格式上的错误,在汇编和链接过程中都可以被发现并得以纠正。

但是如果在源程序中存在逻辑错误时,就只能通过调试来纠正了。

常用的调试工作软件是debug。

debug提供了修改寄存器和内存单元内容的命令,可以方便地修改寄存器及内存单元的内容,为调试和修改程序带来的方便。

1.调试启动在windows环境下,点击开始栏里的运行窗,输入debug。

2、debug的主要命令这里只介绍几个常用的调试命令。

有关其他命令,请参阅相关文献。

1)r命令R命令用于查看和修改寄存器的值。

在提示符“-”下输入命令r,debug将会显示出当前所有寄存器和标志位的状态。

在r后输入相关寄存器名称,以修改相关寄存器值。

2) D命令d命令作用:显示内存区域的内容。

在提示“-”时执行命令d,以观察当前存储单元的内容。

用命令d显示内存区域的内容时,最左边是内存的起始地址,中间以十六进制的形式显示内存值,最右边是以ascii码的形式显示内存值。

每行最多显示16个字节的内容。

命令D可以接受或忽略参数。

当调试启动时,将DS的值设置为X。

当省略该参数时,命令d的显示内容从X:100开始,每次显示128字节。

将来在没有参数的情况下执行命令d时,debug将根据最后一个位置继续显示。

带参数时debug能够显示指定地址范围的内容。

带参数的方式有三种:方式一:d[起始位置]。

debug从起始位置开始显示128个字节的内容。

在提示符“-”下执行命令d1af5:100。

观看命令执行结果。

模式二:D[开始位置][结束位置]。

调试从开始位置开始,并一直显示到结束位置。

在提示“-”时执行DDS:1001ff命令。

观察命令执行结果。

方法3:D[起始位置][l长度],长度由l参数标记。

Debug显示从起始位置开始的指定长度的内容。

在提示“-”时执行DDS:100l10命令。

汇编实验报告(-)调试程序DEBUG的使用

汇编实验报告(-)调试程序DEBUG的使用

汇编实验报告(-)调试程序DEBUG的使用《汇编语言程序设计》实验报告实验一调试程序DEBUG 的使用一、实验目的通过实验掌握下列知识:1、DEBUG命令:A,T,D,F,G;2、数据在内存中的存放方式和内存操作数的几种寻址方式;3、汇编指令:INC,DEC,LOOP,INT 3的应用;4、汇编语言伪指令:BYTE PTR和WORD PTR的应用。

二、内容及步骤1.DEBUG 命令使用表 1.1 DEBUG命令****命令的使用中注意:****①字母不分大小写;②②只使用16 进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug 的规则,则将以“error”提示,并用“^”指示错误位置。

许多命令的参数是主存逻辑地址,形式是“段基地址: 偏移地址”。

其中,段基地址可以是段寄存器或数值;偏移地址是数值。

如果不输入段地址,则采用默认值,可以是缺省段寄存器值。

如果没有提供偏移地址,则通常就是当前偏移地址。

1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境,显示提示符 '- '。

2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。

注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。

3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。

图1-1 Fill、Dump命令调用对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址结束地址”(结束地址不能具有段地址),或者是:“开始地址L 字节长度”。

D(Dump)命令显示主存单元的内容,它的格式如下(分号后的部分用于解释命令功能,不是命令本身):D [地址] ;显示当前或指定开始地址的主存内容D [范围] ;显示指定范围的主存内容图1-2 D命令调用左边部分是主存逻辑地址,中间是连续16 个字节的主存内容(16进制数,以字节为单位),右边部分是这16个字节内容的ASCII字符显示,不可显示字符用点“.”表示。

汇编实验一DEBUG调试程序的使用

汇编实验一DEBUG调试程序的使用
仪器设备损坏、非正常损耗材料(试剂)及处理情况:

教师对报告的最终评价及处理意见:
寻址方式思考题没写。
教师签字:
年月日
实验课程实验汇编语言报学年第学生姓名告学期123实验项目debug调试程序的使用学院计算机科学技术实验性质专业选修课班级学号实验地点同组人数第组实验日期环境参数第周星期第dosbox074节成绩3一实验目的及要求二实验原理实验内容三实验仪器设备及材料四操作方法与实验步骤五实验数据记录及处理六实验结果分析及讨论一
实验报告
──学年第学期
实验课程
汇编语言
学生姓名
123
实验项目
DEBUG调试程序的使用
学院
计算机科学技术
实验性质
专业选修课
班级学号
实验地点
同组人数
第组
实验日期
第周星期第节
成绩
3
环境参数
DOSBox-0.74
1、实验目的及要求
2、实验原理、实验内容
3、实验仪器设备及材料
4、操作方法与实验步骤
5、实验数据记录4、向内存从B8100H开始的单元中填写数据,如:
-e b810:0000 01 01 02 02 03 03 04 04
查看没有改变????,这是显存区域,输入后屏幕的内容会改变!
六、实验结果分析及讨论
练习了debug的六个基本命令,并进行了两个小实验。因为以前学过一点,所以做起来还是比较容易。
(2)指出以上汇编语言指令中源操作数使用的是什么寻址方式?
(3)用T命令单步跟踪,观察指令的执行结果,并记录
3.查看内存单元内容,pc机主板上的ROM中写有一个生产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个生产日期并试图改变它

实验一 DEBUG调试工具的熟悉

实验一 DEBUG调试工具的熟悉

实验1 DEBUG的使用及程序调试方法一、实验目的通过本实验使学生掌握调试工具DEBUG的使用方法、理解汇编指令、存储单元和寄存器等有关概念,能对简单的汇编语言程序进行调试。

二、实验原理DEBUG是DOS、WINDOWS都提供的实模式(8086方式)程序的调试工具,在DOS 方式下工作。

使用它可以读写、传送、查看CPU各种寄存器中的内容、显示内存单元的内容、设置程序起始执行地址或断点、机器码级跟踪程序的运行。

用DEBUG编程简单、方便和直观,可以直接查看程序的执行情况,便于熟悉和理解指令,掌握基本编程技巧。

DEBUG只使用十六进制表示数据(十六进制后面不加H),且对字母的大小写不敏感。

常用到的DEBUG功能:✧用DEBUG的R命令查看、改变CPU寄存器的内容✧用DEBUG的D命令查看内存中的内容✧用DEBUG的E命令修改内存中的内容✧用DEBUG的U命令将内存中的机器指令翻译成汇编指令✧用DEBUG的T命令执行一条机器指令✧用DEBUG的A命令以汇编指令的格式在内存中写入一条机器指令三、实验内容(1)学习调试工具DEBUG的使用方法,熟悉DEBUG常用命令的功能和用法。

(2)利用DEBUG调试简单的汇编语言程序,体会汇编指令的功能、寄存器的作用、存储单元地址与内容的概念和作用,以及程序的执行。

四、实验方法与步骤1.DEBUG的进入与退出DEBUG是在DOS方式下使用的程序。

在进入DEBUG前,应先以从WINDOWS 2000/XP中进入DOS方式(进入的是虚拟8086模式的DOS)。

方法:选择【开始】菜单中的【运行】命令,打开【运行】对话框,在文本框中输入“cmd”后,单击【确定】按钮或按下键盘上的【Enter】键。

在命令提示符后输入”debug”后按下键盘上的【Enter】键。

2. 显示寄存器命令 R功能:用于查看和改变CPU寄存器的内容格式:R [<寄存器>]说明:当R命令后面不指定寄存器时,显示所有寄存器的内容例1-1 显示所有寄存器的内容-rAX=0200 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000 DS=138A ES=138A SS=138A CS=138A IP=0100 NV UP EI PL NZ NA PO NC 138A:0100 B241 MOV DL,41例1-2 修改寄存器的内容-r axAX 0200100-rAX=0100 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000DS=138A ES=138A SS=138A CS=138A IP=0100 NV UP EI PL NZ NA PO NC 138A:0100 B241 MOV DL,41例1-3 用RF命令可以显示和修改标志寄存器FR中的标志位,无论修改哪一位标志位,只需要键入该标志位的表示符号(如表1.1所示),并且标志位值的键入顺序可任意。

debug的使用实验报告

debug的使用实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验一DEBUG命令实验

实验一DEBUG命令实验

实验⼀DEBUG命令实验实验⼀ DEBUG命令实验⼀.实验⽬的:掌握DEBUG 的基本命令及其功能⼆.实验内容:DEBUG是专门为汇编语⾔设计的⼀种调试⼯具,它通过步进,设置断点等⽅式为汇编语⾔程序员提供了⾮常有效的调试⼿段。

1、DEBUG程序的启动DEBUG的命令格式:[drive:][path] DEBUG [d:][p][filename][.ext][param...]其中:drive: 是指定DEBUG⽂件的磁盘驱动器标识符,DEBUG是外部DOS命令,所以必须把它从磁盘读⼊内存。

若未指定,DOS 将使⽤当前默认磁盘驱动器。

path: 是DOS查找DEBUG⽂件的⼀个⼦⽬录串表⽰的路径。

若未指定,DOS将使⽤当前⼯作⽬录。

d: 是DEBUG将要调试的⽂件所在的磁盘驱动器。

p: 是查找DEBUG将要调试的⽂件所需的⼦⽬录路径,若未指定,DOS使⽤当前⽬录。

filename[.ext] 是DEBUG将要调试的⽂件名。

param 是将被调试的程序(或⽂件)的命令⾏参数。

例如:在DOS提⽰符下,可键⼊命令:C>debugDEBUG所完成的初始化动作,假定⽂件名没有,启动DEBUG:段寄存器CS、DS、ES和SS置为DEBUG程序后的第⼀个段。

指令指针寄存器IP置为100H(程序段前缀PSP后的第⼀个语句)。

堆栈指针SP置为段末或/doc/1f7311358.html暂驻部分的结束地址(其中较⼩的那个地址)。

其余通⽤寄存器均置为0,标志寄存器置为下述状态。

NV UP EI PL NE NA PO NC如果在DOS提⽰符下,可键⼊命令,包含⽂件名:C>debug name.exe段寄存器DS和ES指向PSP。

寄存器BX和CX含有程序长度。

注意:字母不分⼤⼩写;只使⽤16进制数,不加H;分割符只在两个数值之间是必须的,命令和参数之间可有可⽆;键⼊回车键执⾏命令,Ctrl+Break或Ctrl+C中⽌命令的执⾏;如命令不符合DEBUG的规则,则提⽰“error”并使⽤“^”指⽰错误位置。

实验一、DEBUG的使用方法

实验一、DEBUG的使用方法

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

一、DEBUG程序的调用在Windows XP中启动DEBUG程序,可单击“开始”按钮,依次选择“所有程序”、“附件”、“命令提示符”,在DOS的提示符下,键入DEBUG并按回车键。

或者单击“开始”按钮,选择“运行”,在打开的“运行”对话框中输入“DEBUG”并按回车键。

在DEBUG程序调入后,将出现提示符-,此时就可用DEBUG命令来调试程序。

二、DEBUG的主要命令1、显示存储单元的命令D(DUMP),格式为:_D[address]或_D[range]例如,按指定范围显示存储单元内容的方法为:-d100 12018E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G... 18E4:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.718E4:0120 8B其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。

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

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

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

2、修改存储单元内容的命令有两种。

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

命令格式为:-E address [list]例如,-E DS:100 F3 'XYZ'8D其中F3,'X','Y','Z'和8D各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。

实验一Debug程序的使用

实验一Debug程序的使用

湖北科技学院计算机科学与技术学院《微机接口技术》实验报告学号: 124221031 姓名:李亮亮实验题目: Debug程序的使用实验报告指导老师:范建军实验日期: 2014.11.21一、实验目的1.学习使用DEBUG调试命令。

2.学习用DEBUG调试简单程序。

3.通过程序验证码制及其对标志位的影响。

4.通过调试熟悉和掌握个寄存器的作用与特点。

二、实验内容用DEBUG调试简单程序。

三、实验仪器微机一台四、实验步骤1.由DOS进入DEBUG调试环境。

(1)C:>DEBUG 将调试程序装入内存注意:当机器控制权由DOS成功地转移给调试程序后,将显示“-”号,它是DEBUG 的状态提示符,表示可以接受调试子命令了。

(2)-R显示CPU中各寄存器当前初始内容,请记录下列各项:AX=0000BX=0000CX=0000DX=0000BP=0000SI=0000DI=0000 DS=073F ES=073F SS=073F SP=00FD CS=073F IP=0100如图所示:FLAG寄存器中的8个标志位状态值是:OF DF IF SF ZF AF PF CF0 0 1 0 0 0 0 0说明:1)此时,调试工作区的四个段值相同,指向同一起点,表明公用一个64KB空间;2)SS:SP指向堆栈顶单元,SP为FFFE或FFEE,正好是本段的最高可用地址,表明堆栈自动使用最高地址,栈区由底向上生长;3)CS:IP为约定的调试工作区地点(IP=0100),可由此装入待调试程序代码,或汇编键入的程序小段,工作区由低址往下使用;4)DEBUG用符号给出标志寄存器中8个标志位的当前状态,其含义如下表所示。

标志位含义‘1’的对应符号‘0’的对应符号OF溢出OV有NV无DF方向DN递减UP递增IF中断EI允许DI禁止SF符号NG负PL正ZF全零ZR零NZ非零AF辅助进位AC有NA无PF奇偶性PE偶PO奇CF进位CY有NC无(3)结束程序,返回DOS。

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

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

【三、实验内容和原理】
1.用编辑软件,输入以下汇编语言源程序:
DAT SEGMENT
A D
B 20 ;(自定)
B DB 15 ;(自定)
Y DB 3 DUP(0)
Z DB 0,0
DAT ENDS
STA SEGMENT STACK
DW 50 DUP(?)
STA ENDS
COD SEGMENT
ASSUME CS:COD,DS:DAT STAR PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DAT
MOV DS,AX
MOV AX,STA
MOV SS,AX
MOV AL,A
MOV Z,AL
MOV Z+1,AL
CALL SUB1
MOV AL,B
MOV Z,AL
MOV Z+1,AL
CALL SUB1
MOV AL,A
MOV Z,AL
MOV AL,B
MOV Z+1,AL
CALL SUB1
ADD WORD PTR Y,AX
ADC BYTE PTR[Y+2],0
RET
STAR ENDP
SUB1 PROC
MOV AL,Z
MOV AH,Z+1
MUL AH
ADD WORD PTR Y,AX
ADC BYTE PTR[Y+2],0
RET
SUB1 ENDP
COD ENDS
END STAR
2.通过编译,连接形成可执行文件;
3.用DEBUG 将可执行文件调入,并进行调试;
(1)用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址;
(2)用U 命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始位置, 并记录这个起始地址;
(3)用T 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致.得出程序运行的结果:它们是写在什么单元,具体内容是什么,并判断结果是否正确;
(4)在子程序SUB1 的入口处设一断点,用G 命令执行程序,在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致;
(5)用E 命令修改单元A,B 的内容,重新执行程序,并记录结果;
(6)用M 命令和A 命令对程序进行修改: 将主程序中最后两条指令(ADD 和ADC) 修改为一条CALL SUB1 指令,重新执行程序;
(7)退出DEBUG;
4.重新使用编辑软件,把源程序最后一句中的STAR 去掉.再次生成可执行文件,并用DEBUG 调入内存.当使用U 命令时,显示的结果与前一次(未加STAR) 的结果有何不同? 【四、实验条件】
微型计算机一台,软件MASM
【五、实验过程】
根据实验内容,按步骤完成。

【六、实验结果】
(1)U 命令对目标代码反汇编, 注意发现源程序的起始位置, 并记录这个起始地址。

答:源程序起始地址:1512:0000H。

(2) D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址。

答:150A:0000H 是A的具体地址,150A:0001H 是B的具体地址。

(3) T 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致。

得出程序运行的结果:它们是写在什么单元,具体内容是什么,并判断结果是否正确。

答:由于单步调试的结果较多,在这里仅说几项以示情况。

①PUSH AX 后观察得到IP值自加2。

②MOV DS,AX 后DS 的值由14FAH变成150AH。

③Z的偏移地址为0005H,而寻址Z中的内容成为[0005H]。

所以结果一致正确。

(4) 在子程序SUB1 的入口处设一断点,用G 命令执行程序,在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致。

答:SS = 150BH,IP = 0017H,和程序返回地址一致。

(5) 重新使用编辑软件,把源程序最后一句中的STAR 去掉.再次生成可执行文件, 并用DEBUG 调入内存.当使用U 命令时,显示的结果与前一次(未加STAR) 的结果有何不同?
答:整个代码段仅有一条指令,ADD [BX+SI],AL。

由于把源程序最后一句中的STAR 去掉,那么程序就不一定是从STAR开始,会造成程序混乱。

【七、实验结果分析、讨论】
掌握了汇编程序的编辑、编译、连接和执行的全过程,初步掌握了DEBUG的使用。

【八、实验结论】
初步掌握了汇编程序的编辑、编译、连接和执行的全过程,学习了用DEBUG 调试程序的方法,了解了另一种程序语言的编写。

感觉它比其他高级语言确实要复杂,但是能更一步体会计算机是如何操作的。

相关文档
最新文档