汇编语言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简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。

在汇编语言程序调试中很常用。

DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。

DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。

DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。

(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。

2、Debug的调入和退出以WIN2000环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态:C:\Documents and Settings\lfy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。

退出Debug的命令:Q3、Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。

若不指定地址,则系统从默认的地址开始存放。

按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。

(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。

若未指定寄存器,则默认为显示所有寄存器的内容。

应用:常用于通过寄存器的值查看指令的执行结果。

(3)内存单元内容的命令E,格式为:- E 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。

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

总汇编实验二用DEBUG程序调试程序功能段实验二主要是通过使用DEBUG程序调试汇编语言编写的程序功能段。

DEBUG是一个在DOS操作系统下的调试工具,它可以用来查看和修改内存中的程序和数据。

通过DEBUG,我们可以逐条执行程序功能段的指令,并观察其执行过程中的变化。

这有助于我们理解程序的运行原理,找出其中的错误,并进行调试和修复。

DEBUG程序的基本功能如下:1.查看内存中的程序和数据:DEBUG可以通过指定内存地址来查看内存中的内容。

我们可以使用d命令来显示指定地址范围内的内存内容。

这在调试程序时很有用,可以帮助我们检查变量的值是否正确。

2.修改内存中的程序和数据:DEBUG可以让我们修改内存中的程序和数据,从而实现调试和修复程序的功能。

我们可以使用e命令来修改指定地址处的内存内容。

3.单步执行程序:DEBUG可以将程序的执行过程分解为单条指令的执行,从而帮助我们逐步查看程序的执行情况。

我们可以使用t命令来单步执行程序。

4.中断程序的执行:DEBUG可以在程序执行过程中暂停执行,从而方便我们进行调试。

我们可以使用p命令来中断程序的执行。

5.显示寄存器的值:DEBUG可以显示CPU寄存器的值。

我们可以使用r命令来查看和修改寄存器的值。

这对于调试程序时检查寄存器的值非常有用。

6.显示和修改标志位:DEBUG可以显示和修改CPU的标志位。

我们可以使用f命令来查看和修改标志位的值。

这对于调试程序时检查标志位的值非常有用。

总而言之,DEBUG程序是一个功能强大的调试工具,可以帮助我们调试汇编语言程序的功能段。

通过它,我们可以查看和修改内存中的程序和数据,单步执行程序,中断程序的执行等等。

这些功能可以帮助我们找出程序中的错误,并进行调试和修复。

附录六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码的数字)。

DoxBox环境汇编的Debug调试以及相关知识

DoxBox环境汇编的Debug调试以及相关知识

DoxBox环境汇编的Debug调试以及相关知识DoxBox中使⽤Debug程序进⾏汇编调试以及编码Debug基本功能介绍R命令,查看改变CPU寄存器的内容点击查看D命令,查看内存中的内容点击查看E命令,改写内存中的内容点击查看U命令,将内存单元中的内容翻译为汇编指令,并显⽰出来点击查看T命令,执⾏⼀条机器指令A命令,以汇编指令的格式在内存中写⼊⼀条机器指令点击查看编译,链接先编译,后链接。

masm 源程序⽂件名.asm; //注意,分号打⼀下,直接跳过⼀些选择masm源程序后会⽣成OBJ⽂件,我们需要将OBJ⽂件链接成为EXE⽂件link 源程序⽂件名.obj; //分号打⼀下link之后就会⽣成EXE⽂件,我们直接使⽤debug ⽂件名.exe 或者直接在命令⾏中输⼊⽂件名即可运⾏尝试修改ROM内容PC机主板上的ROM中有⼀个⽣产时期,在内存FFF00H~FFFFFH的某⼏个单元中,请找到这个时期,并试图修改它第⼀步使⽤debug程序中的D命令找出时期可以看到时间是1992年1⽉1⽇,30年前。

尝试修改ROM内存单元的内容可以看到执⾏修改命令后并没有变化。

这是因为ROM(Read-Only Memory)内存是只读内存,不能修改。

使⽤E命令向内存单元填写数据在debug中,使⽤E命令,向内存单元填写数据。

结果如下-e b800:0 03 04 03 04 03 04 03 04 03 04在debug中,使⽤F命令,向内存单元批量填写数据。

-f b800:0f00 0f9f 03 04结果如下栈的使⽤已知内存单元00201H ~ 00207H分别存放数据(如下图所⽰),00220H ~ 0022fH⽤作栈空间。

在debug环境中,按顺序录⼊以下内容,单步跟踪调试,观察寄存器和内存空间00200H~00207H,以及,栈空间00220 ~ 0022fH内容变化情况。

记录实验结果。

回答问题,验证和你的理论分析结果是否⼀致。

汇编语言调试DEBUG命令详解

汇编语言调试DEBUG命令详解

汇编语言调试DEBUG命令详解1、显示命令D① D [地址]② D [范围]如不指定范围,一次显示8行×16个字节。

-D ;默认段寄存器为DS,当前偏移地址-D DS:100 / -D CS:200-D 200:100-D 200;200为偏移地址,默认段寄存器DS-D DS:100 110/ -D 100 L 102.修改命令E① E 地址;从指定地址开始,修改(或连续修改)存储单元内容。

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

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

-E DS:100 F3 ‘AB’ 8D。

3.添充命令FF 范围数据表;将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。

-F DS:0 L5 01,02,03,04,05-F DS:0 L5 01 02 03 04 05(空格分隔)-F DS:0 L5 FF ;5个字节重复使用FF4.显示修改寄存器命令RR;★显示所有寄存器和标志位状态;★显示当前CS:IP指向的指令。

显示标志时使用的符号:标志标志=1 标志=0OF OV NVDF DN UPIF EI DISF NG PLZF ZR NZAF AC NAPF PE POCF CY NC5.汇编命令AA [地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。

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

②每条指令后要按回车。

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

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

6.反汇编命令U① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。

汇编语言实验debug

汇编语言实验debug

使用DEBUG DEBUG调试工具 实验 使用DEBUG调试工具
3.显示内存命令D 3.显示内存命令D 显示内存命令 D命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 0000:0000H 元的内容 查看1000:0(即物理地址10000H) 1000:0(即物理地址10000H)处的内容 -d 1000:0 查看1000:0(即物理地址10000H)处的内容 查看1000:9(即物理地址10009H)处的内容。 1000:9(即物理地址 处的内容。 -d 1000:9 查看1000:9(即物理地址 处的内容 查看1000:0 1000:C的内容 1000:0-d 1000:0 C 查看1000:0-1000:C的内容 注意: 注意: • 可指定段寄存器:-d CS:100 10F 可指定段寄存器: • 不指定段寄存器时默认显示数据段内容 • 若只指定首地址,则显示从首地址开始的128个字节:-d 100 若只指定首地址,则显示从首地址开始的128个字节: 128个字节 • 可以不指定任何地址,会显示下一组128字节内容 可以不指定任何地址,会显示下一组128 128字节内容
使用DEBUG DEBUG调试工具 实验 使用DEBUG调试工具
四、常用DEBUG命令 常用DEBUG命令 DEBUG
命令查看、改变CPU寄存器的内容; CPU寄存器的内容 1. 用R命令查看、改变CPU寄存器的内容; 命令将内存中的机器指令翻译成汇编指令; 2. 用U命令将内存中的机器指令翻译成汇编指令; 命令查看内存中的内容; 3. 用D命令查看内存中的内容; 命令改写内存中的内容; 4. 用E命令改写内存中的内容; 5. 用T命令执行一条机器指令 6. 用G命令运行至断点处 7. 用A命令以汇编指令的格式在内存中写入机器指令 8. 用C命令进行内存区域比较

汇编语言课程2_调试程序DEBUG

汇编语言课程2_调试程序DEBUG
R命令
12




DEBUG
② R 寄存器名;显示并修改指定的寄存器. 寄存器名;显示并修改指定的寄存器. RIP;RF等 RAX ;RIP;RF等 5.汇编命令 汇编命令A 5.汇编命令A [地址 地址] 从指定的地址开始输入符号指令; A [地址];从指定的地址开始输入符号指令; 如省略地址,则接着上一个A 如省略地址,则接着上一个A命令的最后一个单元开 若第一次使用A命令省略地址,则从当前CS:IP 始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS 100). CS: 开始(通常是CS:100). 注释: DEBUG下编写简单程序即使用 命令. 下编写简单程序即使用A 注释:①在DEBUG下编写简单程序即使用A命令. 每条指令后要按回车. ②每条指令后要按回车. 不输入指令按回车,或按Ctrl+C结束汇编. Ctrl+C结束汇编 ③不输入指令按回车,或按Ctrl+C结束汇编. 支持所有8086符号硬指令,伪指令只支持DB 8086符号硬指令 DB, ④支持所有8086符号硬指令,伪指令只支持DB, DW,不支持各类符号名. DW,不支持各类符号名.
参数格式2
7




DEBUG
命 令 索 引
D命令 U命令 N命令 S命令 E命令 G命令 L命令 I命令 F命令 T命令 W命令 O命令 R命令 P命令 C命令 M命令 A命令 Q命令 H命令
命令索引
8




DEBUG
§3.DEBUG命令 3.DEBUG命令 1.显示命令D 1.显示命令D 显示命令 [地址 地址] ① D [地址] [范围 范围] ② D [范围] ;如不指定范围,一次显示8行×16个字节. 如不指定范围,一次显示8 16个字节. 个字节 -D ;默认段寄存器为 ,当前偏移地址 默认段寄存器为DS, -D DS:100 /-D CS:200 /- -D 200:100 200;200为偏移地址 默认段寄存器DS 为偏移地址, -D 200;200为偏移地址,默认段寄存器DS -D DS:100 110/ -D 100 L 10

汇编语言debug调试

汇编语言debug调试

功能:反汇编命令
格式:
(1) –U [指令地址]
执行:从指定地址开始,反汇编32个字节;若未指定地 址,则从上一个U命令的最后一条指令的下一个单元开 始显示32个字节 (2) –U [开始地址] [终止地址]
执行:从指定的开始地址开始反汇编,到终止地址结束
<上机实践>
9.“ N ” 命令
功能:给输入的汇编程序命名 格式: -N [D:][PATH] FILENAME[.EXE] 说明:如果启动DEBUG程序没有指定文件说明,那么在 用LOAD命令装入文件之前必须先使用N命令
DEBUG调试程序
DEBUG调试程序
一.DEBUG与汇编程序 要在IBM PC机上运行简短的汇编语言程序有两 种方法: 1.用汇编程序ASM或与之类似但更先进的MASM,人们 通常用这两个汇编程序中某一个来对汇编语言程序 进行汇编(转换为机器语言程序). 2.使用另一个不同的程序,称之为DEBUG.DEBUG不是 真正的汇编程序它的主要用途是用于“调试”(即 修改程序中的错误)汇编语言程序.但也可用DEBUG 来汇编简单的汇编语言程序.
7.“ G ” 命令
功能: 运行命令
格式: -G [运行的起始地址] [断点地址] [断点地址]… 执行:若没有指定任何地址,则从当前的CS:IP地址处 开始运行程序;若指定地址,则从起始地址开始运行, 在断点地址处停止,并显示所有寄存器及标志位内容, 和下一条要执行的指令. <上机实践>
8.“ U ” 命令
<上机实践>
5.“ A ” 命令
功能:汇编命令
格式:
-A [开始存放指令的地址] 可以键入汇编语言语句,并能把它汇编成机器代 码,相继放入从指定地址开始的存储器中. <上机实践>

汇编语言---debug调试串操作指令

汇编语言---debug调试串操作指令
– 终端上显示输出 – Debug调试 Debug调试
5
debug调试程序步骤:
1 2 3 4 >Debug movs.exe -u 确定断点 G 断点地址
6
说明: 说明:
1 进入debug并装入要调试的可执行程 进入debug并装入要调试的可执行程 序 U命令反汇编程序 确定断点偏移地址
– rep movsb指令完成后,选择下一条指令 movsb指令完成后,选择下一条指令 的偏移地址为断点
2
⒈串传送指令MOVSB/MOVSW 串传送指令MOVS /MOVSW MOVSB
该指令执行的操作为: ((ES):(DI))←((DS):(SI)) ((ES):(DI))←((DS):(SI)) 也可:MOVS 也可:MOVS DST,SRC 但要求: ①SRC用DS:SI寻址,DST用ES:DI寻址 SRC用DS:SI寻址,DST用ES:DI寻址 ②传送是字节还是字,决定两个操作数的 传送是字节还是字 定义类型. 定义类型. 不能 MOVSB DST,SRC 本指令不影响标志位
G命令启动程序,同时设定断点
7
确定断点偏移地址 执行程序到地址18
9
10
11
12
LEA si,source_BUF LEA di,dest_BUF cld mov cx,40 rep movsb ret CODE ENDS END START
4
debug调试
建立exe文件后,就可以直接执行 建立exe文件后,就可以直接执行 但是程序运行结束返回DOS 但是程序运行结束返回DOS 看结果
3
DATA SEGMENT source_BUF DB 40 dup('a') DATA ENDS extra SEGMENT dest_BUF DB 40 dup(?) extra ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:extra START: MOV AX,DATA MOV DS,AX MOV MOV AX,extra ES,AX

实验一汇编语言上机及Debug调试

实验一汇编语言上机及Debug调试

实验一汇编语言程序上机过程以及调试(1)一、预习内容1.工具软件MASM、LINK的使用2.常用DEBUG命令的使用: G,D,R,T,U,Q3.完整程序设计方法的格式。

二、目的要求1.掌握常用工具软件MASM、LINK的使用2.掌握常用DEBUG命令: G,D,R,T,U,Q 能灵活使用这些命令调试程序3.掌握完整程序设计方法的格式,能正确书写数据段,代码段等。

三、实验内容比较两个字符串string1和string2所含的字符是否相同,如果相同则显示’Match'否则显示’No match’.请读程序,并将程序补充完整。

DSEG SEGMENTstring1 db 'Move the cursor backward.'string2 db 'Move the cursor backward.'mess1 db 'Match.',13,10,'$'mess2 db 'No match.',13,10,'$'DSEG ENDSCSEG SEGMENTassume cs:CSEG, ds:DSEG, es:DSEG,MAIN PROC FARstart: mov ax, dsegmov ds, axmov es, axlea si ,string1①cld②repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx,mess1disp: mov ah,09hint 21hmov ax, 4c00hint 21hMAIN ENDPCSEG ENDSend start实验步骤:1)用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在d:\masm下,注意保存时将文件扩展名改为.asm(如test1.asm)。

2)屏幕左下角”开始”–“运行”输入cmd ,进入dos命令操作,先用d: 和cd mas m 命令改变路经,接着用”masm + 文件名” (如masm test1,这里文件名可以不带扩展名)对源文件进行汇编,产生.obj文件和.LST文件。

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

汇编实验-DEBUG 调试程序的使用-
2016──2017学年第二学期
实验课程
汇编语言程序设计
学生姓名
实验项目
DEBUG调试程序的使用
学院
计算机科学技术学院
实验性质
验证性实验
班级学号
实验地点
同组人数
第13组
实验日期
第周星期第节
成绩
环境参数
DOSBox 0.74
1、实验目的及要求
1.学习使用DEBUG程序的各种命令。
2.利用DEBUG学习了解计算机取指令、执行指令的工作过程。
4、向内存从B8100H开始的单元中填写数据,如:
-e b810:0000 01 01 02 02 03 03 04 04
3、实验仪器设备及材料
Windows系统和DOSBox 0.74。
4、操作方法与实验步骤
2
2.(1)
2.(2)
01寄存器寻址
02寄存器寻址
03立即数寻址
04直接寻址
06寄存器间接寻址
我希望可以在将来的学习当中能进一步加深对汇编语言编程的理解。
仪器设备损坏、非正常损耗材料(试剂)及处理情况:
教师对报告的最终评价及处理意见:
教师签字:
年月日
XXXX:011FINT 20
(1)用D命令显示XXXX:0200---XXXX:0203单元内容。
(2)指出以上汇编语言指令中源操作数使用的是什么寻址方式?
(3)用T命令单步跟踪,观察指令的执行结果,并记录。
3、查看内存单元内容,pc机主板上的ROM中写有一个生产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。
08立即数寻址
09基址变址寻址
10立即数寻址

实验二-汇编语言动态调试程序Debug的使用

实验二-汇编语言动态调试程序Debug的使用

实验二 Debug的使用(基础与验证型)一、实验要求和目的熟练掌握动态调试程序DEBUG的使用;二、软硬件环境1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2、软件环境:装有MASM 5.0、Debug、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。

三、实验涉及的主要知识单元通过编辑、汇编和连接后的程序是可以执行的程序。

但是,一个程序特别是比较复杂的程序不能保证没有一点错误。

因此,在投入正式运行前必须进行调试,以检查程序的正确性。

调试程序Debug就是用来调试汇编语言程序的一种工具。

Debug的主要功能有显示和修改寄存器及内存单元的内容;按指定位置启动并运行程序;设置断点使程序分段运行,以便检查程序运行过程中的中间结果或确定程序出错的位置;反汇编被调试程序,它将一个可执行文件中的指令机器码反汇编成助记符指令并同时给出指令所在的内存位置;单条追踪或多条追踪被调试程序,它可以逐条指令执行或几条指令执行被调试程序,每执行一条(或几条)指令后,Debug程序将中断程序的运行并提供有关结果信息;汇编一段程序,在Debug的汇编命令下可以直接输入助记符指令,并将其汇编成可运行程序段。

此外,Debug还可以将磁盘指定区的内容或一个文件装入到内存或将内存的信息写到磁盘上等等。

启动Debug程序:在DOS状态下可以用下面的命令启动Debug程序:DEBUG [路径文件名.扩展名]Debug后面的文件名及路径是指被调试程序的文件名及路径,Debug后面的文件必须是程序的可执行文件,其扩展名可以是.EXE 或aaa。

在此命令后,DOS将调试程序Debug调入内存,Debug接着将被调程序送入内存。

比如:DEBUG 123.EXE调试程序Debug的主要命令如下:(一)显示内存单元内容的命令D格式(1):-D 位置从指定位置开始,显示128个字节的内容,每一行的左边显示段内偏移位置,接着显示16个单元的内容,最右边区域则显示这一行的16个单元所对应的可显示的字符。

汇编_DEBUG的使用

汇编_DEBUG的使用

汇编_DEBUG的使用汇编语言是一种低级语言,它与机器语言非常接近,每一个汇编语言的指令几乎都对应着一条机器指令。

因此,了解并掌握汇编语言对于理解计算机内部工作原理以及进行底层编程是非常有帮助的。

下面,我将详细介绍DEBUG的使用方法和功能。

1.DEBUG的启动和退出:在DOS命令行下输入DEBUG命令,即可启动DEBUG。

DEBUG启动后,会显示一个短横线"-”,表示等待执行命令。

在DEBUG中输入"q"命令,即可退出DEBUG。

2.DEBUG的命令格式和常用命令:-a:将键盘输入的ASCII码写入指定地址-d:显示内存中的指定地址的内容-e:修改内存中的指定地址的内容-g:从指定地址开始执行程序-r:查看和修改寄存器的值-t:查看和修改标志寄存器的值-u:以汇编代码的格式显示内存中的指令-w:将内存中的内容写入指定文件-n:加载并执行指定文件-i:打印当前的执行指令-f:在段间切换3.DEBUG的常用调试操作:- 通过“d”命令查看内存中的指令和数据内容,可以使用不同的参数来控制显示格式,如"d 100"表示从100H地址处开始显示,"d cs:100"表示从CS:100H地址处开始显示。

-通过“e”命令修改内存中的指令和数据内容。

- 通过“r”命令查看和修改寄存器的值,如"r ax"表示查看和修改AX寄存器的值。

-通过“u”命令以汇编代码的格式显示内存中的指令。

-通过“g”命令从指定地址开始执行程序。

-通过“n”命令加载并执行指定的二进制文件。

4.示例:下面给出一个使用DEBUG调试的示例过程:-启动DEBUG,进入DEBUG命令行界面。

-使用“n”命令加载一个二进制文件。

-使用“d”命令查看内存中的指令和数据,以及寄存器的值。

-使用“e”命令修改内存中的指令和数据。

-使用“g”命令执行程序。

-使用“r”命令查看和修改寄存器的值。

汇编语言程序调试及工具软件DEBUG

汇编语言程序调试及工具软件DEBUG

15
15、S检索 格式:S 起始地址 结束地址 值表 S 起始地址 L字节数 值表 功能:在指定内存范围内检索值表指定的字符,如果找到,则显示 检索到的单元地址;如果没找到,则显示提示符。 例: 设内存DS:0000H开始存入1,2,3, ‘A’ , ‘B’ , ‘A’ , ‘B’ 要求检索字符‘A’ , ‘B’ , ‘F’ -SDS:0 06 A 1542:0003 1542:0005 -SDS:0 06 B 1542:0004 1542:0006 -SDS:0 06 F -
通过调试工具检查功能的正确性。
2
二、调试工具软件DEBUG
1、简介 面向汇编语言的动态调试工具,有19条命令。 通过跟踪、测试对.EXE和.COM文件动态跟踪调试。 查找文件中的错误及运行结果。 可以直接编写、调试小程序。 2、DEBUG的启动方式
(1)在DOS状态下直接输入
C:DEBUG ADD.EXE (2)在DOS状态下输入 C:DEBUG -NADD.EXE -L
17
16
16、C比较 格式:C 起始地址 结束地址 目的地址 C 起始地址 L字节数 目的地址 功能:比较两个数据块内容,如果不相同,则显示其内容和地址。 默认为数据段,目的地址只包含偏移地址。 例:把ES:0开始的10个字节内容与DS:100H开始的区域进行比较, 找出与之不同的内容。 -CES:0 LA DS:100 执行结果: 82DD:0000 03 2D 82CD:100 82DD:0002 00 02 82CD:102 82DD:0003 05 09 82CD:103 82DD:0008 04 66 82CD:108 17、Q退出 格式:-Q 功能:退出DEBUG命令。
9
例2:从CS:0004开始执行3条指令。 -T=4 3

汇编语言调试程序DEBUG的练习

汇编语言调试程序DEBUG的练习

汇编语言调试程序DEBUG的练习一、实验目的1、学习使用DEBUG程序的各种命令。

2、利用DEBUG学习8086指令系统。

二、实验任务1、参照说明,掌握DEBUG程序的各种命令,重点是命令R,D,A,U,T,P,G命令的使用。

2、用命令A汇编下列指令,判断指令正误并说明原因。

(1)ROR AX,8;错误,因为ROR指令的源操作数只能是数字1或是CL。

(2)LEA DI,[AX];错误,因为LEA指令的目的操作数不能是DI。

(3)MOV DS,2010;错误,因为段寄存器和立即数不能在MOV指令间传。

(4)PUSH AL;错误,因为PUSH指令的目的操作数只能是通用寄存器或是内存。

(5)OUT 900,AL;错误,因为900已经超过了8位二进制数的范围。

(6)MOV [BX],0;错误,因为内存和立即数之间的类型没有确定。

3、练习使用汇编命令1)利用加法指令求3+52)利用乘法指令求3*53)利用算术运算指令求3的补码4)学习使用逻辑运算指令。

