实验一 利用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程序的使用

湖北科技学院计算机科学与技术学院《微机接口技术》实验报告学号: 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 调试程序的应用

课程名称:专业/班级:11学号:1110101012 姓名:胡伟实验地点:菊坛机房一实验时间:5.17分数:实验一Debug 调试程序的应用一、实验目的1.掌握Debug常用命令的应用。

2.利用Debug调试可执行文件(*.EXE)。

二、实验内容1. 进入Debug,使用A命令将源程序写入100H开始的内存并汇编,然后使用G命令运行程序,接着用U命令反汇编,将机器指令送到起始地址为200H 的若干单元并加以验证,用Q命令退出Debug,返回DOS提示符。

2. 进入Debug,使用A命令将源程序写入内存并汇编,然后使用G命令运行程序,接着用D命令观察运行结果后,在用U命令反汇编,用Q命令退出Debug,返回DOS提示符。

3.进入Debug,用A命令写入汇编源程序,接着用R命令显示寄存器状态,并用T命令单条执行指令,注意在执行命令的同时观察相应寄存器的状态。

4.练习使用填充命令F、搬家命令M和比较命令C。

5.利用Debug调试可执行文件(*.EXE)。

三、实验仪器、材料1. 软件MASM5.02. PC微机一台四、实验步骤五、实验结果参考程序:1.MOV DL, 33MOV AH, 2INT 21INT 202. MOV AL, [0120]ADD AL, [0122]DAAMOV BY[0124],ALMOV AL, [0121]ADC AL, [0123]DAAMOV BY[0125],ALINT 203. MOV AH, 3MOV AL, 2ADD AL, AHINT 205. P190例5.5。

实验1-DEBUG调试

实验1-DEBUG调试
2.开始编程
1)在启动的debug程序里逐条输入32位二进制数相加程序的指令,完成无符号数5B68F271H和0AC6D5698H的加法操作,指令执行情况见下图1:
图表1
可以看到,对32位数的低16位操作时,存放地址是13B8:0100,指令长度为3,即在寄存器类型的指令上增加1,在进行ADC加法指令时,考虑到了进位CF,所以指令长度为4。
实验一、Debug调试
吴艳红 11283019
一、实验目的
1.进一步学习汇编语言基本指令使用方法;
2.学习DEBUG调试工具的基本使用方法;掌握debug调试命令a、u、r、d、t、g
3.等逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。
二、实验题目
1.编写、输入一个32位二进制数相加程序,逐条执行指令,观察指令执行情况。
4、在执行debug程序时,需要给出.exe文件的后缀名,否则会报错,见图4,这是因为在生成.exe文件时,同时生成了.obj和.lst文件,它们都是同名后缀的,所以报错。
2.使用已经过汇编和连接的小程序(t3-2.exe),将其装入内存,逐条执行指令,观察执行过程和结果。在实验过程中,使用D命令修改XXX和YYY单元中的数据,再重新计算其结果。
三、实验过程
1.启动计算机的WINDOWS操作系统,在开始菜单中找到“运行”,输入“cmd”后回车,启动ms-doscommand程序,再在该程序内输入“DEBUG”并按回车,即启动DEBUG调试程序。
ZF标志寄存器在执行DX的异或指令时为1,表明DX内容初始化为0000H,但在执行对AX内存的累加时,DX作为高位的寄存器,执行DX←DX+0000H+CF,见图7,前几次执行ADC DX,00 时,结果都是ZF=ZR,DX=0000H,说明计算结果没有向高位产生进位,;当标志寄存器OF连续两次为OV,显示溢出,并且CF=CY,显示最高位有进位时,AX=2340H,再次执行DX←DX+0000H+CF,ZF的标志为NZ,DX=0001H,表明计算结果非零,说明低16位的计算有进位,也显示了指令ADC的实现过程.

DEBUG的使用及程序调试方法

DEBUG的使用及程序调试方法

实验一 DEBUG的使用及程序调试方法一.实验目的1、掌握常用DEBUG命令以及调试简单程序。

2、掌握常用汇编指令的功能及其书写格式。

3、掌握在DUBUG下进行简单程序设计并调试。

二.实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。

三.实验原理DEBUG是专门为汇编语言设计的调试工具软件,它通过单步、设置断点等方式,为使用者提供了非常有效的调试手段。

在DEBUG 下所有输入的数据都是十六进制,所以不需要后面加H。

