汇编语言实验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命令的使用一、知识点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 调试汇编语言程序段一、实验目的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是一个在DOS操作系统下的调试工具,它可以用来查看和修改内存中的程序和数据。
通过DEBUG,我们可以逐条执行程序功能段的指令,并观察其执行过程中的变化。
这有助于我们理解程序的运行原理,找出其中的错误,并进行调试和修复。
DEBUG程序的基本功能如下:1.查看内存中的程序和数据:DEBUG可以通过指定内存地址来查看内存中的内容。
我们可以使用d命令来显示指定地址范围内的内存内容。
这在调试程序时很有用,可以帮助我们检查变量的值是否正确。
2.修改内存中的程序和数据:DEBUG可以让我们修改内存中的程序和数据,从而实现调试和修复程序的功能。
我们可以使用e命令来修改指定地址处的内存内容。
3.单步执行程序:DEBUG可以将程序的执行过程分解为单条指令的执行,从而帮助我们逐步查看程序的执行情况。
我们可以使用t命令来单步执行程序。
4.中断程序的执行:DEBUG可以在程序执行过程中暂停执行,从而方便我们进行调试。
我们可以使用p命令来中断程序的执行。
5.显示寄存器的值:DEBUG可以显示CPU寄存器的值。
我们可以使用r命令来查看和修改寄存器的值。
这对于调试程序时检查寄存器的值非常有用。
6.显示和修改标志位:DEBUG可以显示和修改CPU的标志位。
我们可以使用f命令来查看和修改标志位的值。
这对于调试程序时检查标志位的值非常有用。
总而言之,DEBUG程序是一个功能强大的调试工具,可以帮助我们调试汇编语言程序的功能段。
通过它,我们可以查看和修改内存中的程序和数据,单步执行程序,中断程序的执行等等。
这些功能可以帮助我们找出程序中的错误,并进行调试和修复。
汇编实验-DEBUG程序的各种命令
一、实验目的及要求1. 继续学习使用DEBUG程序的各种命令。
2. 利用DEBUG学习了解计算机取指令、执行指令的工作过程。
3. 掌握8086/8088基本指令的使用方法和功能。
二、实验原理、实验内容DEBUG命令1) G命令格式:G[二起始地址][断点地址]功能:从起始地址幵始执行到断点地址,如不设断点地址,则程序一直执行到终止指令才停止2) P命令功能:执行汇编程序,单步跟踪与T命令不同的是:P命令不会跟踪进入子程序或软中断。
其使用方式与T相同3) N命令功能:指定文件名。
为读/写文件做准备4) W命令功能:向磁盘写内容5) L命令功能:从磁盘将文件或扇区内容读入内存注意:使用该命令前,必须用N命令设定文件名1.按照下列给定步骤完成求累加和程序:程序:MOV BX,1000MOV CX,10MOV AL,0LOP: ADD AL,[BX]INC BXJ:LOOP LOPINT3步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP旨令时LOP用实际地址值代替。
2)用命令N AA将此程序命名为文件AA(文件名可任取)。
3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址),用R命令把BX设为: 0000H, CX设为文件长度。
4)用命令W 100将此程序存到AA命名的磁盘文件中。
5)用命令Q退出DEBUG6)用命令DEBUG AAf次调入DEBUGS文件AA,可用U命令检查调入程序。
若调入DEBUG寸忘了加AA文件名,可用N命令和L命令将文件调入。
7)用E命令在内存地址1000H处键入16个数字8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J 上,检查AX,BX的值是否符合你的预计值。
9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错。
10)重复G J与T,再检查AX是否正确。
汇编语言程序设计实验DEBUG基本命令的使用
ERROR:
MOV AH,9
LEA DX,WARN
INT 21H
JMP RESTINT 21H
CODES ENDS
END START
调试分析
运行截图
教师评阅:
年月日
评分
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
RESTORE:
MOV AH,9
LEA DX,HINT
INT 21H
MOV AH,10
LEA DX,STRING
INT 21H
MOV BL,STRING+1
MOV BH,0
LEA SI,STRING+2
MOV BYTE PTR [SI+BX],'$'
MOV CX,BX
MOV BL,2
CHECK:
CMP STRING[BX],'A'
JL ERROR
CMP STRING[BX],'Z'
JG ERROR
ADD BL,1
LOOP CHECK
MOV BL,STRING+1
MOV BH,0
MOV CX,BX
MOV BL,2
《微机原理与汇编语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验一DEBUG基本命令的使用
验证型
实验目的及要求:
1. 掌握DEBUG的基本命令及功能;
实验内容:
1.编写一个小程序,从键盘接收一个大写字母,存放到指定内存单元BUF1,并转换成为对应的小写字符,存放到内存单元BUF2。上机编辑、汇编、连接并运行。
汇编实验二DEBUG调试实验
实验二应用DEBUG软件调试程序实验一、实验原理:Debug是DOS、Windows都提供的实模式程序的调试工具。
使用它可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
常用的DEBUG命令使用练习。
我们要用到的Debug功能如下:R命令查看、改变CPU寄存器的内容;D命令查看内存中的内容;E命令改写内存中的内容;U命令将内存中的机器码指令翻译成汇编指令;T命令执行一条机器指令,单步跟踪命令;A命令以汇编指令的格式在内存中写入一条机器指令;P命令,单步执行命令。
二、实验目的:通过DEBUG命令使用练习,掌握汇编的调试工具的使用,进而能够熟练使用调试命令对汇编程序的调试,修改程序运行中的错误,完善程序。
三、实验步骤:1.进入Dos环境,输入DEBUG后即可进入DEBUG。
2.练习使用r,d,,u,t,p,a,q等调试命令,查看各命令的功能和命令输入后的内存变化;四、实验任务:(一)使用Debug,将给出的程序段调入内存,逐条执行(1)用R命令查看CPU寄存器的内容,实验结果如下:用R命令改变CPU寄存器的内容,实验结果如下:(2)命令格式:d ds:100G命令执行前(kk00在内存中的地址:逻辑地址是13B3和物理地址是0100)G命令全数运行后实验结果如下u命令执行(二)利用Debug的E命令更改内存中的数据内容,将“kkkk”改为1vRT(三)利用Debug的A命令将如下程序段实现汇编指令的写入,并执行,用R命令进行查看寄存器值MOV DX,2233HMOV AH,10MOV CX,0FHMOV SI,11HMOV AL,12HAND AL,0FHMOV AH,0(四)查看内存中的内容PC机主板上的ROM中写有一个生产日期,在内存FFF000H~FFFFFH中的某个单元中,找出该生产日期,并尝试改变。
五、实验小结:(本次实验的心得体会,遇到的问题,解决方法以及掌握了什么、自己的感想之类的)。
汇编语言_debug实验一
2、进入Debug
• • “开始”—“运行”—Debug Alt+ Enter 进行全屏和窗口切换。
3、退出Debug
Q命令
• 常用命令格式:
R命令: R 显示、查看当前CPU中寄存器的内容。 R 寄存器名 在:后输入修改的内容。
D命令: D 段地址:偏移地址 查看内存中指定存储单元中的内容。 D 段地址:起始偏移地址 结束偏移地址 查看内存中指定的一段存储单元中的内容。
实验Debug的使用
查看CPU和内存,用机器指令
和汇编指令编程
• Debug
DOS、WINDOWS提供的实模式(8086 方式)程序的调试工具,可用来查看 CPU各种寄存器中的内容、内存的情况 和在机器码级跟踪程序的运行。
• Debug 的使用
1、Debug的常用命令:
R 命令:查看、改变CPU寄存器的内容。 D 命令:查看内存中的内容。 E 命令:改写内存中的内容。 U 命令:将内存中的机器指令翻译成汇编指令。 T 命令:(单步)执行一条机器指令。 A 命令:以汇编指令的格式在内存中写入一 条机器指令。 Q 命令:退出Debug程序。
ቤተ መጻሕፍቲ ባይዱ
E命令: E 起始地址 数据 数据 数据………. 改写指定地址开始的内存单元中的若干内容。 (所写数据可以是:数字、字符、字符串) E 起始地址+Enter 用提问方式改写内存内容。 U命令: U 起始地址 将指定地址开始的内存单元中的内容翻译为汇 编指令。
T命令: T 单步执行当前一条指令。 A命令: A 内存地址 从指定地址开始的内存单元中写入汇编指令
汇编语言实验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命令进行内存区域比较
实验一DEBUG主要命令简介
OV DN EI NG ZR AC PE CY
NV UP DI PL NZ NA PO NC
· 显示和修改某个具体寄存器内容,其格式为: -R register name 例如,键入 -r ax 系统将响应如下: AX F1F4 : 即AX寄存器的当前内容为F1F4,如不修改则按Enter键, 否则,可键入欲修改的内容,如: -r bx BX 0369 : 059F 则把BX寄存器的内容修改为059F
二、 DEBUG的主要命令
1) 显示存储单元的命令D(DUMP)
格式为: -D [address] 或 -D [range]
说明:
D 2000:0100 (同时指明段地址和偏移地址) (只给出偏移地址默认的段地址是DS) 地址表示举例 D 100 D ES:100 (用符号指明段地址)
D 0100 0110 (由首地址和末地址指定范围) 范围表示举例 D 100 L 20 (由首地址和长度指定范围) D ES:100 (未指定范围,默认长度是80H)
18E4:010C C70608020202 MOV
可见以上两种格式是等效的。
WORD
PTR
[0208],0202
7) 跟踪命令T(Trace),有两种格式
·逐条指令跟踪 -T [=address] 从指定地址起执行一条指令后停下来,显示所有 寄存器内容及标志位的值。如未指定地址则从当 前的CS:IP开始执行。 ·多条指令跟踪 -T[=address][value] 从指定地址起执行n条指令后停下来,n由value 指定。
例如,按指定范围显示存储单元内容的方法为: - d 100 120 ****:0100 C7 06 04 02 38 01 C7 06 - 06 02 00 02 C7 06 08 02 G...8.G.....G... ****:0110 02 02 BB 04 02 E8 02 00 - CD 20 50 51 56 57 8B 37 ..;..h..MPQVW.7 ****:0120 8B
汇编_DEBUG的使用
格式转换程序
返 回
上机操作过程
1.编辑 1.对编辑完成的源程序在存盘时扩展名必须加写.ASM 2.一定要严格遵守汇编语言书写格式及段结构的格式来 编写程序
2.汇编
汇编过程就是将汇编语言源程序转换成机器能够识别的 目标代码程序,即OBJ的二进制文件。还可生成扩展名 为.LST的列表文件,扩展名为.CRF的符号索引文件。
DEBUG常用命令-Q命令
退出DEBUG程序的命令Q(quit)
退出DEBUG,返回到DOS 该命令无存盘功能,如需存盘应先使用W 命令
常用的DOS功能调用
书本的第8章专门讲述中断程序设计 而在讲第8章以前,我们需要用到几个常用
的DOS功能调用,所以这里先简单介绍几个 使用方法:
A命令举例:
-A 127C:0100 mov 127C:0103 mov 127C:0105 int 127C:0107 mov 127C:0109 int 127C:010B db 127C:011E -r cx CX 0000 :011E -n -w Writing 0011E -q C:\>2
DEBUG常用命令-U命令
反汇编命令U(Unassemble)
从指定地址开始,反汇编32个字节
格式为: U [地址] 例如: U 100 如果地址被省略则从上一个U命令的最后一条指令的 下一个单元开始显示32个字节。 格式为: U [range] 例如: U 100 10C 从偏移地址为100H处开始反汇编10CH个字节
1.设置入口参数(有些不需要设置的就不设置) 2.功能调用号送AH寄存器 3.发软中断指令“INT 21H”
4C号功能调用
实验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的使用
格式: E <地址> [<单元内容表>] (1) E <地址> 功能: 不断显示地址,可连续键入修改内容,直至新地址出现后
键入回车Enter为止。
(2) E <地址> <单元内容表> 其中<单元内容表>是以空格分隔的十六进制数,或用’或”
括起来的字符串,或者是二者的组合。
汇编语言程序设计
二、如何 进入Debug
方法1:在运行对话框中输入“cmd”或“command”启动 DOS命令窗口后输入“Debug”回车; 方法2:在程序/附件/命令提示符,启动DOS命令窗口后输 入“Debug”回车。 进入Debug的提示符是符号“-”。即出现提示符“-”就表 示可以接受DEBUG命令了。 按Alt+Enter键可在全屏与窗口之间切换。
汇编语言程序设计 示例:用A命令,输入下列程序并运行 -a 1000:0
mov ax, 1
mov bx, 2 mov cx, 3
add ax, bx
add ax, cx add ax, ax 直接按Enter键结束输入。 用r命令将cs修改成1000,ip修改成0,再 使用t命令单步执行程序。执行T命令时,CPU执行CS:IP指向的指令 并将IP加指令长度指向下一条指令。
汇编语言程序设计
四、Debug常用命令
? 显示 Debug 命令列表。 R 显示或改变一个或多个寄 存器的内容 D 显示查看内存中的内容。 E 从指定地址开始,将数据输 入到内存,即改写内存的内容。 A 以汇编指令的格式在内存 中写入一条机器指令。 U 反汇编字节并显示相应的 汇编指令 T 执行一条指令,然后显示 所有寄存器的内容
7、G命令
汇编实验一DEBUG
汇编语言程序设计Ⅰ—实验报告实验一 DEBUG的使用班级:姓名:学号:日期:实验题目一、实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二、实验设备硬件环境:IBM-P及其兼容机软件环境:操作系统DOS3.0版本以上调试程序三、实验内容和要求实验内容:1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为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 命令,指令练习 实验 403 实验日期 2013.4.16 一、实验目的及要求熟悉和掌握汇编语言的数据传送类指令、算术指令、逻辑指令、串处理指令、控制转移指令以及处理机控制与杂项操作指令,达到准确有效地运用。
二、实验环境硬件环境:一台微型计算机;软件环境:windows 7,debug 环境,masm 三、实验内容练习dos 环境下debug 命令;指令练习 四、实验过程: 1. 进入debug 环境姓名学号 10051704 班级 计本1004班 指导教师 张娟2.R命令查看寄存器内容的命令。
可以看出,数据寄存器的内容都为0,CS代码段寄存器内容为13BB,IP为0100。
3.RF命令查看标志位寄存器内容并可以进行修改,其中不包含TF,陷阱标志位。
4.D命令查看内存单元内容,此处从内存的13BB段的第0100个单元开始显示。
5.A命令写指令,此处未写。
6.U命令将内存单元的内容以汇编指令的形式表示出来。
7.E命令修改内存单元的内容命令。
这里修改1000的内容为12,并用D命令显示修改后的结果,为12。
8.数据传送类指令(1)MOV指令将1234赋值给累加器AX:指令写在0100开始的内存单元,占用3个字节,IP指向下一条指令的地址0103。
(2)POP指令将累加器AX中的值弹出AX中的值弹出,变为0000,SP堆栈指针由原来的FFEE自动加2后变为FFF0,IP指向下一条指令的内存单元0104。
9.算数指令(以下内容在实验室操作,地址与之前做的有差别)10.算数指令(1)加法指令ADD给累加器AX 的值加上1234h在0100地址写加法指令,执行单步操作,查看到AX的值由0000h变为1234h,IP 指向下一条指令的地址0103h。
(2)减法指令SUB将累加器AX 的值减去0200h,将结果保存到AX中执行单步操作,查看AX的值为1034h,IP指向下一条指令地址0106。
汇编实验报告--利用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
练习
(10)向内存从B8100H开始的单元中填写数据,如: -e b810:0000 01 02 03 04 05 05 06 注意:先填写不同的数据,观察产生的现象;再改变填写的的地址, 观察产生的现象。 (11)用汇编命令A输入如下指令: MOV AX,1 MOV BX,2 MOV CX,3 ADD AX,BX ADD AX,CX ADD AX,AX 用T跟踪观察寄存器内容的变化。 (12)上机练习课本P159第8题,并写出每个程序段执行后AL的内容及状态 标志位的值(提示:用A、R命令)
u范围从上一个u命令所显示地址后的第一个地址开始反汇编显示20h个字节内容起始地址从起始地址处开始显示20h个字节内容起始地址结束地址反汇编显示从起始地址到结束地址的内容例如
调试工具DEBUG的使用
一、上机目的 (1)学习如何在Windows的命令模式下启动 DEBUG。 (2)掌握DEBUG的常用基本命令。 (3)学习如何使用DEBUG查看CPU和内存以及 进行跟踪调试。
(1)-t 执行CS:IP指向的一条指令并显示各寄存器状态 (2)-t <指令条数> -t 3 执行CS:IP开始的连续的3条指令并显示各寄存器状态 (3)-t <=起始地址> <指令条数> -t =052A 5 该指令会连续执行从052A开始的5条指令
练习
(1)用R命令修改IP的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (2)用R命令修改CS的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (3)使用D命令,查看内存10000H处的内容; (4)使用D命令,查看1000:0~1000:8中的内容,并修改 这9个字节的内容为1、2、3、4、5、6、7、8、9 (5)采用三种不同的段地址和偏移地址查看同一物理地址
汇编语言实验DEBUG和字符串匹配问题
汇编语⾔实验DEBUG和字符串匹配问题汇编语⾔实验⼀问题描述问题1:学⽣上机前预习debug常⽤命令的⽤法,复习汇编语⾔基本指令,上机时进⾏debug命令练习。
问题2:编写程序,⽐较两个字符串STRING1和STRING2所含字符是否相同,若相同则显⽰“MATCH”,若不相同则显⽰“NO MATCH”。
编译链接后,根据所定义的字符串情况⽤debug观察程序的运⾏结果是否正确,并且会⽤debug修改字符串的值,以便检查程序两个分⽀是否都能正确运⾏。
问题分析问题⼀:A:编辑和汇编源程序。
格式:-A 地址U:反汇编验证源程序。
格式:-U 地址R:观察或修改寄存器的内容。
D:显⽰存储单元的内容。
格式:-D 地址E:修改存储单元的内容。
格式1:-E 地址格式2:-E 地址单元数据单元数据……G:设置断点运⾏源程序。
格式:-G=⾸地址末地址T:单步执⾏程序。
执⾏结束后显⽰AX、BX、CS、IP 寄存器内容的变化,并显⽰下⼀条要执⾏的指令的地址和内容。
格式:-T=地址或者-T=地址值N:⽂件命名。
格式:-N *.comL:将某个⽂件或特定磁盘扇区的内容加载到内存。
格式:-L 地址W:将程序写到磁盘。
如果不指定address,Debug 程序将从CS:100 开始。
在写盘操作之前要⽤R命令修改bx,cx的内容(存放写的字节数)。
Q:退出问题⼆:(1) MOVS 传送指令格式 MOVS DST SRC 或MOVSB (传送宇节)或MOVSW (传送字)。
后⽽两种形式需要与REP指令结合使⽤。
该指令把由源变址寄存器(SRC)指向的数据段中的⼀个字(或字节)数据传送到由⽬的变址寄存器(D S T)指向的附加段中的⼀个宇(或字节)中去同时根据⽅向标志及数据格式(字或字节)对源变址寄存器和⽬的变址寄存器进⾏修改.(2 ) STOS 存⼊串指令格式STOS DST 或STOSB (存⼊字节)或STOSW (存⼊字)。
该指令把AL或AX的内容存⼊由⽬的变址寄存器指向的附加段的某单元中井根据⽅向标志( DF ) 相数据类型修改⽇的变址寄存端的内容.(3)LODS 从串取指令格式LODS SRC 或LODSB (取字节)或LODSW (取字) 该指令把由源变址寄存器指向的数据段中某单元的内容传送到AL或AX中并根据⽅向标志和数据类型修改源变址寄存器的内容。
汇编语言上机 实验一 DEBUG常用命令及8086指令使用
实验一DEBUG常用命令及8086指令使用实验目的:通过实验掌握下列知识:1、8086指令: M OV,ADD,SUB,XCHG等2、DEBUG命令: A,D,E,F,H,R,T,U。
3、ASCII码及用16进制数表示二进制码的方法。
内容及步骤:一、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。
2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令F110 11F 41 重复上二项实验,观察结果并比较。
5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
二、8086常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容: MOV AX,1234MOV BX,5678XCHG A X,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG A X,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX图略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、常用DEBUG命令
1. 用R命令查看、改变CPU寄存器的内容; 2. 用U命令将内存中的机器指令翻译成汇编指令; 3. 用D命令查看内存中的内容; 4. 用E命令改写内存中的内容; 5. 用A命令以汇编指令的格式在内存中写入机器指令
6. 用T命令执行一条机器指令
1、R命令
R命令用来显示和修改16位寄存器的值
注:
(1)使用带参数的D命令后,接着使用D命令,可列出
后续的128个内存单元的内容。 (2)可指定段寄存器:-d CS:100 10F (3)不指定段寄存器时默认显示数据段内容
4.修改存储单元命令E 作用:用值表中的值替换从“起始地址”开始的内存单
元中的内容
(1)-e <起始地址> 以提问的方式依次修改内存单元的内容 -e 1000:0
练习
(10)向内存从B8100H开始的单元中填写数据,如: -e b810:0000 01 02 03 04 05 05 06 注意:先填写不同的数据,观察产生的现象;再改变填写的的地址, 观察产生的现象。 (11)用汇编命令A输入如下指令: MOV AX,1 MOV BX,2 MOV CX,3 ADD AX,BX ADD AX,CX ADD AX,AX 用T跟踪观察寄存器内容的变化。 (12)上机练习课本P159第8题,并写出每个程序段执行后AL的内容及状态 标志位的值(提示:用A、R命令)
反汇编显示从起始地址到结束地址的内容
例如:命令U 100 10C表示对从CS:100到10B的内存单元进行反汇编。பைடு நூலகம்
3.显示内存命令D
作用:查看指定范围内的内存中的内容
D命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 元的内容 (1)直接输入D命令 输出3部分内容: (1)左边是每行的起始地址,用“XXXX:YYYY”表示,其中 XXXX表示内存单元的段地址,YYYY表示内存单元的偏移量; (2)中间以十六进制的形式显示从指定地址开始的128个内存 单元的内容,每行显示16个字节的内容; (3)右边显示每个内存单元中的数据对应的可显示的ASCII码 字符,若没有对应可显示的ASCII码字符,DEBUG用“.”来 代替。
-e es:0
-e 0010 (默认修改数据段) (2)-e <起始地址> <内容表>
-e 1000:10 1 ‘a+b' 2 ‘c++’ 3
该指令会将1000:10开始的连续9个字节依次修改为01H、61H、 2BH、62H、02H、63H、2BH、2BH、03H
例:将内存1000:0~1000:9单元中的内容分别写为0、1、 2、3、4、5、6、7、8、9,可用“E 起始地址 数据 数 据 数据 数据 数据……”的格式来进行。 • 步骤:
练习
(12)PC主板上的ROM中写有一个生产日期,在内存FFF00HFFFFFH的某几个单元中,请找到这个生产日期并试图修改。 (13)上机练习课本P159第8题,并写出每个程序段执行后AL的 内容及状态标志位的值(提示:用A、R命令)
(1)-t 执行CS:IP指向的一条指令并显示各寄存器状态 (2)-t <指令条数> -t 3 执行CS:IP开始的连续的3条指令并显示各寄存器状态 (3)-t <=起始地址> <指令条数> -t =052A 5 该指令会连续执行从052A开始的5条指令
练习
(1)用R命令修改IP的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (2)用R命令修改CS的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (3)使用D命令,查看内存10000H处的内容; (4)使用D命令,查看1000:0~1000:8中的内容,并修改 这9个字节的内容为1、2、3、4、5、6、7、8、9 (5)采用三种不同的段地址和偏移地址查看同一物理地址
(1)-R
显示所有寄存器(包括Flags)的值并反汇编CS:IP所指 的指令 (2)-R <寄存器名>
显示指定寄存器的值,在提示符“:”后键入新的值,
按回车键结束R命令。
(3)RF 只显示标志寄存器内容
状态标志位的符号表示
标志位 CF进位(有/否) PF奇偶(偶/奇) AF辅助进位 ZF全零(是/否) SF符号(负/正) IF中断(允许/禁止) DF方向(增量/减量) 标志为1 CY PE AC ZR NG EI DN 标志为0 NC PO NA NZ PL DI UP
调试工具DEBUG的使用
一、上机目的 (1)学习如何在Windows的命令模式下启动 DEBUG。 (2)掌握DEBUG的常用基本命令。 (3)学习如何使用DEBUG查看CPU和内存以及 进行跟踪调试。
二、启动和退出DEBUG的方法
方法1:在Windows开始菜单中单击运行命令,直接在运行对话 框中输入"DEBUG“
• ① 用D命令查看1000:0~1000:f单元的内容:D 1000:
0 9 • ② 用E命令修改从1000:0开始的10个单元中的内容:E
1000:0 0 1 2 3 4 5 6 7 8 9
• ③ 用D命令查看1000:0~1000:9单元中内容的变化: D 1000:0 9 • 或以提问的方式修改内存内容
10000H中的内容
练习
(6)用E命令向内存中写入字符。从内存1000:0开始写入:数值1,字 符“a”,数值2,字符“b”,数值3,字符“c”。 (7)用E命令向内存中写入字符串。从内存1000:0开始写入:数值1, 字符串“a+b”,数值2,字符串“c++”,数值3,字符“IBM”。 (8)用E命令以提问的方式来逐个地修改从某一地址开始的内存单元中 的内容。 (9)以从1000:10单元开始为例。 用E命令向内存中写入机器码,用U命令查看内存中机器码的含义。 机器码 对应的汇编指令 b8 01 00 MOV AX,0001 b9 02 00 MOV CX,0002 01 c8 ADD [BX+SI],AX 简单地使用A命令,从一个预设的地址开始输入指令
OF溢出(是/否)
OV
NV
2.反汇编命令U 作用:反汇编,即显示机器码所对应的汇编指令,主要针
对代码段 格式:u [范围] (1)-u 从上一个U命令所显示地址后的第一个地址开始,反汇编显
示20H个字节内容
(2)-u <起始地址> 从起始地址处开始显示20H个字节内容
(3)-u <起始地址> <结束地址>
(2)带参数的D命令 带参数的命令D将显示指定地址范围的内容。有三种方式: 方式一:D 起始位置 DEBUG从起始位置开始显示128个字节的内容。 例:D 1AF5:100 方式二:D 起始位置 结束位置 DEBUG从起始位置开始一直显示到结束位置。 例:D DS:100 11F 方式三:D 起始位置 L长度 DEBUG命令从起始位置开始显示指定长度内容。 例:D DS:100 L10
5.编辑命令A 作用:以汇编指令的形式向内存中写入指令 (1)-a (2)-a <起始地址> -a 1000:0 mov ax, 1 mov bx, 2 mov cx, 3 add ax, bx add ax, cx add ax, ax
6、单步跟踪命令T 作用:跟踪执行,从起点(或当前点)执行若干条指令 若不写“地址”,则T命令从CS:IP处开始执行,“指令数” 是 要执行的指令数。
方法2:在运行对话框中输入“CMD”启动DOS命令窗口后输入
"DEBUG“ 方法3:在程序、附件、命令提示符,启动DOS命令窗口后输入
"DEBUG"
退出DEBUG的方法: -Q
三、DEBUG命令格式说明
(1)在提示符“-”下才能输入命令,在按“回车” 键后,该命令才开始执行; (2)命令是单个字母,后跟一个或多个参数,命令 和参数的大小写可混合输入,不区分大小写; (3)在DEBUG中使用的数都是以十六进制来表示的, 不能带后缀H; (4)以空格或逗号作为命令各项之间的分隔符; (5)可以用Ctrl+C或者Ctrl+Break来终止命令的执行; (6)当命令出现语法错误时,将在出错位置显示 “^Error”