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

合集下载

汇编 DEBUG主要 命令 大全 最详细

汇编 DEBUG主要 命令 大全 最详细

DEBUG主要命令DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

1.DEBUG程序的调用在DOS的提示符下,可键入命令:C:>DEBUG [d:][path][文件名][参数1][参数2]其中文件名是被调试文件的名字,它必须是可执行文件(EXE),两个参数是运行被调试文件所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。

2.DEBUG的主要命令⑴显示内存单元内容的命令D,格式为:-D [地址] 或-D [范围]例如,显示指定范围内存单元内容的方法为:-D 100 1FF18E4:0100 47 06 04 02 38 01 47 06 -06 02 00 02 47 06 08 02 G...8.G.....G...18E4:0110 02 02 3B 04 02 68 02 00 -4D 20 50 51 56 57 8B 37 ..;..h..M PQVW.7 其中左边为十六进制表示形式,右边为ASCII码表示形式,“.”表示不可显示字符。

这里没有指定段地址,D命令自动显示DS段的内容。

⑵修改内存单元内容的命令E,它有两种格式1)用给定内容代替指定范围的单元内容,格式为:-E 地址内容表例如:-E DS:100 F358595A8D,即用F3,58,59,5A,8D五个字节代替内存单元DS:100到DS:104的内容。

2)逐个单元相继地修改,格式为:-E 地址例如:-E DS:10018E4:0100 89.78此命令是将0100单元内容89改为78。

78是程序员从键盘输入的。

程序员在修改完一个单元后,可按“空格”键继续修改下一单元内容,直至按“回车”键结束该命令。

⑶检查和修改寄存器内容的命令R,它有三种方式1)显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态-R该命令可显示AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,CS,IP及标志寄存器内容。

汇编语言调试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的使用一、实验目的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码的数字)。

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起就带有此命令,因此可见此命令的重要性了。

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

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

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

DEBUG命令详解

DEBUG命令详解

DEBUG命令详解DEBUG是DOS中的一个外部命令,从DOS 1.0起就带有此命令,因此可见此命令的重要性了。

虽然此命令的功能非常强大,可以解决许多问题,可是对许多人来说,尤其是初学者来说,却非常不易掌握。

因此,现将DEBUG的命令详细介绍一番,以让大家知道它的使用。

Debug:A(汇编)直接将8086/8087/8088 记忆码合并到内存。

该命令从汇编语言语句创建可执行的机器码。

所有数值都是十六进制格式,必须按一到四个字符输入这些数值。

在引用的操作代码(操作码)前指定前缀记忆码。

a [address]参数address指定键入汇编语言指令的位置。

对address 使用十六进制值,并键入不以“h”字符结尾的每个值。

如果不指定地址,a 将在它上次停止处开始汇编。

有关将数据输入到指定字节中的信息,请单击“相关主题”列表中的Debug E(键入)。

有关反汇编字节的信息,请单击“相关主题”列表中的Debug U(反汇编)。

说明使用记忆码段的替代记忆码为cs:、ds:、es: 和ss:。

远程返回的记忆码是retf。

字符串处理的记忆码必须明确声明字符串大小。

例如,使用movsw 可以移动16 位的字串,使用movsb 可以移动8 位字节串。

汇编跳转和调用汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。

通过使用near 或far 前缀可以替代这样的跳转或调用,如下例所示:-a0100:05000100:0500 jmp 502 ; a 2-byte short jump0100:0502 jmp near 505 ; a 3-byte near jump0100:0505 jmp far 50a ; a 5-byte far jump可以将near 前缀缩写为ne。

区分字和字节内存位置当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀word ptr 或者前缀byte ptr 指定数据类型。

汇编语言第1次实验报告:DEBUG命令及汇编编程工具的使用

汇编语言第1次实验报告:DEBUG命令及汇编编程工具的使用
2获取计算机只认识机器语言的直观感受;
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。
小结
这次实验课让我认识到计算机的一些很基础的知识,加深了对编译语言和编译原理的理解,也了解到了一些基本的编译语言的基本指令,提升了对编译语言的兴趣,对编译语言的实际用途有了更深的了解。

实验一汇编语言上机及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使用方法.