并且不区分大、小写字母。

1、直接启动DEBUG程序如在C盘的根目录下,启动的方法是:C:\>DEBUG_这时屏幕上会出现“_”提示符,等待键入DEBUG命令。

2、启动DEBUG程序的同时装入被调试文件命令格式如下:C:\>DEBUG [d:][PATH]filename[.EXT][d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。

3、DEBUG的主要命令(1)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态,格式为:-RR命令显示中标志位状态的含义如下表所示:标志名置位复位溢出Overflow(是/否)OV NV 方向Direction(减量/增量)DN UP 中断Interrupt(允许/屏蔽)EI DI 符号Sign(负/正)NG PL 零Zero(是/否)ZR NZ 辅助进位Auxiliary Carry(是/否)AC NA 奇偶Parity(偶/奇)PE PO 进位Carry(是/否)CY NC2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如输入:-R AX系统将响应如下:AX F1F4:表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,输入修改后内容,如:-R BXBX 0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OV DN EI NG ZR AC PE CY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。

汇编实验报告--利用DEBUG调试汇编语言程序段

汇编实验报告--利用DEBUG调试汇编语言程序段

实验一利用DEBUG调试汇编语言程序段学生姓名:何茂杰学号:2010305104 专业班级:10级计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。

二、实验内容1.学会使用debug的A, U, T, D, E等命令。

2.编写一个程序计算Y=(X*U+V)/1000,X、Y、U、V(均为16位有符号二进制数)的存放地址自己确定。

分别使用两种以上的寻址方式对X、Y、U、V寻址。

三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;2.学会使用debug的A, U, T, D, E等命令。

五、主要实验步骤(一)学会使用DEBUG中的简单命令:1.打开DOS,开始——运行——cmd。

2.进入DEBUG,在DOS下输入DEBUG,直接进入。

3.在DEBUG中输入D,查看D命令结果,输入D 1000,查看指定地址的数据。

4.在DEBUG中输入E100,修改地址100的数据,再输入D100,查看修改后的结果。

5.在DEBUG中输入R,查看当前寄存器的内容。

6.在DEBUG中输入A,输入以下代码:mov ax,1234mov [1000],ax输入T显示第一条命令运行结果,再次输入T,显示第二条命令运行结果,输入d1000,验证命令运行结果。

7.在DEBUG中输入A,输入以下代码:mov ax,1234mov [1000],ax输入G [=起始地址] [结束地址]↓,再输入D1000,验证命令运行结果。

8.在DEBUG中输入U [起始地址] [结束地址],从[起始地址]开始进行反汇编。

9.在DEBUG中输入Q,推出DEBUG程序。

(二)用DEBUG验证乘法、除法、加法、减法等功能:1.验证加法和带进位加,使用A命令,在DEBUG中键入以下代码:mov ax,f111mov bx,f222mov cx,2mov dx,3add ax,bxadc cx,dx使用G命令查看结果2.验证减法和带借位减法,使用A命令,在DEBUG中键入以下代码:mov ax,2mov bx,3mov cx,5mov dx,2sub ax,bxsbb cx,dx使用G命令查看结果3.验证乘法和除法,使用A命令,在DEBUG中键入以下代码:乘法:mov al,b4mov bl,11mul bl使用G命令查看结果除法:mov ax,400mov bl,b4div bl使用G命令查看结果六、实验数据及处理结果反汇编:执行情况:七、思考题启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?答:进入DOS,输入DEBUG xxx.exe,其中xxx为文件名。

实验一 利用 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调试程序的应用

调试工具debug debug的使用及基本指令的用法 实验一 调试工具debug的使用及基本指令的用法
8、执行一段程序
-g=100 106 g=100 AX=1234 BX=0000 AX=1234 BX=0000 DS=10 10DD ES=10 10DD DS=10DD ES=10DD 10DD DD: 10DD:0106 36 10DD:0107 A22C41 从CS:100H开始,执行到CS:106处停止。 CS:100H开始,执行到CS:106处停止。 CS 处停止 CX=0000 DX=0000 CX=0000 DX=0000 SP=CFDE SS=10 10DD CS=10 10DD IP=0106 SS=10DD CS=10DD IP=0106 SS: SS: MOV [412C],AL BP=0000 SI=0000 DI=0000 BP=0000 SI=0000 DI=0000 OV DN DI PL NZ NA PO NC SS:412C=00
标志寄存器各标志位的含义: 标志寄存器各标志位的含义:
溢出标志OF: OV/NV( 溢出/ 不溢出) 溢出标志OF: OV/NV(1溢出/0不溢出) OF 方向标志DF DN/UP( DF: 方向标志DF: DN/UP(1减/0增) 中断标志IF EI/DI( 开中断/ 关中断) IF: 中断标志IF: EI/DI(1开中断/0关中断) 符号标志SF NG/PL( SF: 符号标志SF:NG/PL(1负/0正) 零标志ZF ZR/NZ( ZF: 非零) 零标志ZF: ZR/NZ(1零/0非零) 辅助进位AF AC/NA( AF: 辅助进位AF:AC/NA(1有/0无) 奇偶标志PF PE/PO( PF: 奇偶标志PF:PE/PO(1偶/0奇) 进位标志CF CY/NC( CF: 进位标志CF:CY/NC(1有/0无)

用debug调试程序

用debug调试程序

实验二用DEBUG调试程序一、实验目的学习利用DEBUG调试程序的基本思想及方法二、实验环境:1.硬件:PC微机2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE三、实验内容利用DEBUG调试程序,可以将一个可执行程序(如.EXE、.COM等)装入内存中,并接管对程序运行的控制权,通过采取如反汇编、断点运行、单步执行、寄存器内容修改等方法,对可执行程序进行跟踪、调试,以找出其中的设计错误,然后再对源程序进行相应修改,重新生成正确的可执行程序。

1.准备被调试程序:假定所有有关文件均在当前路径C:\MYTEST>下,按照实验一的步骤生成一个被调试的可执行2.进入DEBUG环境:(其中斜体部分由键盘输入。

)其中,短线‘-’作为DEBUG环境的操作提示符,在此提示符下,可以输入各种DEBUG 命令,对可执行程序TEST.EXE进行跟踪调试。

3.主要调试命令:1)反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解。

一般常用以下格式:a)-U↘:从当前IP处开始,对连续约32字节内容反汇编。

如对TEST.EXE,刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示:在上例中,12B7:0000表示CS:IP的内容(其中CS的值是动态值);B8B612代表该处存放的二进制数据,亦即指令MOV AX,12B6的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。

特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中的JMP 0063以后的部分,显然不是TEST.EXE的内容。

另外还需注意,DEBUG默认使用十六进制。

b)–U 0123↘:从指定的IP=0123处开始,对连续约32字节内容反汇编。

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

实验一调试程序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【五、实验过程】根据实验内容,按步骤完成。

实验一 debug调试工具软件的使用

实验一 debug调试工具软件的使用

实验一 debug调试工具软件的使用一.实验目的:1.debug 调试工具软件的使用方法,常用命令A、U、D、E、R、T、G的使用。

2.用debug调试简单程序段的方法。

3.学习指令功能和简单程序编写。

二.实验内容1.用直接寻址Mov al,[10] -E10 11 -E10 CCMov bl,[20] -E20 22 -E20 DDMov [20],al -D10 -D10Mov [10],bl 1377:0010 11 22 00 8A 1E 1377:0010 CC 22 00 8A 1E1377:0020 22 FF FF FF FF 1377:0010 DD FF FF FF FF-G=100 10E G=100 10E-D10 -D101377:0010 22 22 00 8A 1E 1377:0010 DD 22 00 8A 1E 1377:0020 11 FF FF FF FF 1377:0017 CC FF FF FF FF 间接寻址Mov al,[si] -E10 33 -E55Mov bl,[di] -E20 44 -E66Mov si,10 -D10 -D10Mov di,20 1377:0010 33 0D 17 03 DB 1377:0010 55 0D 17 03 DB Mov [di],al 1377:0020 44 FF FF FF FF 1377:0020 66 FF FF FF FF Mov [si],bl -G=100 10E -G=100 10E-D10 -D101377:0010 44 0D 17 03 DB 1377:0010 66 0D 17 03 DB1377:0020 33 FF FF FF FF 1377:0020 55 FF FF FF FF 交换指令mov al,[10] -E10 23 -E10 44xchg al,[20] -E20 32 -E20 55xchg al,[10] -D10 -D101377:0010 23 0D 17 03 DB 1377:0010 44 0D 17 03 DB1377:0020 32 FF FF FF FF 1377:0020 55 FF FF FF FF-G=100 10A -G=100 10A-D10 -D101377:0010 32 0D 17 03 DB 1377:0010 55 0D 17 03 DB1377:0020 23 FF FF FF FF 1377:0020 44 FF FF FF FF 堆栈指令:Push [10] -E10 AA -E10 CCPush [20] -E20 BB -E20 DDPop [10] -D10 -D10Pop [20] 1377:0010 AA 0D 17 03 DB 1377:0010 CC 0D 17 03 DB1377:0020 BB FF FF FF FF 1377:0020 DD FF FF FF FF-G=100 110 -G=100 10A-D10 -D101377:0010 BB FF 17 03 DB 1377:0010 DD FF 17 03 DB1377:0020 AA 0D FF FF FF 1377:0010 CC 0D FF FF FF各写一段程序完成[10H]和[20H]单元内容的交换。

利用DEBUG调试大全语言程序段修订稿

利用DEBUG调试大全语言程序段修订稿

利用D E B U G调试大全语言程序段Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。

二.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)例1:-D100 ;显示DS段, 0100开始的128个字节内容说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。

①DSEGREG[起始地址] [L 长度];显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容.② D SEGREG[段地址:偏移地址];显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容-D;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)-D DS:100 ;显示DS段, 0100H开始的128个字节内容-D CS:200 ;显示CS段, 0200H开始的128个字节内容-D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容-D 200;显示DS段, 0200H开始的128个字节内容-D 100 L 10 ;显示DS段, 100H开始的100H个字节内容2)E命令(修改指定内存)例1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:08F1:0100 41 42 43 44 48 47 46 45例2: -E 100:08F1:0100 76 42 :42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。

