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

合集下载

汇编实验报告(-)调试程序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的用法

[实验名称]实验一DEBUG的用法[实验目的]1、熟练掌握DEBUG常用命令;2、能使用DEBUG编辑、调试简单程序;3、掌握与实验有关的常用DOS命令。

[实验内容&要求]1、练习常用的DOS命令2、逐个练习并学会要求掌握的常用DEBUG命令;(1) 用R命令显示和修改通用寄存器内容(2) 用R命令显示和修改段寄存器内容(3) 用R命令显示和修改标志寄存器内容(4) 用D命令显示指定地址存储单元内容(5) 用E命令修改存储单元内容(6) 用A命令编辑指令(7) 用U命令查看指令(8) 用T命令执行指令(或程序)(9) 用G命令执行指令(或程序)注:上述(6) ~(9)步请用DEBUG输入一小段顺序程序,分别使用T命令和G命令运行程序,并记录每一步执行后的相关结果。

(注:程序不必太长,可以自编或在课本中选一小段)[实验报告要求]1、报告内容包括:实验目的、实验内容、思考题实验内容:记下实验步骤及过程,写出每一步所用的DEBUG 命令及相关结果(只记相关结果,不相关的结果不要记)。

不用记DOS 命令)2、思考题:小结在DEBUG中如何显示和修改标志寄存器F中的标志位。

附1:要求掌握的DEBUG命令如下:1、启动与退出DEBUG的命令。

启动用DEBUG命令(在DOS下),退出用Q命令(在DEBUG下)2、R命令显示所有寄存器内容、显示指定寄存器内容、修改某个寄存器内容3、A命令在指定地址处编写小段程序、改写某指令;4、U命令查看某指定地址处程序5、D命令显示某地址处内存单元内容6、E命令修改内存单元内容7、T命令指定步数运行程序8、G命令连续运行程序---------------------------------------------------------------------------- 附2:实验中用到的常用DOS命令一、列文件目录:DIR[通配文件名] [/P]实用例子:DIR 列出当前目录下所有文件及目录DIR *.ASM /P 分页列出所有以ASM为扩展名的文件DIR F*.EXE 列出所有F开头扩展名为EXE的可执行文件二、显示/改变当前目录:CD[路径\目录名]⏹实用例子:CD 显示当前目录名CD \回到根目录CD ..回到上一级目录CD YAN进入当前目录下的YAN子目录CD \YAN进入根目录下的YAN子目录三、改变当前盘:<盘符:>⏹例:C:转到C盘D:转到D盘四、运行命令/可执行文件:[ 路径\ ]文件名[参数]⏹实用例子:MASM a. asm调用当前目录下的MASM.EXE对当前目录下a.asm进行汇编D:\MASM\MASM b. asm调用D盘MASM目录下的MASM.EXE对当前目录下的b.asm文件进行汇编EDIT c. asm建立/编辑当前目录下的c.asm文件EDIT打开EDIT文本编辑器。

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调试程序的使用姓名:胡彬彬专业:计算机科学与技术班级:计算机14级2班学号:1404010210计算机科学与技术学院实验教学中心2016 年 4 月12 日实验项目名称:DEBUG调试程序的使用一、实验目的1.熟悉 DEBUG 调试程序中的常用命令。

2.学会在 DEBUG 下调试运行汇编语言源程序。

二、实验内容1.熟悉DEBUG常用命令的使用: A、U、D、E、R、G、T、L、W、Q常用命令。

2.在DEBUG下编写汇编语言程序,实现多字节(5个字节)十进制加法。

三、实验用设备仪器及材料硬件:计算机软件:DEBUG调试软件四、实验原理及代码-A010013E0:0100 MOV BX,013013E0:0103 MOV SI,014013E0:0106 MOV CX,513E0:0109 MOV AL,[BX]13E0:010B ADD AL,[SI]13E0:010D DAA13E0:010E MOV [BX+20],AL13E0:0111 INC BX13E0:0112 INC SI13E0:0113 LOOP 010913E0:0115五、实验操作步骤1.在【开始菜单】\【程序附件】\【命令提示符】下,进入 DOS环境。

或在【开始菜单】\【运行】下,直接键入cmd进入。

2.在DOS目录下启动DEBUG。

3.熟悉DEBUG常用命令,详细记录每一步所用的命令及查看结果的方法和具体结果。

4.在DEBUG下编写程序,实现多字节十进制加法实验。

六、实验结果分析。

实验一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。