实验预备知识汇编程序的建立与调试一、汇编程序的建立1. 使用工具(1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文件;(2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件-目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表;(3)Link连接程序,对使用的目标文件和库文件进行连接,生成.exe文件,同时调试用.map-地址映像文件;如果源程序无语法错误,上述三步将生成可运行的.exe文件,如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存在错误,需要进行调试。

(4)Debug调试程序,对.exe文件进行调试,修改,直到程序正确。

图3 目标程序生成步骤图2. 编程过程(1)用文本编辑软件,编写扩展名为.asm的源文程序文件。

(2)用汇编程序对编好的源文件进行汇编。

命令行:masm [*.asm] ↙如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。

使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。

*.obj-目标文件,用于连接生成可执行文件;*.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于调试;*.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。

(3)目标文件的连接命令行:link [*.obj] [*.obj] [*.lib] ↙连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。

*.map-地址映像文件,给出内存地址分配的有关信息。

下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe文件。

数字电子技术:汇编_DEBUG的使用

数字电子技术:汇编_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含有程序长度

汇编_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的使用

汇编语言源程序运行步骤和DEBUG的使用汇编语言是一种低级语言,用于编写计算机硬件的指令。

编写汇编语
言源程序后,需要经过一系列步骤才能在计算机上运行。

同时,调试工具DEBUG可以帮助程序员查找和修复程序中的错误。

一、汇编语言源程序运行步骤:
2.汇编:将源程序转化为机器码指令的过程称为汇编。

通过使用汇编
器(如MASM、NASM等),可以将源程序翻译成可执行的机器码文件。


汇编的过程中,所有的指令和操作数都被翻译成计算机可以理解的二进制
形式。

3. 链接:链接是将目标文件和库文件组合成一个可执行文件的过程。

当汇编源程序时,可能会调用外部库函数,这些函数的实现通常包含在库
文件中。

链接器(如link.exe)负责将这些函数和源程序连接起来,最
终生成一个可执行文件。

4.运行:通过操作系统加载可执行文件到内存中,并开始执行。

在运
行过程中,CPU按照程序的指令一步一步地执行,计算、存储和传输数据。

执行过程中,程序可能会从输入设备读取数据并输出结果。

二、DEBUG的使用:
DEBUG是一个DOS系统中内置的调试工具,可用于查找和修复程序中
的错误。

它通过允许程序员直接与内存、寄存器和指令交互,提供了一种
直观、低级的调试方式。

1.启动DEBUG:在DOS命令行中输入DEBUG命令,启动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调试命令介绍

《微机原理与接口技术》DEBUG调试命令介绍

第四部分有关软件软件一调试程序DEBUG汇编语言源程序经过编译、连接后生成可执行文件。

当运行可执行文件时,避免不了出现错误的结果,如果直接查找错误就比较困难。

操作系统自带的动态调试程序DEBUG是调试汇编语言的有力工具。

通过DEBUG程序的运行,可以显示或修改寄存器的内容。

也可以显示或修改存储器的内容。

可以单步执行,可以断点执行,可以连续执行。

也可以对存储器的目标代码进行反汇编。

通过这些操作,可以查看程序的运行情况和查找错误。

一、DEBUG的调用:1、DEBUG的调用格式:DEBUG的调用格式有两种:(1) DEBUG↵(2) DEBUG<文件标识符>↵在DEBUG成功的调入内存后,将出现提示符“-”,说明系统是在DEBUG程序管理之下。

DEBUG所属的命令,只有在出现DEBUG提示符后才能有效。

第一种方法调入后,则DEBUG程序或者与正在内存中的内容打交道,或者可以通过NAME和LOAD命令从指定的盘上读入被调试的程序。

第二种方法,则由OS把DEBUG程序调入内存后,DEBUG又直接将“文件标识符”所指的可执行文件调入内存中(对于.EXE文件,DEBUG把它装入到最低可用的区段中,并从100H开始装入。

对于不同的机器,或同一机器的不同的环境,其段地址是不同的)。

2、寄存器的初始化:进入DEBUG后,各个寄存器和标志位均被初始化。

其值可以用寄存器查看命令查看。

比如下图:3、标志寄存器:二、DEBUG命令一览表:关于DEBUG程序的更详细用法,可再进入DEBUG程序后输入“?”而获得。

DEBUG的命令共有19条。

三、常用DEBUG命令:1、反汇编命令U:用于将存储器中的指令码进行反汇编,翻译成较有意义的助记符形式,以帮助理解。

显示它们的段地址、偏移地址、机器码和汇编语言程序。

如图1.5所示。

一般常用以下三种格式:(1)U↙(2)U[address] ↙(3)U range↙其中,address是反汇编的起始地址,由CS:IP或IP指定。

汇编语言程序设计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地址开始执行, 遇到断点

汇编学习笔记——DOS及DEBUG介绍

汇编学习笔记——DOS及DEBUG介绍

汇编学习笔记——DOS及DEBUG介绍⼀、课程简介声明:该课程基于《汇编语⾔(第2版)》郑晓薇编著,机械⼯业出版社。

本节实验取⾃教材中第⼆章的《实例⼆进⼊计算机》。

实验环境:1.DOS 环境实验环境中安装有dosemu可以模拟DOS环境,并提供DEBUG、MASM、LINK等汇编语⾔开发程序。

2.进⼊DOS和DEBUG在桌⾯上双击dosemu图标,直接进⼊DOS。

再做如下操作:C:\〉D: ——回车后进⼊D盘D:\〉CD DOS ——进⼊DOS⼦⽬录D:\dos〉DIR ——列出⽬录中的⽂件D:\dos〉DEBUG ——进⼊DEBUG⼆、进⼊计算机微型计算机的字长与微处理器的寄存器位数有关。

以Intel 80X86系列微处理器为例:CPU是8086/8088、80286的字长是16位(⼆进制位bit),那么它们的寄存器的位数⼀定是16位的;32位字长的微机CPU是80386/80486或者Pentium系列,它们的寄存器的位数则是32位的。

在汇编语⾔中,数值后⾯分别⽤字母B、H、D代表⼆进制(Binary)、⼗六进制(Hexadecimal)、⼗进制数(Decimal)(⼗进制数可以省略D)。

在计算机中还规定采⽤字节、字、双字等单位来表⽰数据。

字节(Byte):8位⼆进制数。

如00000101B,或表⽰成05H;10000101B,或表⽰成85H。

字(Word):16位⼆进制数,等于2字节。

如1100010111010110B,或表⽰成C5D6H。

双字(Double Word):32位⼆进制数,⼜称为双精度数,等于4字节。

如23456789H。

2.1 8086寄存器组8086寄存器都是16位的寄存器,根据⽤途可分为4种类型。

分别是数据寄存器、地址寄存器、段寄存器和控制寄存器。

如图所⽰:img数据寄存器中每个寄存器⼜可以分为2个8位的寄存器:AH、AL,BH、BL,CH、CL,DH、DL。

H表⽰⾼字节(⾼8位)寄存器、L表⽰低字节(低8位)寄存器。

debug调试

debug调试

DEBUG调试DEBUG.EXE是Windows自带的用于调试可执行程序的一个工具软件,可在命令提示符下计入,同时也是进行汇编语言程序设计的一种最有效的调试工具。

由于DEBUG调试程序可以对单条指令或几条指令组成指令序列进行汇编、执行,并可以观察到指令执行前后在寄存器或内存中的结果,并对指令中错误的使用予以拒绝汇编,对于初学指令的读者,通过DEBUG调试程序对指令的调试,不但对指令的功能,格式,影响FLAGS寄存器的状况有个直观的了解,还可以进一步了解数据在计算机中存放的格式、使用指令时应该注意的问题乃至计算机的工作原理。

1 DEBUG命令格式1.1 DEBUG调试程序的启动在命令提示符下,可键入如下命令启动DEBUG调试程序:DEBUG [路径\文件名] [参数1] [参数2][路径\文件名]是供DEBUG调试程序调试的程序名称及路径。

若Debug后不带文件名,仅运行Debug程序,在需要时,再用N和L命令调入被调试程序;若命令中带有被调试程序名,则运行Debug的同时,还将指定的程序调入主存;[参数1][参数2]被调试程序所需要的参数。

“DEBUG 文件名”方式的调试方式只启动DEBUG的调试方式在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符,此时就可用Debug来调试程序。

若启动DEBUG调试程序时,被调试程序扩展名是.EXE,则需要重新定位。

此时,CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段。

DS=ES指向当前可用的主存段,BXCX包含被调试文件大小字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。

如上图所示,被调试的程序名是XIANSHI.EXE,在DEBUG调试程序提示符“-”下键入R命令,是显示当前CPU中所有寄存器的值,可见,CS:IP=0B60H:0000H(DEBUG调试程序中所有的数据均为十六进制,但不加尾标H),SS:SP=0B4BH:0000H,是由被调试的程序XIANSHI.EXE决定的,分别指向代码段和堆栈段。

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

6
2 U反汇编
格式:U[起始地址] U[起始地址 结束地址] U[起始地址 L字节数] 功能:对内存的机器码指令进行反汇编。 注意: (1)默认字节数为32个。 (2)起始地址中可以只包含有效地址,默认段为CS。 (3)结束地址只包含有效地址。 例1:-U
1547:0000 52
PUSH DS
-U1547:100 L18
3
3、DEBUG命令的说明 (1)所有命令都是1个字母。 (2)命令和参数用空格或“,”分隔,但仅仅在两个16进 制数之间才是必要的。
例:-DCS: 100 111
-DCS: 100,111 -D CS: 100,111 -D,CS: 100 111 (3)默认数据是16进制,不需要写H。
(4)每个命令由ENTER结束,并返回到“—”提示符下。
9
例2:从CS:0004开始执行3条指令。 -T=4 3
5、D显示内存单元的内容 格式:D[起始地址] D[起始地址 结束地址] D[起始地址 L字节数] 功能:显示指定内存单元的内容。 注意: (1)默认段为DS,显示128个字节。 (2)如果没有指定地址,则从上次D命令显示的下一显示单元开始; 否则从DS:100H开始。 (3)结束地址只能包含偏移地址。 例:-D0;从DS:0000H显示128个字节 -D0 000F;从DS:0000H开始显示到DS:000FH,共16个字节 -D0 L15;从DS:0000H显示21个字节
通过调试工具检查功能的正确性。
2
二、调试工具软件DEBUG
1、简介 面向汇编语言的动态调试工具,有19条命令。 通过跟踪、测试对.EXE和.COM文件动态跟踪调试。 查找文件中的错误及运行结果。 可以直接编写、调试小程序。 2、DEBUG的启动方式
(1)在DOS状态下直接输入
C:DEBUG ADD.EXE (2)在DOS状态下输入 C:DEBUG -NADD.EXE -L
12
9、N命名命令 格式:N 文件路径及名字
功能:在内存文件控制块中定义文件名。
10、L读磁盘 格式:L[地址][驱动器号][扇区号][扇区数] 如果在使用DEBUG时没有输入文件名,必须用N命令定义文件名,再用 L命令装入该文件。 例:C:DEBUG ADD.EXE C:DEBUG
-NADD.EXE
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命令。
10
6、R显示或修改寄存器的内容 格式:R[寄存器名] 功能:显示或修改指定寄存器的内容,如不指定寄存器则显示所有寄存器 的内容、标志位的状态以及CS:IP所对应指令的机器码和汇编指令。 例1:检查AX的内容,按ENTER则不修改 -RAX AX 0000 :例2:检查DX的内容,并修改为100H -RDX DX 0000 :100 例3:显示修改标志寄存器内容 -RF 例4:显示所有寄存器内容 -R AX=004B BX=0000 CX=0014 DX=0023 SP=1200 BP=1300 SI=0000 DI=0000 DS=2E5E ES=2E5E SS=2E6E CS=2E6F IP=0008 NV UP DI PL NZ NA PE NC 2E6F:0008 0442 ADD AL,42
11
7、E修改存储单元的内容 格式:E 地址 E 地址[值表] 功能:修改指定存储单元的内容,如果值表参数缺省,只能修改显示一个字 节。 例1:将ES:100H单元开始的内容改为34,“A”,“B”,5B -EES:100 34,“AB”,5B 例2:将100H单元内容改为36 -E100 1547:0100 33.36 8、F填充 格式:F 起始地址 终止地址 值表 F起始地址 L字节数 值表 功能:用值表内容修改指定存储单元的内容,如果值表数小于指定字节数, 则重复使用值表;如果值表数大于指定字节数,则忽略多余的值表。 例1:-F1542:100 106 1,2,3,4,‘ABCD’ 例2:-F、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 -
4
(5)可以检查输入指令的语法错误。
例1 -DCS: 100.111 ERROR 该输入不应该有“.” 例2 -A 154E:0008 MOV AX 2000 ERROR AX后面应该有“,”
(6)命令提示符为“—”。
5
三、 DEBUG命令及使用简介
1、A汇编 格式:A[内存地址] 功能:从内存指定地址开始输入汇编指令,并汇编成机器码, 相继存放在由指定地址开始的内存单元中。 注意: (1)不允许出现伪指令、宏指令、标号、变量。 (2)输入的数据以16进制表示。 (3)远返回的助记符为RETF。 (4)内存地址在“[]”中,否则默认为立即数。 (5)默认段为CS。
8
4、T单步跟踪指令 格式:T[=起始地址] T[=起始地址 指令条数] 功能:从起始地址开始,逐条跟踪指令的执行。执行完设定的指令 条数后就停止程序的执行。屏幕显示各个寄存器的内容和标志位的 状态。
注意:
(1)没有指定指令条数,每次只执行1条语句,即单步执行。 (2)如果没有指定地址,从当前CS:IP开始执行或接着上次的T 命令的下一条指令执行。 例1:单步执行1条指令: —T AX=004B BX=0000 CX=0014 DX=0023 SP=1200 BP=1300 SI=0000 DI=0000 DS=2E5E ES=2E5E SS=2E6E CS=2E6F IP=0008 NV UP DI PL NZ NA PE NC 2E6F:0008 0442 ADD AL,42
1547:0001 2BC0 SUB AX,AX 例2:-U1547:100 111
7
3、G执行程序 格式:G[=起始地址] G[=起始地址 断点地址1,断点地址2,….] 功能:从起始地址开始执行程序,执行到断点时停止,并显示所有寄存器及 标志位的值,同时指出下一条要执行的指令地址及指令。 注意: (1)地址缺省时,从CS:IP开始连续执行。 (2)如果起始地址中只包含有效地址,默认段为CS。 (3)最多可设置10个断点,次序任意,按照地址从小到大顺序执行。 (4)“=”不能确少,区分起始地址和断点地址。 (5)起始地址必须指向真正的程序指令。 例1:-G=0 08 AX=004B BX=0000 CX=001B DX=0000 SP=000C BP=0000 SI=0000 DI=0000 DS=2E5E ES=2E5E SS=2E6E CS=2E6F IP=0008 NV UP DI PL NZ NA PE NC 2E6F:0008 0442 ADD AL,42
14
13、H运算 格式:H 数1 数2 功能:两个16进制数加减运算 例:-H 0A 2 0C 08 14、M传送 格式:M 起始地址 结束地址 目的地址 M 起始地址 L字节数 目的地址 功能:把指定内存区域的内容传送到另一个区域。 注意: (1)默认段为DS。 (2)目的地址只能包含偏移地址。 例:-MCS:0 LB 100
-L
13
11、I 格式:I 外部端口地址
功能:从指定端口读数据并显示
例:-I 2F8 从2F8H外部端口读数据 MOV DX,2F8H IN AL,DX
12、O 格式:O 外部端口地址 字节数据 功能:向指定端口输出一个字节数据 例:-O 2F8 2 向2F8H外部端口输出字节数据2 MOV DX,2F8H MOV AL ,02H OUT DX,AL
汇编语言程序调试及工具软件DEBUG
汇编语言程序的调试
调试工具软件DEBUG
DEBUG调试实例
1
一、 汇编语言程序的调试
1、上机步骤: (1) 编辑源程序,生成.ASM文件; (2) 汇编.ASM文件,生成.OBJ文件; (3) 连接.OBJ文件,生成.EXE文件; (4) 调试可执行的.EXE文件,检查其正确性; (5) 运行可执行的.EXE文件,得到程序运行的结果。 2、调试步骤: (1)语法检查 通过MASM程序、LINK程序检查,生成.EXE文件。 (2)逻辑功能检查
相关文档
最新文档