实验一调试程序DEBUG的使用实验精选报告.doc
实验一-DEBUG的使用(1)
实验一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)任何命令都以一个英文字母开头,后面跟一个或多个参数。
汇编实验报告(-)调试程序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实验报告引言:在软件开发和编程过程中,调试(Debug)是一项非常重要的任务。
通过调试,我们可以找到程序中的错误和问题,并进行修复。
本实验报告旨在探讨调试的重要性、调试的方法和技巧,以及调试过程中可能遇到的挑战和解决方案。
一、调试的重要性调试是软件开发过程中不可或缺的一环。
它有助于提高程序的质量和稳定性,确保程序能够按照预期的方式运行。
调试可以帮助开发人员快速定位和修复错误,提高开发效率。
同时,调试也是学习和提升编程技能的重要手段,通过调试,我们可以深入了解程序的运行机制和各种问题的解决方法。
二、调试的方法和技巧1. 使用调试器工具:调试器工具是程序员的得力助手,可以帮助我们逐行执行代码、查看变量的值和程序的执行流程。
常用的调试器工具有GDB(GNU Debugger)、Xcode等。
通过使用调试器工具,我们可以更加直观地观察程序的执行过程,快速定位错误所在。
2. 打印调试信息:在程序中适当地插入打印语句,输出关键变量的值和程序的执行状态,可以帮助我们了解程序的执行流程,找到错误的发生位置。
在调试完成后,记得删除或注释掉这些打印语句,以免影响程序的性能。
3. 缩小调试范围:当程序出现问题时,可以通过逐步缩小调试范围的方式,找出引发问题的具体代码。
可以先注释掉一部分代码,验证程序是否正常运行,然后逐步恢复注释,直到找到引发问题的代码段。
4. 使用断言和异常处理:在程序中合理地使用断言和异常处理机制,可以在错误发生时及时中断程序的执行,并输出相关的错误信息。
这样可以帮助我们快速定位错误,提高调试效率。
三、调试过程中的挑战和解决方案1. 复现问题:有时,程序在某些特定条件下才会出现问题。
在调试过程中,我们需要尽可能还原出问题的场景,以便更好地分析和解决问题。
可以通过调整输入数据、环境变量等方式,尽量复现问题。
2. 多线程调试:当程序涉及多线程时,调试过程会变得更加复杂。
由于多线程的并发执行,错误可能会难以复现和定位。
debug的使用实验报告
debug的使用实验报告
《Debug的使用实验报告》
在软件开发过程中,debug是一个非常重要的步骤,它可以帮助开发者找到并
修复代码中的错误。
在本次实验中,我们将探讨debug的使用方法以及其在软
件开发中的重要性。
首先,我们需要明确debug的定义。
Debug是一种通过检查、测试和纠正软件
中的错误来确保其正常运行的过程。
在实际应用中,debug通常涉及使用调试
器工具来逐步执行代码并观察其行为,以便找出问题所在。
在本次实验中,我们使用了一个简单的Java程序作为例子来演示debug的使用。
该程序包含了一些常见的错误,如语法错误、逻辑错误和运行时错误。
通过使
用调试器工具,我们逐步执行程序并观察其行为,以便找出并修复这些错误。
在实验过程中,我们发现debug的使用能够极大地提高代码的质量和稳定性。
通过逐步执行程序并观察其行为,我们可以更容易地找出并修复代码中的错误,从而减少了在后期测试阶段发现问题的可能性。
此外,debug还可以帮助我们
更好地理解程序的运行逻辑,从而提高了代码的可读性和可维护性。
总的来说,通过本次实验,我们深刻认识到了debug在软件开发中的重要性。
它不仅可以帮助我们找出并修复代码中的错误,还可以提高代码的质量和稳定性。
因此,在日常的软件开发过程中,我们应该充分利用debug工具,以确保
我们的程序能够正常运行并具有良好的性能。
熟悉、使用DEBUG调试工具实验报告
实验目的:借助DEBUG程序发现汇编语言程序的错误并加以改正实验过程:一,在debug环境下建立和汇编程序(1)进入debugC:\debug 回车(2)输入程序并汇编-A 100 回车0AF0:0100 mov dl,38 回车0AF0:0102 mov ah,2 回车0AF0:0104 int 21h 回车0AF0:0106 int 20h 回车0AF0:0108 回车(3)运行程序-g=1008Program terminated normally如果想分析该程序的指令,可使用反汇编命令U(4)反汇编-u 100,108 回车0AF0:0100 B238 MOV DL,30AF0:0102 B402 MOV AH,00AF0:0104 CD21 INT 210AF0:0106 CD20 INT 200AF0:0108 56 PUSH SI(5)将机器指令程序送到起始地址为200h的单元-e 200 b2,38,b4,02,cd,21,cd,20,56-g=2008Program terminated normally-二,常用debug命令(1)显示,修改寄存器内容显示所有寄存器内容格式:-r 回车功能:以十六进制形式显示cpu内部个寄存器的值;以符号形式显示标志寄存器的各标志位(除tf外)的值;并将CS:IP所指的内存内容反汇编成一条指令,可视为将要执行的指令。
如:-r 回车AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0AF0 ES=0AF0 SS=0AF0 CS=0AF0 IP=0200 NV UP EI PL NZ NA PO NC0AF0:0200 B238 MOV DL,38知:cs=0AF0h,IP=0100h修改寄存器格式:-r 寄存器名回车-r dsDS 0AF:0AE0-rds的内容由原来的0af0h修改为0ae0h修改标志值格式:-rf例:-rfNV UP EI PL NZ NA PO NC -ov ng 回车将of,sf的值分别修改为1。
实验一、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的使用及程序调试方法一.实验目的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 调试汇编语言程序段一、实验目的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程序的使用一、实验目的1.学习使用DEBUG程序的各种命令。
2.利用DEBUG学习3.了解计算机取指令、执行指令的工作过程。
4.掌握用DEBUG调试自编程序的方法。
二、实验任务1.参照附录1,掌握DEBUG程序的各种命令,重点是命令R,D ,A,U,T,P,G命令的使用。
2.用命令A汇编下列指令,判断指令正误并说明原因。
(1) ROR AX,8(2) LEA DI,[AX](3) MOV DS,2010(4) PUSH AL(5) OUT 900,AL(6) MOV [BX],03.用命令查看8086/8088 CPU在开机后执行的第一条指令。
4.用命令D查看DS:200~22F和F000:200~22F两内存块内容,用命令F将字符“A”分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM 的区别。
5.用A命令汇编一条INT 1C指令,用命令T单步执行该指令,比较指令执行前后CS 和IP、堆栈指针SP及堆栈内容变化情况,了解什么是中断向量表,中断向量和中断子程,掌握中断指令的执行过程。
6.利用T,P,G命令,执行下列指令段,注意它们的不同之处。
(1) MOV DI,300MOV SI,400MOV CX,3CLDREP MOVSBINT 3(2) MOV AH,2MOV DL,41INT 21INT 3(3)先在CS:200处汇编一条RET指令,再在CS:100处汇编。
MOV BX,200CALL BXINT 3然后从MOV BX,200处开始执行。
7.用命令A汇编下列程序段,并将程序写到硬盘上,然后调试程序段,观察程序段能否完成指定功能,若不能,说明原因,并修改程序。
(1)完成将DS:2000开始的5个字节内存内容相加,并把相加的结果存放在DS2005内存单元中。
MOV CX,5MOV AL,0MOV BX,2000nest: ADD AL,[BX]INC BXDEC CXLOOP nestMOV [BX],ALINT 3(2)以双重循环来实现延时,然后再给AX赋值。
微机原理与接口技术 DEBUG 调试程序的应用(1)
实验一Debug 调试程序的应用一、实验目的1.掌握Debug常用命令的应用。
2.利用Debug调试可执行文件(*.EXE)。
二、实验内容1. 进入Debug,使用A命令将源程序写入100H开始的内存并汇编,然后使用G命令运行程序,接着用U命令反汇编,将机器指令送到起始地址为200H 的若干单元并加以验证,用Q命令退出Debug,返回DOS提示符。
2. 进入Debug,使用A命令将源程序写入100H开始的内存并汇编,然后使用G命令运行程序,接着用D命令观察运行结果后,在用U命令反汇编,用Q命令退出Debug,返回DOS提示符。
3.进入Debug,用A命令写入汇编源程序,接着用R命令显示状态,并用T命令单条执行指令,注意在执行命令的同时观察相应寄存器的状态。
4.练习使用填充命令F、搬家命令M和比较命令C。
5.利用Debug调试可执行文件(*.EXE)。
三、实验仪器、材料1. 软件DOSBOX、MASM2. PC微机一台四、实验步骤1.进入debug,使用A命令:-a100写入以下代码:MOV DL, 33H ;字符3的ASCII送DLMOV AH, 2 ;使用DOS的2号功能调用INT 21H ;进入功能调用,输出‘3’INT 20H ;执行INT 20H中断服务程序,结束程序,返回DOS 写完回车两下,再用-g=起始地址结束地址命令回车,再用-u命令回车,用-d100可得如图1-1,然后用-e200命令空格依次输入:B2 33 B4 02 CD 21 CD 20回车,用-d200可得如图1-2,用q退出debug。
2.进入dedug,使用A命令:-a300 写入以下代码MOV AL, [0120]ADD AL, [0122]DAAMOV BY[0124],ALMOV AL, [0121]ADC AL, [0123]DAAMOV BY[0125],ALINT 20用-g命令,再-d100查看结果如图2-1,在用U命令反汇编,用Q命令退出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命令的使用一、实验说明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的使用
源程序: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 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。
⼆、实验要求1.掌握DEBUG的使⽤,调试程序。
2.读懂程序中各条指令,说明程序功能。
三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。
100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。
2.加深对指令的理解。
⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。
请编⼀程序将AX的内容和BX的内容进⾏交换。
请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。
2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。
在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。
三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。
汇编语言实验报告 20112914
合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:信息安全11-1学号:**************实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三.实验过程和程序1、启动DOS操作系统2、运行程序(若当前盘为C)C:>DEBUG↙– ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令)3、用“A”命令编辑和汇编源程序–A ↙186E:0100 MOV AX,[0200]↙186E:0103 MOV BX,[0202]↙186E:0107 ADD AX,[0204]↙186E:010B ADC BX,[0206]↙186E:010F MOV [0208],AX↙186E:0112 MOV [020A],BX↙186E:0116 ↙4、用“U”命令反汇编验证源程序–U CS:0100↙186E:0100 A10002 MOV AX,[0200]186E:0103 8B1E0202 MOV BX,[0202]186E:0107 03060402 ADD AX,[0204]186E:010B 131E0602 ADC BX,[0206]186E:010F A30802 MOV [0208],AX186E:0112 891E0A02 MOV [020A],BX186E:0116–注意:●检查源程序是否有错误,若有则返回到第3步用“A 地址”命令进行修改,直到程序无错误。
实验一 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无)
实验1debug的使用
实验1debug的使⽤实验1 DEBUG的使⽤⼀、实验⽬的:1. 熟悉DEBUG的功能,运⾏并掌握其常⽤命令。
2. 使⽤DEBUG,观察PC机执⾏汇编指令的过程,掌握寄存器的名称与内存单元地址的形成。
⼆、实验要求:1. 遵守规章制度,爱护实验室设备。
2、熟悉Debug各个命令的⽤法。
3、熟悉寄存器的名称以及物理地址的形成。
4、写出实验报告。
三、实验内容:实验1、进⼊Debug环境,完成下列步骤,熟悉DEBUG指令。
1、⽤R命令查看寄存器的值,将AX的值修改为1,BX的值修改为10。
2、⽤D命令查看内存0:0200处的内容。
3、⽤E命令将”I am a student!!”写⼊内存0:0200处。
⽤D命令查看是否写⼊成功。
4、⽤A 命令向内存0:0210处写⼊汇编指令MOV AX,1234MOV BX,0158ADD AX, BX(注意:在⼀般的PC机中,DOS⽅式下,DOS和其他合法的程序⼀般都不会使⽤0:200~0:2FF(0:200h~0:2FFh)的256 个字节的空间。
所以,我们使⽤这段空间是安全的。
)5、使⽤U命令反汇编,并⽤T命令执⾏指令,查看执⾏后的结果,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.,⽤汇编(A)、单步执⾏(T)等命令求解下列7个问题的答案,记录每条指令执⾏后AX的值并分析每条指令中源操作数使⽤的是何种寻址⽅式。
(1)MOV AX,1200H(2) MOV AX,BX(3) MOV AX,[1200H](4) MOV AX,[BX](5) MOV AX,1100[BX](6) MOV AX,[BX][SI](7) MOV AX,1100[BX][SI]实验3、⽤A命令写⼊汇编指令,使⽤寄存器、段寄存器、存储器和⽴即数等作为操作数,验证mov、add等指令的格式并得出结论。
实验一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的使用实验报告
实验一调试程序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【五、实验过程】根据实验内容,按步骤完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌理工学院实验报告
二 O 一二年月日
课程名称:微机原理与接口技术实验名称:调试程序 DEBUG 的使用
班级:姓名:同组人:
指导教师评定:签名:
【一、实验名称】
调试程序 DEBUG的使用
【二、实验目的】
1.掌握汇编程序的编辑 ,编译 ,连接和执行的全过程;
2.学习和掌握用 DEBUG 调试程序的方法。
【三、实验内容和原理】
1.用编辑软件 ,输入以下汇编语言源程序:
DATSEGMENT
ADB20;( 自定 )
BDB15;( 自定 )
YDB3DUP(0)
ZDB0,0
DATENDS STASEGMENTSTACK DW50DUP(?) STAENDS CODSEGMENT ASSUMECS:COD,DS:DAT STARPROCFAR PUSHDS
XORAX,AX
PUSHAX
MOVAX,DAT
MOVDS,AX
MOVAX,STA
MOVSS,AX
MOVAL,A
MOVZ,AL MOVZ+1,AL
CALLSUB1
MOVAL,B
MOVZ,AL
MOVZ+1,AL CALLSUB1 MOVAL,A
MOVZ,AL MOVAL,B
MOVZ+1,AL CALLSUB1 ADDWORDPTRY,AX ADCBYTEPTR[Y+2],0 RET
STARENDP SUB1PROC MOVAL,Z MOVAH,Z+1 MULAH ADDWORDPTRY,AX ADCBYTEPTR[Y+2],0 RET
SUB1ENDP CODENDS ENDSTAR
2.通过编译 ,连接形成可执行文件;
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) U 命令对目标代码反汇编 ,注意发现源程序的起始位置 ,并记录这个起始地址。
答:源程序起始地址: 1512:0000H。
(2)D 命令观察数据区在内存中的具体内容,记录单元 A 和 B 的具体地址。
答: 150A:0000H 是 A 的具体地址, 150A:0001H 是 B 的具体地址。
(3)T 命令作单步跟踪调试 .比较每条指令执行后的结果和原来的理解是否一致。
得
出程序运行的结果 :它们是写在什么单元 ,具体内容是什么,并判断结果是否正
确。
答:由于单步调试的结果较多,在这里仅说几项以示情况。
①PUSHAX 后观察得到 IP 值自加 2。
②MOVDS,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 调试程序的方法,了解了另一种程序语言的编写。
感觉它比其他高级语言确实要复杂,但是能更一步体会计算机是如何操作
的。