实验一 利用 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的使用方法
进一步学习功能稍微复杂的程序设计及子程序设计方法
实验内容:编制程序
实现从键盘输入有符号十进制数子程序
子程序从键盘输入一个有符号十进制数
负数用"-"引导
正数直接输入或者用"+"引导
在主程序中给出输入的数的个数为10
输入的数存储到以array开始的10个字空间中
要求完成程序编制及调试
并用DEBUG观察运行结果
实验报告内容
实验题目:
实验目的:
实验内容:
程序清单
实验四 键盘控制发音程序
实验目的:通过编程对PC机中的8253和8255进行控制
db 100 dup(0)
stack ends
code segment 'code'
assume cs:code,ds:data,ss:stack
start proc far
push dx
mov ax,0
push ax
2):用D命令观察程序运行之前DS:0000处开始前20字节的内容并作记录
3: 用G命令从程序开始处运行到程序结束前一条指令
再用D命令观察DS:0000处开始的前20字节的内容
并作记录
并据此说明程序对数据段中的数据进行了哪些操作
改变按键后
计算机扬声器将按照新的频率发声
连续按不同的键
将一直能改变发音频率
直到按回车键退出该程序
实验报告内容
实验题目:
实验目的:
实验内容:
问题回答:所编制的汇编语言程序是如何对8253和8255进行控制的?各选择了什么工作方式?
并用DEBUG调试

实验一熟悉使用调试工具软件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的使用

实验一 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内容

实验1debug的使用

实验1debug的使用

实验1debug的使用实验一DEBUG的使用一、实验目的:1. 熟悉DEBUG的功能,掌握其常用命令格式并能熟练使用。

2. 使用DEBUG,观察PC机执行汇编指令的过程,掌握寄存器的名称与内存单元地址的形成。

二、实验要求:1. 遵守规章制度,爱护实验室设备。

2、熟悉Debug各个命令的用法。

3、熟悉寄存器的名称以及物理地址的形成。

4、写出实验报告。

三、实验内容:实验1、 DEBUG常用指令操作进入Debug环境,完成下列步骤。

1、用R命令查看寄存器的值,将AX的值修改为1,BX的值修改为100 (十进制)。

2、用D命令查看内存00200H开始的128个单元的内容。

用E 命令将内存00200H和00202H处的内容分别改为1、2 。

3、用E命令将”I am a student!!”写入内存00200H处。

用D 命令查看是否写入成功。

4、用A 命令向内存00210H处写入汇编指令MOV AX,1234MOV BX,0158ADD AX, BX5、使用U命令反汇编,并用T命令执行上述指令,查看执行后的结果,3条指令执行后AX的值为多少?6、直接在内存中将指令“MOV BX,0158”改为“ADD BX,0158”,其他指令不变。

然后用G命令执行这3条指令,查看AX的值为多少?实验2、理解逻辑地址与物理地址的关系使用Debug命令设置下列寄存器及存储器的内容(DS)=2000H, (BX)=0100H, (SI)=0002H,(20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H,(21200)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H.,并用命令查看设置是否成功。

实验3、理解指令的执行过程将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方mov ax, 1add ax, axjmp 2000:003分析jmp指令的功能和执行过程。

实验一DEBUG的使用

实验一DEBUG的使用

实验一DEBUG的使用实验1 DEBUG的使用一、实验目的:通过实验掌握下列知识:1、DEBUG命令的使用;2、8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。

二、实验类型:验证三、实验内容和步骤1、将AX,BX,CX,DX的值分别改为100H,200H,300H,400H2、将标志位CF,SF,ZF值改为13、将2000H:1000H开始的连续3个字节单元的值分别改为12H,34H,56H4、将3000H:1000H开始的连续20H个字节单元的内容全部改写55H5、写一段程序,求2000H:1000H开始的连续3个字节单元的和,将结果保存到2000H:2000H 字节单元中(设不会溢出)6、设2000H:1000H,2000H:1004H两个字单元的内容分别为1234H,5678H,写一段程序实现将两个字单元的值进行交换7、内存操作数及各种寻址方式使用程序内容:MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE PTR[BX],20MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DLMOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],2846操作步骤1)用A命令键入上述程序,并用T命令逐条运行。

2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及字数据的存放方法。

8、求累加和程序:程序内容:MOV BX,1000MOV CX,10SUB AX,AXLOP: ADD AL,[BX]ADC AH,0INC BXJ: LOOP LOPINT3操作步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

2)用命令N AA将此程序命名为文件AA(文件名可任取)。

实验一 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调试程序调试程序段

实用标准实验一利用DEBUG调试程序调试程序段1.实验目的(1)熟悉DEBUG有关命令的使用方法。

(2)利用DEBUG掌握有关指令的功能。

(3)利用DEBUG运行简单的程序段。

2.实验容、实验步骤(1)进入和退出DEBUG程序。