求5和17相与、相或的结果。

5)利用不同移位指令将10011111右移3位,查看结果,并比较不同点。

三、实验设备PC机一台四、实验步骤1、实现3加5:2、实现3*5:3、实现求3的补码:4、实现5和17相与:对实验一的说明下面所有操作均在DOS状态下进行。

DEBUG.EXE是DOS操作系统提供的一个调试汇编语言程序的工具程序。

其主要功能为:▪可动态调试汇编语言程序;▪可检查或修改CPU各寄存器、标志及内存单元的内容;▪可输入汇编指令到指定的内存;▪可把要调试的程序(通常以可执行文件形式存储在磁盘上)调入到内存中,控制CPU按单步、设置断点等方式执行程序,检查程序运行过程中的中间结果,以便寻找程序出错的原因。

一、进入DEBUGC:\MASM>DEBUG二、常用DEBUG 命令1、DEBUG命令概述(1)特点A.除命令RF外,DEBUG命令本身均为单字符,后面跟一个或多个参数,有些命令不给参数也能运行,如下表[]中的参数,这种情况下用默认值作为参数;B.DEBUG下输入和显示的数均为十六进制数,故数字后不可加后缀H,O,B等,否则认为命令错;C.命令和参数不区分大小写;DEBUG主要命令一览表(2)常用参数含义A、内存地址内存地址表示一个内存区域的起始地址,由段地址和偏移地址两部分组成。

