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

合集下载

汇编语言(王爽第三版)实验5编写、调试具体多个段的程序

汇编语言(王爽第三版)实验5编写、调试具体多个段的程序

汇编语⾔(王爽第三版)实验5编写、调试具体多个段的程序实验5 编写、调试具体多个段的程序⼀。

将下⾯的程序编译连接,⽤Debug加载、跟踪,然后回答问题。

assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcode endsend start程序分析:由于是初次接触,我们逐步讲解,废话多点。

(1)此程序考察的是内存中数据段和栈段的定义。

程序共定义了1个数据段,data段,⾸先明确,在程序运⾏开始(标号start处),这个数据段就已经被定义好了,并且分配了内存空间,并赋值了。

⼀个栈段,stack。

同理这个数据段在没有被⼈⼯定义为栈结构时,也被定义好了。

并且分配了内存空间,并赋值了。

将此程序编译并连接后,使⽤debug调试,(这⾥需要注意,以下的段地址可能由于系统不同⽽有差异,主要是理解概念。

)E:\assembly>debug eee.exe-rAX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B55 ES=0B55 SS=0B65 CS=0B67 IP=0000 NV UP EI PL NZ NA PO NC0B67:0000 B8660B MOV AX,0B66程序分析:我们什么也没执⾏,此时我们在data段定义的数据在哪?在ds:0100H处(原来讲过,程序最开始时ds:00~ds:100H是留给程序与操作系统通讯使⽤的psp内存段,参见书中p92);也就是说我们在ds:100H、0B55:100H或0B65:00处可以看见这些定义的数据。

汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和DEBUG的使用一、实验目的1.熟悉汇编语言源程序书写格式。

2.熟悉汇编语言源程序编辑、汇编、连接、执行步骤。

3.练习DEBUG常用命令的使用。

4.熟悉8086的寄存器。

5.了解程序的执行过程。

二、实验预习要求1、认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立、汇编、连接、执行、调试的全过程。

2.预习使用DEBUG 检查/修改寄存器内容、查询存储器内容的命令。

3.预习使用DEBUG单步、断点及连续执行程序的命令。

三、实验内容1.编辑以下程序,汇编连接后运行,将输出'HOW ARE YOU?’。

本习题主要目的:熟悉汇编语言源程序的书写格式;熟悉汇编语言源程序的编辑、汇编、连接、运行。

DA TA SEGMENTBUF DB 'HOW ARE YOU?$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START2.DEBUG 调试以下程序,查看DATA段中定义的数据在内存中的存放方式,并单步执行查看每一语句执行后相关寄存器的内容,并解释为何取该值:DA TA SEGMENT ;(1)DB 34H,12H ;(2)B DW 1234H ;(3)C DD 0 ;(4)D DB -1,15/3 ;(5)E DB '012' ;(6)F DW 'AB','C' ;(7)G DW ? ;(8)H DB 5 DUP(0) ;(9)I DW $-OFFSET H ;(10)DA TA ENDS ;(11)CODE SEGMENT ;(12)ASSUME CS:CODE,DS:DA TA ;(13)START: MOV AX,CODE ;(14)MOV DS,AX ;(15)MOV BX,SEG A ;(16)MOV CX,OFFSET B ;(17)MOV DX,TYPE C ;(18)MOV AH,4CH ;(19)INT 21H ;(20)CODE ENDS ;(21)END START ;(22)3.下面是第1题采用将主程序定义为远程的程序返回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 命令可察看。

附录六X86汇编语言程序调试工具DEBUG的使用

附录六X86汇编语言程序调试工具DEBUG的使用

附录七 X86汇编语言程序调试工具 DEBUG 使用简介DEBUG是DOS系统下的程序调试工具,以DOS外部命令形式提供。

该外部命令对应的文件名为DEBUG.EXE,一般存放在DOS子目录下。

运行DEBUG程序的命令格式为:DEBUG [<驱动器名>:][<路径>][<文件名>[.<扩展名>]][<参数1>][<参数2>] < 回车> 例如:C:\DOS>DEBUG A.EXE < 回车>进入DEBUG后出现提示符“-”,就表示可以接受DEBUG命令了。

DEBUG命令使用说明:1)DEBUG命令是在提示符“-”之后,由键盘键入。

2)每条命令以单个字母的命令符开头,然后是命令操作参数。

3)操作参数与命令符之间用空格隔开,操作参数之间用空格或逗号隔开。

4)所用数均为十六进制数,不必加写H。

5)命令结束符是回车键<Enter>(在下面的命令格式中,不再单独标出)。

按组合键Ctrl+Break可中止正在执行的DEBUG命令,并返回提示符“—”。

常用命令介绍如下(以下有下划线处表示是从键盘输入的内容):告警:使用以下关于修改内存的命令A、E、F、M等,应注意内存地址(包括段基值和偏移地址)的准确性。

错误地更新了系统程序区,可能会造成死机!写磁盘的DEBUG命令(本文未列出)更应慎重使用!1.DEBUG命令列表—?屏幕显示DEBUG命令列表。