进入DEBUG程序,Windows中在命令提示符下进入DEBUG如图:退出DEBUG如图:(2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

对于U命令、N命令、W命令等,也应试一下。

?R命令:1)显示所有寄存器容:格式:-R↙功能:以十六进制形式显示CPU部各寄存器的值:以符号形式标志寄存器各标志位(除TF外)的值,并将CS:IP所指的存容反汇编成一条指令,可视为将要执行的指令。

从显示可知,CS=11A7H, IP=0000H.2)修改寄存器格式:-R 寄存器名↙功能:DEBUG首先显示指定寄存器的当前值,并在下一行首给出提示“:”,等待用户输入新值,若直接回车相当于不个忙寄存器的值。

由显示可知,用E命令修改,再查看可发现数据已经被改了。

3)修改标志值格式:-RF↙功能:先用符号显示当前各标志位的值,并在末尾给出提示符“-”,然后等待用户以符号形式输入新的标志值,对输入的次序没有要求,各标志值之间也可没有空格;若直接在“-”之后回车,则保留原标志值。

由显示可知,相应的标志值改变了。

?A命令格式:-A 存地址↙执行汇编命令A后,相应的指令对应的机器码将会依次存放在指定的存单元中,并提示下一地址。

?U命令格式:-U 存块↙由显示可知,反汇编命令U从指定的存地址开始对存块进行反汇编,并分三列显示反汇编的结果。

?N命令格式:-N【e】【PATH】文件名.扩展名↙?W命令L 命令格式:-W/L 存地址由显示可知,命令N为命令W和命令L指定文件,而命令W把指定存块的容写入命令N指定文件中,命令L则将其文件装入存地址中。

?T命令1)单步执行格式:-T=存地址↙由显示可知,T命令将存地址的段地址和偏移地址修改CS和IP,然后执行由CS:IP指向的存单元处的一条指令,显示各寄存器的值,并反编下一条指令,然后返回DEBUG状态。

实验一DEBUG程序调试实验

实验一DEBUG程序调试实验

实验一 DEBUG程序的使用一﹑实验目的:1.学习使用DEBUG程序的各种命令,熟悉宏汇编编程环境。

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

3.通过实验掌握下列知识:①8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG②BCD码,ASCII码及用16进制数表示二进制码的方法。

③8088寄存器: AX,BX,CX,DX,标志寄存器F,IP。

二、微机原理上机步骤:1.进入系统C:\>CD MASM (回车)2.编辑汇编语言源程序C:\MASM>edit 文件名.asm(回车)3.汇编源程序:C:\MASM>masm 文件名.asm(回车)4.连接目标程序:C:\MASM>link 文件名.obj(回车)5.运行可执行程序:C:\MASM>文件名(回车)注意:红色字符为系统提示符。

若C盘没有MASM文件夹,则建立该文件夹。

6.重复以上2~5步,直至显示正确结果为止,记录下正确程序,做实验报告。

三﹑实验内容:1.掌握DEBUG程序的各种命令,重点是A,R,D,E,U,T,P,G,F,H命令的使用。

2.DEBUG 命令使用:①打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。

②用命令 F100 10F 'A' 将'A'的ASCII码填入内存。

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

④用命令 F110 11F 41 重复上二项实验,观察结果并比较。

⑤用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?⑥用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH⑦用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。

实验报告一: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的使用实验报告

实验一调试程序D E B U G的使用实验报告标准化管理部编码-[99968T-6889628-J68568-1689N]南昌理工学院实验报告二O一二年月日课程名称:微机原理与接口技术实验名称:调试程序DEBUG的使用班级:姓名:同组人:指导教师评定:签名:【一、实验名称】调试程序DEBUG的使用【二、实验目的】1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG调试程序的方法。

【三、实验内容和原理】1.用编辑软件,输入以下汇编语言源程序:DATSEGMENTADB20;(自定)BDB15;(自定)YDB3DUP(0)ZDB0,0DATENDS STASEGMENTSTACKDW50DUP(?) STAENDS CODSEGMENT ASSUMECS:COD,DS:DAT STARPROCFAR PUSHDSXORAX,AXPUSHAXMOVAX,DAT MOVDS,AXMOVAX,STA MOVSS,AXMOVAL,AMOVZ,AL MOVZ+1,AL CALLSUB1MOVAL,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【五、实验过程】根据实验内容,按步骤完成。

实验1DEBUG

实验1DEBUG

实验一调试程序debug的使用一、教学目的:1. 熟悉调试程序debug 运行环境,掌握A、T、Q、G命令的使用方法2. 通过实例,学会调试程序查看运行结果。

3. 了解INT 3指令功能二、实验内容:1.通过对一个汇编程序进行各种调试和检测, 掌握调试程序debug 的使用方法。

调试程序 , 可对用户程序进行各种检测调试, 帮助用户进一步发现程序设计中的错误和不足。