汇编语言程序设计debug调试命令

汇编语言程序设计debug调试命令
内容。 (8) Q(退出): 退出DEBUG,该操作不保护文件。 -Q
标志位:
“1”
“0”
OF:溢出标志 —— OV溢出, NV没溢出
DF:方向标志 —— DN减量, UP增量
IF:中断允许标志 —— EI允许, DI禁止
SF:符号标志 —— NG负数, PL正数
ZF:“0”标志
—— ZR为“0”, NZ不为“0”
下次课预习内容:顺序结构程序设计
要求:1、实验指导书及实验报告上的预习内容 2、预习验收时要提供设计的源程序磁盘或笔写程序
-E CS:211 21 2A
;从CS:211H开始输入2个字节的内容
-E 110 ‘anything’
;输入从DS:110H开始的字符串
⑹ D(显示存储器的内容):
默认寄存器是DS,格式是:
-D段地址:偏移地址
;显示80H个字节的内容。
-D
显示从上一次结束处开始的80H个字节 的内容。
⑺ R(显示修改寄存器内容) -R ;显示所有寄存器内容。 -RDS ;显示并可修改DS的内容。 -RF ;显示并可修改标志寄存器
实验数据记录注意事项:
1、实验报告第三页:表格中标志位与计算机 自动给出的不是一一对应的,要求记录1/0
2、实验报告第四、五页:列出调试运行后的程序清单
因为行汇编不识别标号,所以:用行汇编运行的程
序中没有行号,转移指令处是绝对地址。
验收内容:
1、用T命令执行完程序最后一条指令处的界面:
-T =段地址:0
-G=段地址:偏移地址
-G
;从程序当前位置执行到
程序结束
-G =200 260
;从指定200H地址开始执行, 遇到断点