2.返回DOS命令Q(Quit)—Q退出DEBUG程序并返回DOS。

注意此命令不能将内存中的文件存盘。

3.显示内存单元内容命令D(Dump)—D[地址或范围]其中“范围”包括起始地址和结束地址,可以在地址前加段前缀。

例如:—D1366:110 11F屏幕显示为1366:0110 24 09 7E 21 00 00 00 00-34 00 00 00 00 00 55 13 $.~ !....4.....U.上面分左、中、右三部分显示:左边部分1366:0110是内存单元地址,中间及右边部分分别是1366:0110至1366:011F内存单元内容的16进制数表示及ASCII字符(“.”表示非ASCII码的数字)。

汇编语言学习手把手的Debug教程

汇编语言学习手把手的Debug教程

汇编语⾔学习⼿把⼿的Debug教程⽬录Debug 是什么Debug 实战Debug -rDebug -dDebug -eDebug -uDebug -tDebug -a总结关于汇编的第⼀篇⽂章:Hello⼤家好,我是程序员cxuan!我们上篇⽂章了解了⼀下基本的寄存器,这篇⽂章我们来进⾏实际操作⼀下。

我们以后将会⽤到很多 Debug 命令,这⾥我们先来熟悉⼀下它们。

Debug 是什么Debug 是 Windows / Dos 操作系统提供的⼀种功能。

使⽤ Debug 能让我们⽅便查看 CPU 各种寄存器的值、内存情况,⽅便我们调试指令、跟踪程序的运⾏过程。

接下来我们会⽤到很多 debug 命令,但是使⽤这些命令的前提是,你需要在电脑上安装⼀下 debug,Windows/Mac 都可以安装,获取链接我已经给你找出来了。

阿,忘记说了,我们这⾥使⽤的是 Dos box来模拟汇编的操作环境。

下载完成后打开 DosBox ,打开之后是这样的。

此时我们输⼊ debug 命令应该提⽰的是因为我们还没有进⾏连接和挂载,此时我们执⾏mount c D:\debug执⾏这条命令时,你需要现在 D 盘下创建⼀个 debug ⽂件夹,然后我们挂载到 debug 下⾯。

并且执⾏C:切换到 C 盘路径下。

此时我们就可以执⾏ debug 命令了。

这⾥需要注意⼀点,我在 Windows 10 系统下搭建 Debug 环境时,在挂载完成后输⼊ debug ,还是提⽰ Illegal command:debug ,此时你需要再下载⼀个 debug.exe ,贴⼼的我也把下载地址给你了。

需要下载⾥⾯的 debug.exe,然后把它放在你挂载的路径下,这⾥我挂载的路径时 D 盘下的 debug ⽂件夹。

放置完成之后,再输⼊ debug 就可以了。

因为每次打开 Dosbox 都会执⾏上⾯这些命令,真的好烦,那怎么办呢?⼀个简单的办法是在 Dosbox 安装路径下找到打开之后,在末尾键⼊就 OK 了,下次直接打开 Dosbox ,会默认执⾏这三条命令,⾄此,就是我搭建 Dosbox 遇到的所有问题了。

dos汇编debug基本命令程序

dos汇编debug基本命令程序

dos汇编debug基本命令程序DOS汇编(Debug)基本命令程序在学习和编写DOS汇编语言程序时,了解和掌握调试程序是非常重要的。

DOS提供了一个非常有用的调试器,即Debug。

Debug是一个基本的汇编语言调试程序,它可以让程序员在运行程序时进行单步执行,查看寄存器和内存的内容,以及进行程序的调试和错误修复。

本文将介绍DOS汇编(Debug)基本命令程序。

一、启动Debug要启动Debug,可以在DOS命令提示符下输入"debug"命令,然后按Enter键。

此时,会显示Debug的提示符"-",表示Debug 已经启动。

二、基本命令Debug提供了一系列命令,用于执行和调试汇编语言程序。

下面是一些常用的基本命令:1. a(assemble):将汇编指令翻译成机器码,并将其写入内存中。

例如,输入"a 100"表示从内存地址100开始输入汇编指令。

2. d(dump):显示内存中的内容。

可以使用"d"命令来查看内存中的指令和数据。

例如,输入"d 100"表示从内存地址100开始显示内存内容。

3. e(enter):修改内存中的指令或数据。

可以使用"e"命令来修改内存中的指令或数据。

例如,输入"e 100"表示修改内存地址100处的内容。

4. g(go):执行程序。

使用"g"命令可以让程序开始执行。

例如,输入"g"表示开始执行程序。

5. r(register):显示和修改寄存器的内容。

可以使用"r"命令来查看和修改寄存器的内容。

例如,输入"r ax"表示显示或修改AX寄存器的内容。

6. t(trace):单步执行程序。

使用"t"命令可以让程序以单步执行的方式运行。

实验一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浅析