实验一利用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开始运行,后面为断点地址。

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

实验一利用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】【PA TH】文件名.扩展名↙
➢W命令L 命令
格式:-W/L 内存地址
●由显示可知,命令N为命令W和命令L指定文件,而命令W把指定
内存块的内容写入命令N指定文件中,命令L则将其文件装入内存地址中。

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

2)多步执行
格式:-T=内存地址执行指令条数↙
●可知,该指令从指定的内存地址开始执行,直到执行的指令条数与命
令中给出的条数相等为止。

图为执行从10DB:100H开始的两条指令。

➢G命令
格式:-G=内存地址断点地址↙
●由图示可知,G命令从给出的内存地址0100开始取指令执行,直到程
序中遇到结束程序指令为止。

如该命令中INT 3。

➢D命令
格式:-D内存块↙
➢E命令
格式1:-E内存地址字符或数值串↙
格式2:-E内存地址
●由图示可知,D命令显示内存2000与2003中的内容,而E命令则能
修改内存地址中的内容。

格式:-F内存块字符或数值串↙
●由图示可知,该F命令将指定的字符或数值串填入指定的内存块,即
将字符串‘Hello World!’填入DS:2000H至2100H的内存块中。

➢S 命令
格式:-S 内存块字符或数值串↙
●该命令为在指定的内存块内搜索指定的字符或数值串。