现以一个实例来说明 debug 程序中主要命令的使用方法(debug 状态下显示的和输入的数据均为 16 进制数。

)实例1: 在 debug 状态下用 a 命令建立、汇编一段小程序, •将一段内存单元中的数据复制到另一段内存中。

然后对该程序进行各种检测和调试。

********>debug (进入 debug 程序)-a (a 为汇编命令, 可修改、增补程序, 或编写程序。

这里是编写程序。

)****:0100 mov ax,1234****:0103 mov bx,2345****:0116 add ax,bx****:0118-t=****:0100 (t为单步执行命,首次运行时最好指明单步运行的地址)AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0110 DI=0210DS=**** ES=**** SS=**** CS=**** IP=011B NV UP EI PL NZ NA PO NC****:1013 BB4523 MOV BX , 2345-t (t单步执行下一条指令)AX=1234 BX=2345 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0110 DI=0210DS=**** ES=**** SS=**** CS=**** IP=011B NV UP EI PL NZ NA PO NC****:1016 01D8 ADD AX , BX-tAX=3579 BX=2345 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0110 DI=*****DS=**** ES=**** SS=**** CS=**** IP=011B NV UP EI PL NZ NA PO NC-q (退出debug返回doc)*********>实例2: 在 debug 状态下用 a 命令建立一段小程序Mov ax,1234hMov bx,2345hAdd ax,bxMov cx,00ffhSub ax,cxSub bx,5Add ax,bx1、单步运行上述指令,观查各寄存器的结果。

计组实验报告1debug使用

计组实验报告1debug使用

第一个程序实验步骤:一、启动debug程序打开Dosbox,出现Z:\>键入mount c: d:\,回车出现Drive C is mounted as local directory d:\Z:\>键入D:,回车出现D:\>键入debug,回车出现debug程序的提示符,一个短杠二、汇编第一个程序-a100 //将汇编的首地址设为1000AE9:0100 mov dl,1 //将数值01h (系统自带的,笑脸)放进dl寄存器0AE9:0102 mov ah,2 //ah放2,是2号功能,字符输出,并且要输出的字符是已经放在dl 里面的0AE9:0104 int 21 //调用DOS 21号中断2号功能,用来逐个显示装入DL的字符0AE9:0106 int 20 //调用DOS 20号中断,终止程序,将控制权交回给DEBUG0AE9:0108三、用W命令将该程序写入(Write)磁盘中-rbx //查看BX 寄存器的内容BX 0000:-rcx //查看CX 寄存器的内容CX 0000:8 /程序的字节数为8-w //用W命令将该程序写入(Write)磁盘中Writing 00008 bytes四、退出debug-qD:\>五、运行该程序//由于版本问题,直接执行软件显示无响应,故先保存再在DOS环境下打开。

打开debug,打开文件键入mount c d:\回车键入debug 回车-g //go 执行六、反汇编列出该程序-u100 106 //上述执行完后反汇编,会显示上述汇编的代码七、查看寄存器的值-r //read 会显示所有寄存器的值八、退出debug-qD:\>九、用DOS的dir命令查看当前目录下的文件第二个程序——可以将所有ASCII码显示出来的程序二、汇编-a1000AE9:0100 mov cx,0100 //计数寄存器装入循环次数0100,即十进制的1620AE9:0103 mov dl,00 //将要显示的字符00(ACSII码)放入dl寄存器中0AE9:0105 mov ah,02 //调用DOS的2号功能,字符输出,并且要输出的字符是已经放在dl里面的0AE9:0107 int 21 //字符输出0AE9:0109 inc dl //递增指令,dl寄存器的值自值加一,即指向下一地址进行下一操作0AE9:010B loop 0105 //循环指令,每次计数器cx值减1,跳到地址0105进行循环,,直至cx为0才结束循环,即依次输出dl的要显示的字符0AE9:010D int 20 //执行中断0AE9:010F三、保存执行第三个程序——显示字符串,如:UNDERSTAND?一、打开debug,汇编程序D:\>debug-a1000AE9:0100 mov dx,109 //寄存器dx存放的是字符串起始地址1090AE9:0103 mov ah,9 //Dos的09h功能调用,显示首地址存放在寄存器dx的字符串,字符串要求要以‘$’结尾0AE9:0105 int 21 //字符串输出0AE9:0107 int 20 //执行中断0AE9:0109 db 'understand?$' //定义字符串,字符串要求以‘$’结尾,将单引号内所有ASCII码放入内存中0AE9:0115// mov ah,9的作用是显示字符串,但要求dx存放字符串的首地址,而字符串要以‘$’结尾,所以第一二句顺序不要求固定,另外,定义字符串也不强求一定在最后,只是放在最后最方便。

  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 调试程序的方法,了解了另一种程序语言的编写。

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

相关文档
最新文档