第一次汇编报告——DEBUG调试程序的使用

第一次汇编报告——DEBUG调试程序的使用
实验报告
1、实验目的及要求
2、实验原理、实验内容
3、实验仪器设备及材料
4、操作方法与实验步骤
5、实验数据记录及处理
6、实验结果分析及讨论
1、实验目的及要求
目的:
1.学习使用DEBUG程序的各种命令。
2.利用DEBUG学习了解计算机取指令、执行指令的工作过程。
3.掌握用DEBUG调试自编程序的方法。
要求:
A0000H~BFFFFH是8086的显存地址,改变其中的值时屏蔽内容会有改变,如 颜色改变,
而其值会直接显示在显示器上。
仪器设备损坏、非正常损耗材料(试剂)及处理情况:

教师对报告的最终评价及处理意见:
教师签字:
年月日
XXXX:0116 MOV AH,0 (10)
XXXX:0118 MOV CH,0 (11)
XXXX:011A MOV CL,[BX+SI+1] (12)
XXXX:011D ADD AX,CX (13)
XXXX:011F INT 20
(1)用D命令显示XXXX:0200 ---XXXX:0203单元内容。
1.实验前认真阅读实验教程中有关内容,明确实验目的和实验任务。
2.每次实验前应有预习报告,未预习者不允许参加实验。
实验准备:
2、实验原理、实验内容
1、参照实验准备,掌握DEBUG程序的各种命令,重点是命令R,D,A,U,T,E命令的使用。
2、按照以下步骤输入一系列的命令和指令,编写出简单的汇编语言指令,并完成指定任务。
XXXX:0107 MOV AX,[150] (04)
XXXX:010A ADD BX, ,AX (05)
XXXX:010C MOV AL,[BX] (06)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