图中为在
DS:2000H开始,大小为20H的内存块中查找字符串“Hello World!”。

➢M 命令
格式:-M 内存块1 内存块2的首地址↙
●该命令将内存块1的内容复制到内存块2,内存块1的内容不变。

图示
将2000:100H开始,大小为20H的内存块复制到DS:200H开始的内存处。

格式:-C 内存块1 内存块2的首地址↙
●该命令顺序比较两内存块各单元的内容。

如图示为比较DS:200H和
2000H:200H开始,大小为20H的两内存块。

(3)利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

➢乘法MUL
格式:MUL SRC
➢除法DIV
格式:DIV SRC
➢加法ADD
格式:ADD DST, SRC
➢减法SUB
格式:SUB DST, SRC ➢带进位加ADC
➢带借位减SBB
➢堆栈操作指令PUSH/POP
3.实验准备
(1)仔细设计有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。

(2)作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。

(3)阅读将AX左移9位的程序段。

4.实验步骤
(1)在DOS提示符下,进入DEBUG程序。

在DOS子目录下启动DEBUG。

(2)详细记录每一步所用的命令,以及查看结果的方法和具体结果。

例:显示S
5.实验讨论
(1)启动DEBUG后,要装入某一个.EXE文件,应通过什么方法去实现?
格式:>\[d:][PATH]DEBUG 文件名.扩展名↙
指导教师意见:
签名:年月日。

相关文档
最新文档