第29卷第6期2008年12月衡阳师范学院学报Jo ur nal of Hengya ng Normal Univer sity No.6Vol.29Dec .2008汇编语言程序调试工具D EBUG 浅析龙祖强1,2,梁昔明2,杨利容1(11衡阳师范学院物理与电子科学系,湖南衡阳 421008;21中南大学信息科学与工程学院,湖南长沙 410083)摘 要:D E BU G 是汇编语言程序的重要调试工具,也是学好汇编语言的难点之一。

本文探讨了DE B U G 在寄存器、内存、堆栈以及指令等教学内容中的重要作用,阐述了利用DE B U G 调试程序的方法,以帮助学生利用这一工具学好和用好汇编语言。

关键词:DE BU G;汇编语言;寄存器;堆栈中图分类号:TP273+14文献标识码:A文章编号:1673—0313(2008)06—0033—031 引 言汇编语言是计算机提供给用户的最快最有效的语言,也是能够利用硬件特性并能直接控制硬件的唯一语言。

在对于存储空间有限和时间要求很高的场合,汇编语言是必不可少的。

因此,许多高校的计算机及相关专业均开设了“汇编语言程序设计”这门课。

在以往的教学过程中,学生普遍反映这门课难学,教师也感觉难教。

造成这一现象的一个主要原因就是,汇编语言的调试工具D E BU G 不容易使用,观察结果不直观且容易出现误读误判。

但是,学会使用DEBU G 是我们学会汇编语言的关键一步,我们不能因为它难以掌握就抛弃它。

如果抛开它直接学习汇编语言,则会走许多弯路;如果利用好这个工具,我们就能比较容易进入汇编语言程序设计的大门。

D E BU G 是DOS 中的一个外部命令,从DOS1.0起就带有此命令,因此可见此命令的重要性了。

此命令的功能非常强大,可以解决许多问题。

它既可以帮助我们看见汇编语言里很多抽象的东西,也可以帮助我们练习汇编指令,还可以帮助我们调试编写的汇编程序等。

可见,有了它,我们学习汇编语言就事半功倍了。

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

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

二.实验容
1.进入和退出DEBUG程序;
1)开始—运行,输入cmd,点确定进入命令窗口
2)在命令窗口中输入dubug进入debug程序
3)进入debug窗口后,输入q命令退出debug
2.学会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命令可察看。

①E 地址;从指定地址开始,修改(或连续修改)存储单元容。

DEBUG首先显示指定单元容,如要修改,可输入新数据;空格键显示下一个单元容并可修改,减号键显示上一个单元容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。

②E 地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。

-E DS:100 F3 ‘AB’ 8D ; 把DS段中0100H开始的四个字节修改为F3 ‘AB’(A 和B的ASCII码) 8D
也可以按下面的方式实现
3)R命令(显示当前寄存器的容)
显示修改寄存器命令R
R;★显示所有寄存器和标志位状态;
★显示当前CS:IP指向的指令。

显示标志时使用的符号:
标志标志=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
4)T命令(设置陷井,单步执行)
①T;从当前IP开始执行一条指令。

②T 数值;从当前IP开始执行多条指令, 数值:执行的指令条数。

②T =地址;从给定的地址执行一条指令
③T =地址数值;从给定的地址执行多条指令, 数值:执行的指令条数.
-T ; 从当前IP开始执行一条指令
-T5 ; 从当前IP开始执行5条指令
-T=100 5 ; 从当前0100H开始执行5条指令
5)A命令(将指令直接汇编成机器码输入到存中。


汇编命令A
A [地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP开始(通常是CS:100)。

注释:
①在DEBUG下编写简单程序即使用A命令。

②每条指令后要按回车。

③不输入指令按回车,或按Ctrl+C结束汇编。

④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。

使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al
单步执行上述指令
6)G命令等的使用(执行A命中输入的汇编指令)
运行程序命令G
①G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。

②G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。

③G 断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。

④G=地址断点1[,断点2,…断点10]
-G ;从CS:IP指向的指令开始执行程序。

-G=100 ;从指定地址开始执行程序。

-G=100 105 110 120
使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al int 3
然后使用g命令执行
上面的例子设断点在100H处然后用T命令单步执行
3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

7)命名命令N
格式:N文件标志符1[,文件标志符2]
文件标志符是包含路径的文件全名。

8)写盘命令W 把主存容保存到磁盘
三.实验要求
1.仔细阅读有关DEBUG命令的容,对有关命令,要求事先准备好使用的例子;四.实验环境
PC微机
DOS操作系统或Windows 操作系统
MASM.EXE,LINK.EXE,或宏汇编集成环境
五.实验步骤
1.在DOS提示符下,进入DEBUG程序;
2.在DOS目录下启动DEBUG;
3.详细记录每一步所用的命令,以及查看结果的方法和具体结果。

六.实验报告要求
1.如何启动和退出DEBUG程序;
2.整理每个DEBUG命令使用的方法,实际示例及执行结果。

七.思考题
启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?。

相关文档
最新文档