18
15. “I”命令 命令 功能:从指定端口输入一个字节, 功能:从指定端口输入一个字节,并显示之 格式: 格式: -I portaddress 例: -I 2F8 6B 表示从端口02F8输入的字节被显示出来(6B) 02F8输入的字节被显示出来(6 表示从端口02F8输入的字节被显示出来(6B)
10
8.“ 8.“ U ” 命令 功能: 功能:反汇编命令 格式: 格式: 指令地址] (1) –U [指令地址] U [指令地址 执行:从指定地址开始,反汇编32个字节;若未指定地 执行:从指定地址开始,反汇编32个字节; 32个字节 则从上一个U 址,则从上一个U命令的最后一条指令的下一个单元开 始显示32 32个字节 始显示32个字节 开始地址] 终止地址] (2) –U [开始地址] [终止地址] U [开始地址 [终止地址 执行:从指定的开始地址开始反汇编, 执行:从指定的开始地址开始反汇编,到终止地址结束 <上机实践> 上机实践>
9
7.“ 7.“ G ” 命令 功能: 功能: 运行命令 格式: 格式: [运行的起始地址 [断点地址 [断点地址 运行的起始地址] 断点地址] 断点地址] -G [运行的起始地址] [断点地址] [断点地址]… 执行:若没有指定任何地址,则从当前的CS:IP地址处 执行:若没有指定任何地址,则从当前的CS:IP地址处 CS:IP 开始运行程序;若指定地址,则从起始地址开始运行, 开始运行程序;若指定地址,则从起始地址开始运行, 在断点地址处停止,并显示所有寄存器及标志位内容, 在断点地址处停止,并显示所有寄存器及标志位内容, 和下一条要执行的指令. 和下一条要执行的指令. <上机实践> 上机实践>
17
14.“ 命令 14.“H”命令 功能:计算两个16 16进制数的和与差 功能:计算两个16进制数的和与差 格式: 格式: -H value value 例: -H 0F 8 17 07 表示十六进制数000 000F 0008之和为0017,差为 之和为0017,差为0007 表示十六进制数000F及0008之和为0017,差为0007
13
L命令常与N命令联合使用 命令常与N -N myprog -L 从缺省磁盘把名为myprog的文件取出并存入 从缺省磁盘把名为myprog的文件取出并存入 myprog CS:100起始的内存中 CS:100起始的内存中
14
11.“ ”命令 11.“ W ”命令 目的: 目的:把调试的文件写入磁盘 格式: 格式: -W [address[drive sector sector]] 说明:参数address指出起始内存单元;drive指定磁 address指出起始内存单元 说明:参数address指出起始内存单元;drive指定磁 盘驱动器; sector前者指定相对扇区 前者指定相对扇区, 盘驱动器; sector sector前者指定相对扇区,后者 指定扇区数, 指定扇区数,两者都以十六进制形式表示 例如: 例如: -W 1FD 1 100 A 把地址CS:01FD开始的数据写到B驱动器软盘上, CS:01FD开始的数据写到 把地址CS:01FD开始的数据写到B驱动器软盘上, 自相对扇区100 开始连写0AH个扇区使用 100H 个扇区使用W 自相对扇区100H开始连写0AH个扇区使用W命令写一 个文件时,要先使用N命令给予文件名,再用R 个文件时,要先使用N命令给予文件名,再用R命令把 文件的长度选到寄存器BX CX中 BX和 文件的长度选到寄存器BX和CX中
DEBUG调试程序 DEBUG调试程序
1
DEBUG调试程序 DEBUG调试程序 DEBUG与汇编程序 一.DEBUG与汇编程序 要在IBM PC机上运行简短的汇编语言程序有两 要在IBM PC机上运行简短的汇编语言程序有两 种方法: 种方法: 1.用汇编程序ASM或与之类似但更先进的MASM,人们 1.用汇编程序ASM或与之类似但更先进的MASM,人们 用汇编程序ASM或与之类似但更先进的MASM, 通常用这两个汇编程序中某一个来对汇编语言程序 进行汇编(转换为机器语言程序). 进行汇编(转换为机器语言程序). 2.使用另一个不同的程序,称之为DEBUG.DEBUG不是 2.使用另一个不同的程序,称之为DEBUG.DEBUG不是 使用另一个不同的程序 DEBUG.DEBUG 真正的汇编程序它的主要用途是用于“调试” 真正的汇编程序它的主要用途是用于“调试”(即 修改程序中的错误)汇编语言程序.但也可用DEBUG 修改程序中的错误)汇编语言程序.但也可用DEBUG 来汇编简单的汇编语言程序. 来汇编简单BX 0100 :0000 -R CX CX 0000 :2400 -N -W Writing 2400 bytes
16
13. “ Q ” 命令 功能:结束DEBUG DEBUG程序 功能:结束DEBUG程序 格式: 格式: -Q 说明:使用Q命令退出DEBUG时,内存中正在运行的文 DEBUG时 说明:使用Q命令退出DEBUG 件没有存盘,必须利用WRITE WRITE命令才能保存文件 件没有存盘,必须利用WRITE命令才能保存文件
4
2.“ 2.“ E ” 命令 功能:修改存储单元的内容 功能: 格式: 格式:
输入数据后按空格键 可连续修改数据
-E 存储单元地址 数据 数据 数据 ... 此格式使键入的数据替代了指定范围的存储单元内容 -E 存储单元地址 此格式采用逐个存储单元相继修改的方法 <上机实践> 上机实践>
5
3.“ 3.“ F ” 命令 功能: 功能:用一个指定的十六进制数填入一部分存储单元 格式: 格式: -F 开始地址 终止地址 常量 命令与“ 命令都可修改存储单元的内容 命令都可修改存储单元的内容, “F”命令与“E”命令都可修改存储单元的内容,但“F” 命令与 命令只能键入一串相同的数据。 命令只能键入一串相同的数据。 例如: 例如: -F 100 120 4F <上机实践> 上机实践>
3
1.“ 1.“ D ” 命令 功能:显示内存单元的内容. 功能:显示内存单元的内容. 注意:十六进制是DEBUG唯一认识的数字系统, DEBUG唯一认识的数字系统 注意:十六进制是DEBUG唯一认识的数字系统,键入和输出时十 六进制数不用后加“ ,十进制数后要加“ 六进制数不用后加“H”,十进制数后要加“D” 格式: 格式: [存储单元地址 存储单元地址] -D [存储单元地址] [存储单元地址范围 存储单元地址范围] -D [存储单元地址范围] 例如: 例如: -D 100 -D 100 120 显示的信息,左边用十六进制表示每个字节,后边用ASCII 显示的信息,左边用十六进制表示每个字节,后边用ASCII 字符表示每个字节.表示不可显示的字符. 命令自动显示DS DS段 字符表示每个字节.表示不可显示的字符.D命令自动显示DS段 的内容 上机实践> <上机实践>
11
9.“ 9.“ N ” 命令 功能: 功能:给输入的汇编程序命名 格式: 格式: -N [D:][PATH] FILENAME[.EXE] 说明:如果启动DEBUG程序没有指定文件说明,那么在 说明:如果启动DEBUG程序没有指定文件说明, DEBUG程序没有指定文件说明 LOAD命令装入文件之前必须先使用 命令装入文件之前必须先使用N 用LOAD命令装入文件之前必须先使用N命令
19
16. “C ”命令 C 命令 功能: 功能:比较两个内存块的内容 格式: 格式:-C range address 说明:第一个参数指出“源地址范围” 说明:第一个参数指出“源地址范围”,第二个参数 指出“目标地址” 如果两个内存块内容不同, 指出“目标地址”,如果两个内存块内容不同,则显 示出两者的地址和内容.其显示方式是: 示出两者的地址和内容.其显示方式是: addr1 byte1 byte2 addr2 其中addr1 byte1是range中失配单元的地址和内容 中失配单元的地址和内容, 其中addr1 byte1是range中失配单元的地址和内容, byte2指出address中失配的内容和地址 指出address 而byte2指出address中失配的内容和地址
21
PSW中的标志位的符号表示 PSW中的标志位的符号表示
标志名 OF DF IF SP ZF AF PF CF 标志为1 标志为1 OV DN EI NG ZR AC PE CY 标志为0 标志为0 NV UP DI PL NZ NA PO NC
7
5.“ 5.“ A ” 命令 功能:汇编命令 功能: 格式: 格式: [开始存放指令的地址 开始存放指令的地址] -A [开始存放指令的地址] 可以键入汇编语言语句, 可以键入汇编语言语句,并能把它汇编成机器代 相继放入从指定地址开始的存储器中. 码,相继放入从指定地址开始的存储器中. <上机实践> 上机实践>
8
6.“ 6.“ T ” 命令 功能: 功能:跟踪命令 格式: 格式: [=指令地址 指令地址] (1) -T [=指令地址] 功能:从指定的地址起执行一条指令后停下来, 功能:从指定的地址起执行一条指令后停下来,显示 所有寄存器内容及标志位的值; 所有寄存器内容及标志位的值;如未指定地址则从 当前的CS:IP CS:IP开始执行 当前的CS:IP开始执行 指令地址][要执行的指令条数N] (2) –T [=指令地址][要执行的指令条数N] T [=指令地址][要执行的指令条数 功能:从指定地址开始执行N条指令后停下来, 功能:从指定地址开始执行N条指令后停下来,显示 各寄存器的值 上机实践> <上机实践>
2
DEBUG的运行 二.DEBUG的运行 DEBUG是DOS操作系统提供的程序之一, DOS提 DEBUG是DOS操作系统提供的程序之一,在DOS提 操作系统提供的程序之一 示符下键入程序名“DEBUG”, 示符下键入程序名“DEBUG ,屏幕上出现的短划线是 DEBUG”的提示符 的提示符, “DEBUG 的提示符,这符号通知用户机器已作好准备 来接受下一个命令。 来接受下一个命令。 DEBUG的命令如下: DEBUG的命令如下: 的命令如下
相关文档
最新文档