利用DEBUG调试汇编语言程序段
汇编语言(王爽第三版)实验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的使用一、实验目的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 调试汇编语言程序段一、实验目的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 使用简介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 -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汇编语言程序时,了解和掌握调试程序是非常重要的。
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命令的使用一、实验说明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浅析
第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起就带有此命令,因此可见此命令的重要性了。
此命令的功能非常强大,可以解决许多问题。
它既可以帮助我们看见汇编语言里很多抽象的东西,也可以帮助我们练习汇编指令,还可以帮助我们调试编写的汇编程序等。
可见,有了它,我们学习汇编语言就事半功倍了。
利用Debug调试汇编语言程序执行过程的教学探讨
f o r t h e u n d e r l y i n g wo r k p r i n c i p l e o f c o mp u t e r . T h e p r a c t i c e s h o ws t h a t t h e me t h o d c a n e f e c t i v e l y s t i mu l a t e s t u d e n t s ’i n t e r e s t i n
中图 分 类 号 : G6 4 2 . 0 文献 标 志 码 : A 文章 编 号 : 1 0 0 6 — 8 2 2 8 ( 2 0 1 3 ) 1 0 — 5 2 — 0 4
Ex pl o r a t i on o n t e a c h i n g a s s e mbl y l a ng ua g e pr o g r a m e x e c ut i on pr o c e s s us i n g De bu g
Xi a n g J i we n
( C o l l e g e o f I n f o r ma t i o n S c i e n c e a n d E n g i n e e r i n g ,J i s h o u U n i v e r s i t y ,J i s h o u ,Hu n a n 4 1  ̄O & C h i n a )
式、 通过 系统总线 与外设接 口进行连接 的基本方法 等 , 具备软 存单元 中的 内容 。 1 . 2寄存器命令 R 件与硬 件紧密 结合的显著 特点 。该 课程帮助 学生从根本 上认 功能 : 用于显示或修改 C P U寄存器 中的值 。 识和 理解计算 机 的底层工作 原理n , 培 养学生综 合运用模 拟 电
汇编语言第1次实验报告:DEBUG命令及汇编编程工具的使用
3熟悉汇编语言编程工具的使用。
实验环境
1X86系列桌面系统;
2UltraEdit-32、TASM、TLINK、TD。
实验内容
1用r命令观察寄存器及各标志位:
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
四川大学计算机学院、软件学院
实验报告
学生姓名
夏超
学号
1143041054
班级
113040115
学生专业
计算机科学与技术
学院
计算机学院
课程名称
汇编语言程序设计(第1次实验)
实验时间
2012年10月9日
实验项目
DEBUG常用命令实践及编程初步
报告撰写时间
2012年10月9日
实验目的
1学习DEBUG常用命令,掌握观察寄存器和内存单元的方法;
DS=13AE ES=13AE SS=13AE CS=13AE IP=0100 NV UP EI PL NZ NA PO NC
用d命令观察内存
观察200h单元的内容15h及所在段的段基址13AEh;
计算该单元的物理地址:13CEh;
用不同的段基址和偏移量观察上述物理地址的内容:
13CE:00;
13BE:100;
>anyshow;
4用集成编程工具编译、连接和执行AnyShow.asm。
小结
这次实验课让我认识到计算机的一些很基础的知识,加深了对编译语言和编译原理的理解,也了解到了一些基本的编译语言的基本指令,提升了对编译语言的兴趣,对编译语言的实际用途有了更深的了解。
汇编语言实验报告2
调试程序功能段一、实验目的1.继续学习使用DEBUG程序的各种命令。
2.利用DEBUG学习了解计算机取指令、执行指令的工作过程。
3.掌握8086/8088基本指令的使用方法和功能。
二、实验任务1.按照下列给定步骤完成求累加和程序:程序:MOV BX,1000MOV CX,10MOV AL,0LOP: ADD AL,[BX]INC BXJ: L OOP 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退出DEBUG。
6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。
若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。
7)8)用E命令在内存地址1000H处键入16个数字9)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。
10)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样, 若不一样,检查程序是否有错。
11)重复G J与T,再检查AX是否正确。
(J为断点地址)12)用G命令使程序运行到结束,检查AX值是否正确。
2.用命令A汇编下列指令,判断指令正误并说明原因。
(1)LEA DI,[AX](2)MOV DS,2010(3)PUSH AL(4)OUT 900,AL(5)MOV [BX],03.利用T,P,G命令,执行下列指令段,注意它们的不同之处。
(6)MOV DI,300MOV SI,400MOV CX,3CLDREP MOVSBINT 3(7)MOV AH,2MOV DL,41INT 21INT 34.程序: MOV DI,1000MOV CX,8MOV SI,2000CLCLOP: MOV AL,[SI]ADC[DI],ALINC SIINC DILOOP LOPINT20步骤:1)用A命令键入此程序2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。
实验一汇编语言上机及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的使用
3.连接
所谓连接是用连接程序LINK.EXE把若干个经汇编后产生的.OBJ文件及 指定的库文件连接起来,产生可执行的.EXE文件。
4.调试
返回
4C号功能调用
功能:退回到DOS(操作系统)状态
入口参数:无 出口参数:无
该号功能调用等价于INT 20H中断
4C号功能调用举例
-A mov ah,4c;退出DEBUG,回到DOS int 21 -G;执行程序命令
该程序什么也不做,直接退回到DOS状态。
1号功能调用
功能:从键盘上读入一个字符,并将该
9号功能调用举例 -A mov dx,10B;dx=字符串的首地址
mov ah,09 ;调用9号显示字符串的功能号
int 21h
mov ah,4c ;退出DEBUG,回到DOS int 21
10B:db ‘hello’,’$’ ;注意需要以‘$’为结 束符 -G ;连续执行程序命令
例题
要求:
常用的DOS功能调用
书本的第8章专门讲述中断程序设计 而在讲第 8 章以前,我们需要用到几个常用
的DOS功能调用,所以这里先简单介绍几个 使用方法:
1.设置入口参数(有些不需要设置的就不设置) 2.功能调用号送AH寄存器 3.发软中断指令“INT 21H”
段寄存器CS、DS、ES和SS置为DEBUG程序后
的第一个段。 指令指针寄存器IP置为100H(程序段前缀 PSP后的第一个语句) 堆栈指针SP置为堆栈段的段末 其余通用寄存器均置为0 ,标志寄存器置为 下述状态:NV UP EI PL NE NA PO NC 如果 DEBUG 命令行含有文件名,段寄存器 DS 和ES指向程序段前缀PSP(Program Segment Prefix) ,寄存器BX和CX含有程序长度
《汇编语言》课程实验指导书
《汇编语言》课程实验指导书《汇编语言》课程实验指导书扬州大学信息学院计算机科学与工程系 2007年5月实验一 DEBUG的使用(一)目的及要求进一步熟悉常用的单、双操作数指令和各种寻址方式的功能及使用格式,初步掌握调试程序DEBUG程序的基本使用方法,为以后的实验打下基础。
(二)实验内容1、用 DEBUG的基本命令,单步执行y=(x-1)2+30的程序,检查每条指令执行后目的地址及有关寄存器的内容。
2、用DEBUG的A命令,键入如下程序段: MOV BX,8275HMOV AX,3412H ;双精度数34128275H——AX、BX ADD BX,92A5HADC AX,2F65H ;加上双精度数2F6592A5H ADD BX,0EAE6HADC AX,9C88H ;加上双精度数9C88EAE6H然后用T命令单步执行,查看每条指令执行后有关寄存器的内容及标志位的变化。
注意:①用A命令时键入的数均为十六进制,故其后的“H”不要键入.②用T命令不适合执行“INT”指令。
3、学会使用DEBUG中的命令:D、G、E、R、T、A、U,为后面调试运行汇编源程序打下基础。
实验二分支、循环程序设计(一)目的及要求1、进一步理解条件转移指令的格式及功能,以便在分支程序中选用合适的指令。
2、提高设计及调试分支程序的能力。
3、掌握循环程序的结构及循环控制方法,提高循环程序的设计能力。
(二)实验内容1、用 DEBUG的基本命令,执行P120例5-2程序。
2、根据以下各题的要求写出其源程序井上机调试运行,显示(或打印)出运行结果。
①从键盘输入一字符串存放在IN-BUF 缓冲区中,然后在下一行以相反顺序显示出来。
②以附录1的格式显示(或打印)出 ASCll码表。
对于无法显示出的格式符或功能符,如空白0、响铃7、换行OAH、回车ODH、空格4DH等均用空格代替。
实验三子程序设计(一)目的及要求1、熟练掌握子程序的设计方法与调用方式,并能正确地书写子程序说明。
汇编_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的使用汇编语言是一种低级语言,用于编写计算机硬件的指令。
编写汇编语
言源程序后,需要经过一系列步骤才能在计算机上运行。
同时,调试工具DEBUG可以帮助程序员查找和修复程序中的错误。
一、汇编语言源程序运行步骤:
2.汇编:将源程序转化为机器码指令的过程称为汇编。
通过使用汇编
器(如MASM、NASM等),可以将源程序翻译成可执行的机器码文件。
在
汇编的过程中,所有的指令和操作数都被翻译成计算机可以理解的二进制
形式。
3. 链接:链接是将目标文件和库文件组合成一个可执行文件的过程。
当汇编源程序时,可能会调用外部库函数,这些函数的实现通常包含在库
文件中。
链接器(如link.exe)负责将这些函数和源程序连接起来,最
终生成一个可执行文件。
4.运行:通过操作系统加载可执行文件到内存中,并开始执行。
在运
行过程中,CPU按照程序的指令一步一步地执行,计算、存储和传输数据。
执行过程中,程序可能会从输入设备读取数据并输出结果。
二、DEBUG的使用:
DEBUG是一个DOS系统中内置的调试工具,可用于查找和修复程序中
的错误。
它通过允许程序员直接与内存、寄存器和指令交互,提供了一种
直观、低级的调试方式。
1.启动DEBUG:在DOS命令行中输入DEBUG命令,启动DEBUG程序。
DEBUG启动后,会显示一个":"提示符,等待用户输入指令。
调试工具debug的使用及基本指令的用法
调试工具debug的使用及基本指令的用法
3、观察及修改CPU内部的各寄存器
-r ax AX 0000 :1234 将AX的内容改为1234H -rf NV UP DI PL NZ NA PO NC -ov dn 将标志寄存器的OF置为OV;DF置为DN。
4、观察和修改内存单元的内容
-d 2000
-a 103 修改103处的指令 10DD:0103 mov [2000],ax 10DD:0106 -
调试工具debug的使用及基本指令的用法
6、单步执行程序
-t=100 执行CS:100H处的一条指令,自动显示各寄存器内容及下一条指令。 AX=1234 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000 DS=10DD ES=10DD SS=10DD CS=10DD IP=0103 OV DN DI PL NZ NA PO NC 10DD:0103 A30020 MOV [2000],AX DS:2000=0201 -t 继续执行下一条指令
标志寄存器各标志位的含义:
溢出标志OF: OV/NV(溢出/不溢出) 方向标志DF: DN/UP(减/增) 中断标志IF: EI/DI(开中断/关中断) 符号标志SF:NG/PL(负/正) 零标志ZF: ZR/NZ(零/非零) 辅助进位AF:AC/NA(有/无) 奇偶标志PF:PE/PO(偶/奇) 进位标志CF:CY/NC(有/无)
调试工具debug的使用及基本指令的用法
4、观察和修改内存单元的内容
-e 2000 修改从地址DS:2000H开始内存单元的内容 10DD:2000 00.01 00.02 ↑ 键入的内容,中间按空格键
汇编语言程序设计debug调试命令
标志位:
“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地址开始执行, 遇到断点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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文件,应通过什么方法实现?。