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.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。
它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。
1)DEBUG程序使用在DOS提示符下键入命令:C>DEBUG [盘符:][路径][文件名.EXE][参数1][参数2]这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG 进行程序调试。
若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG 程序调入内存后,再由DEBUG将指定的文件名装入内存。
2)DEBUG的常用命令(1)汇编命令A格式:A[起始地址]功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。
若缺省起始地址,则从当前CS:100地址开始存放。
A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。
(2)反汇编命令U格式1:U[起始地址]格式2:U[起始地址][结束地址|字节数]功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。
格式2将指定范围的内存单元中的目标代码转换成汇编指令。
(3)显示、修改寄存器命令R格式:R[寄存器名]功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。
缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。
AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000DI=0000 DS=3000 ES=23A0 CS=138E IP=0000NV UP DI PL NZ NA PO NC138E:0000 MOV AX,1234-R AX ;输入命令AX 0014 ;显示AX的内容:;供修改,不修改按回车。
调试程序Debug常用命令
20122012-4-27
7
2)D命令(显示内存单元内容) ) 命令 显示内存单元内容) 命令(
格式3:_D DS: 长度↙ 格式3:_D DS:开始偏移地址 L 长度↙ 作用: 作用:显示指定段中从开始偏移地址起由长度指定的 字节单元的内容。 字节单元的内容。 :_D DS: 例:_D DS:4 L 5↙
20122012-4-27
2
1)R命令(查看和修改寄存器内容) ) 命令 查看和修改寄存器内容) 命令(
格式1:_R (_r 格式1:_R↙(_r↙) 作用:显示所有寄存器的内容。 作用:显示所有寄存器的内容。
20122012-4-27
3
1)R命令(查看和修改寄存器内容) ) 命令 查看和修改寄存器内容) 命令(
20122012-4-27
17
6)T命令(单步运行或跟踪) 命令(单步运行或跟踪)
格式2:_T 偏移地址↙ 格式2:_T =偏移地址↙ 作用:执行指定的偏移地址处的一条指令, 作用:执行指定的偏移地址处的一条指令,执行完后 停下来, 停下来,并显示所有寄存器内容及状态标志位的值和 下一条要执行的指令。 下一条要执行的指令。 :_T 0105↙ 例:_T =0105↙
20122012-4-27
9
3)E命令(修改内存单元内容) 命令(修改内存单元内容)
格式1:_E DS: 内容表↙ 格式1:_E DS:偏移地址 内容表↙ 作用: 作用:用内容表中内容去替换从偏移地址开始的内存 单元的内容。 单元的内容。 :_E DS: dsx’ AA↙ 例:_E DS:4 ‘dsx FF 00 AA↙
调试程序Debug 调试程序Debug 常用命令简介) (常用命令简介)
Debug的启动 Debug的启动
DEBUG命令
•写文件
-W[<内存地址>] ①指定文件名
-N<文件名>
②将要写文件长度(字节数)放BX,CX中
③键入读文件命令-W[<内存地址>]
•输入命令I ---从某一I/0端口取得输入数据字节 I<端口号>
11.退出DEBUG命令Q(Quit) -Q
如:-T=100
-T=100 2
8.查找、比较和移动内存数据命令。S/C/M 对内存中的数据进行比较、移动及查找某
一特定字节。 •移动内存命令M(Move) 格式:M <源地址范围><目的地址>
如:-MDS:00 1F 100
•比较内存命令C(Compare) 比较两块存储区的内容,若不同,显示出
注意两点: ①<内存地址>的形式是段:偏移量。若未指定地址,则 DEBUG约定L、W命令使用CS段,而E命令使用DS段。 ②相对扇区号是0面0道1扇区为相对0,扇区数最大为 80H,即每次读写可达64KB。
如何将软盘的最后一个扇区全部写上“*” ??
10.其它命令 •十六进制的和差运算H
例: -H12 34 0046 FFDE -H655 8787 8DDC 7ECE
如:-U100
默认CS段
•对指定范围内的存储单元反汇编 -U rang 如: -U100 109
6.运行命令G(Go) -G[=address1] [address2 [address3…]} 从指定地址1开始运行,后面为断点地址。如不指定 则从当前CS:IP开始运行。
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"命令可以让程序以单步执行的方式运行。
PC技术 DEBUG常用命令及其使用
DEBUG常用命令及其使用Debug是汇编程序设计的调试工具,它通过提供单步执行、断点设置等功能为汇编程序员提供了有效的调试手段。
我们通过在Debug状态下键入“?”号,就可得到所有的Debug 命令及其格式。
Debug命令一览表:assemble A[address]compare C range addressdump D[range]enter E address[list]fill F range listgo G[=address][addresses]hex H value1value2input I portload L[address][drive][firstsector][number] move M range addressname N[pathname][arglist]output O port byteproceed P[=address][number]quit Qregister R[register]search S range listtrace T[=address][value]unassemble U[range]write W[address][drive][firstsector][number] allocate expanded memory AX[#pages]deallocate expanded memory XD[handle]map expanded memory pages XM[Lpage][Ppage][handle]display expanded memory status XS上面如此多的Debug命令,也许会吓退汇编用户,但实际并不是所有的命令都必须掌握的,在进行上机程序题调试时,最常用的命令就是设置断点、单步执行、查看内存变量等,因为我们编制好汇编程序后,如果运行结果正确当然没有什么好做的,但当运行结果与我们预期的结果不一致时,就必须对程序进行调试。
DEBUG调试命令
实验一 DEBUG调试命令的使用
• 实验目的:练习DEBUG常用的调试命令的 使用方法及使用时需注意的事项。 • 实验内容:常用DEBUG调试命令的使用。
实验二 数据区的移动
• 实验目的:熟悉汇编语言程序的设计,编 写数据区的移动实验程序。 • 实验内容:将以SI的内容为首地址的源串的 16个字节数据传送到以DI为首地址的目的 串中。(用两种方法实现:串的操作指 • 格式: • R :显示所有内部寄存器的内容和标志寄 存器的状态 • R [寄存器名]:显示和修改指定寄存器的内 容
5、追踪和显示命令T • • • • 格式: T [=地址] T [=地址] [条数] 其中条数决定了一共跟踪几条指令后返回 DEBUG状态
6、反汇编命令U • • • • • 格式: U [地址] U [地址范围] U 功能:将指定范围内的代码以汇编语言的 形式显示,同时显示该代码位于内存的地 址和机器码
实验三
二进制加法
• 实验目的:练习汇编语言程序设计方法, 编写二进制加法实验程序。 • 实验内容:在变量A和B开始处,各存放有 一个四字节的压缩的BCD数,将这两个数 相加,并将结果和进位标志存放在变量C处。
实验四 汇编语言程序设计(一)
• 实验目的:练习汇编语言程序设计方法, 编写数据排序实验程序。 • 实验内容:在4000h开始处存放有100个无 序的无符号数,试将这些数按照升序的顺 序排列。
实验五 汇编语言程序设计(二)
• 实验目的:练习汇编语言程序设计方法, 编写查找相同数的个数实验程序。 • 实验内容:在数据段起始地址1600h,长度 为100的字节串中,查找‘&’字符的个数, 并将个数存放在4000h单元中。(可以采用 REP SCASB和MOV指令)
DEBUG各命令详细说明(很详细)
DEBUG各命令详细说明(很详细)2.启动DEBUG在命令窗口中启动DEBUG,启动命令一般为:DEBUG [文件名] [参数表]。
其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。
被调试的文件可以是系统中的任何文件,但通常它们的后缀为.EXE或.COM。
当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。
DEBUG中所有命令及其含义如DEBUG各命令功能说明表所示。
关于使用命令的几点说明:在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行命令是单个字母,命令和参数的大小写可混合输入可用F1、 F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令当命令出现语法错误时,将在出错位置显示“^ Error”可用Ctrl+C或Ctrl+Break来终止当前命令的执行,还可用Ctrl+S或Ctrl+Num Lock来暂停屏幕显示(当连续不断地显示信息时)以下通过实现十九个示例来熟悉DEBUG的命令集和基本的汇编指令。
R命令的使用R命令作用:观看和修改寄存器的值。
在提示符“-”下输入以下命令:R。
DEBUG将会显示出当前所有寄存器和标志位的状态。
接下来再输入命令RCX。
在提示符“:”后输入100。
该命令的作用是将寄存器CX的值设置为100(注意:DEBUG使用的是十六进制,这里的100相当于十进制的256。
)最后再执行R命令,观看修改后的寄存器值。
H命令的使用H命令作用:计算两个十六进制数的和与差。
在提示符“–”下输入以下命令:H 10 1。
观看命令执行结果。
运行结果的前一个数是计算出来的和,后一个数是计算出来的差。
计算结果均用十六进制形式表示。
D命令的使用D命令作用:显示内存区域的内容。
在提示符“–”下连续执行命令R、D、D。
观看命令执行结果。
前面已经介绍过了,命令R的作用是显示当前寄存器的值。
而命令D的作用是显示内存区域的内容,最左边是内存的起始地址,中间以十六进制的形式显示内存值,最右边是以ASCII码的形式显示内存值。
DEBUG调试命令介绍
DEBUG调试命令介绍1.主要调试命令:(1)反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解,如图1.5所示。
一般常用以下三种格式:a)-U↙:从当前IP处开始,对连续约32字节内容反汇编。
如对TEST.EXE,刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示:-U↙13C2:0000 B402 MOV AH,0213C2:0002 B241 MOV DL,4113C2:0004 CD21 INT 2113C2:0006 B44C MOV AH,4C13C2:0008 CD21 INT 2113C2:000A 8B4606 MOV AX,[BP+06]………………13C2:0020 8B07 MOV AX,[BX]-图1.5 反汇编命令的执行结果在上例中,13C2:0000表示CS:IP的内容(其中CS的值是动态值);B402代表该处存放的二进制数据,亦即指令MOV AH,02H的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。
特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中13C2:000A单元以后的部分,显然不是TEST.EXE的内容。
另外还需注意,DEBUG默认使用十六进制。
b)–U 0123↙:从指定的IP=0123处开始,对连续约32字节内容反汇编。
c)–U 0123 0143↙:从指定的IP=0123处开始反汇编,直至指定的0143处结束。
(2)显示寄存器命令R:显示或修改寄存器的内容,如图1.6所示。
一般常用以下形式:a)-R↙:显示所有寄存器当前的内容及当前将执行的指令。
如对TEST.EXE,在程序运行之前,键入R命令:-R↙AX=0000 BX=0000 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13B2 ES=13B2 SS=13C2 CS=13C2 IP=0000 NV UP EI PL NZ NA PO NC13C2:0000 B402 MOV AH,02-图1.6 显示寄存器命令执行结果在显示寄存器内容时,状态标志寄存器F表示成各个分离的标志位,其意义如下表1.1所示:表1.1 标志寄存器的标志为含义b)-R AX↙:显示指定的AX寄存器当前的内容,并等待键入新值;如果不作修改,可直接回车。
debug调试命令
调试程序 DEBUG一、如何调用 DEBUG 程序在 PC-DOS 的提示符 A>下,可打入如下命令;A>DEBUG[d:][Path[filename[.ext]][Parm1]][Parm2]其中,DEBUG 是调试程序的文件名,后面是要调试的程序的文件标识符。
若在命令中规定了文件标识符,则在 DOS 把 DEBUG 程序调入内存后,DEBUG 程序把要调试的程序(根据文件标识符)调入内存,若在命令中没有规定文件标识符,则 DEBUG 程序或者与正在内存中的内容打交道,或可以用 Name 和 Load 命令,从盘上输入要调试的程序。
命令行中的[Parm1(参数1)][Parm2(参数2)],我们在后面结合具体的命令加以介绍。
在 DEBUG 程序调入后,发出提示符“-”,说明现在系统在 DEBUG 程序的管理之下。
所有的 DEBUG 命令,也只有在出现提示符后才有效。
二、 DEBUG 程序对寄存器和标志位的初始化在 DEBUG 程序启动后,它把各个寄存器和标志位,置成以下状态:1、段寄存器(CS,DS,ES和SS)置于自由存储空间的底部,也就是 DEBUG 程序结束以后的第一个段。
2、指令指针(IP)置为‘0100’。
3、堆栈指针置到段的结尾处,或者是装入程序的临时底部,取决于哪一个更低。
4、余下的寄存器(AX,BX,CX,DX,BP,SI和DI)置为0。
然后,若调用 DEBUG 时包含一个要调试的程序的文件标识符,则 CX 中包含以字节表示的文字长度。
若文件大于 64K ,则文件长度包含在 BX 和CX 中(高的部分在 BX 中)。
5、标志位都置为清除状态。
6、default 的磁盘缓冲区置于码段的X“80”。
注:若由 DEBUG 调入的程序,具有扩展名 .EXE,则 DEBUG 必须进行再分配,把段寄存器,堆栈指针,指令指针置为文件中所规定的值。
三、有关 DEBUG 命令的一些共同信息1、DEBUG 命令都是一个字母,后面跟有一个或多个参数。
debug命令调试
DEBUG命令及汇编指令调试微机原理与接口技术研究性学习[通信1101] | [汪广超] | [11211018][指导教师:戴胜华]2013/9/19目录1 DEBUG命令调试 (2)1.1 R命令的使用 (2)1.2 D命令的使用 (3)1.3 H命令的使用 (4)1.4 C命令的使用 (5)1.5 E命令的使用 (6)1.6 F命令的使用 (6)1.7 M命令的使用 (7)1.8 A、T命令功能介绍 (7)2汇编语言常用指令调试 (8)2.1 数据传送指令MOV (8)2.2 数据交换指令XCHG (10)2.3 堆栈操作指令PUSH/POP (11)2.4 有效地址传送指令LEA (12)2.5 I/O数据传送指令 (13)2.6 加法指令 (14)2.6 减法指令 (16)2.8 乘法指令 (18)2.9 除法指令 (19)2.10 逻辑运算指令 (20)2.11 位移指令 (22)2.12 无条件转移指令 (23)3小结 (24)1 DEBUG命令调试当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。
DEBUG中所有命令及其含义如DEBUG各命令功能说明表所示,在提示符“-”下输入以下命令:?,执行结果如下图所示。
关于使用命令的几点说明:在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行;命令是单个字母,命令和参数的大小写可混合输入;当命令出现语法错误时,将在出错位置显示“^ Error”。
DEBUG命令很多且复杂,这里不再对所有命令一个一个调试,下面将举例介绍我通过学习摸索出来的几个命令的常用用法。
1.1 R命令的使用R命令作用:显示或改变一个或多个寄存器。
在提示符“-”下输入以下命令:r,DEBUG将会显示当前所有寄存器和标志位的状态。
标志位寄存器状态位解读方法如下表格。
接下来再输入命令rbx,在提示符“:“后输入100。
该命令的作用是将寄存器BX的值设置为100,DEBUG默认使用的是十六进制,这里的100相当于十进制的256。
调试工具debug的使用及基本指令的用法 (实验2)
10DD:0100 7C0A JL 010C(标志寄存器的各个标志位)
(当前CS:IP所指向的指令)
标志寄存器各标志位的含义:
溢出标志OF: OV/NV(1溢出/0不溢出)
方向标志DF: DN/UP(1减/0增)
《微机原理与接口技术》实验报告
实验序号:实验2实验项目名称:调试工具debug的使用及基本指令的用法
学 号
姓 名
专业、班
实验地点
指导教师
实验时间
一、实验目的及要求
1、掌握debug的基本命令和8086的各种基本指令的用法。
2、掌握DEBUG下的主要命令及在DEBUG下编写简单程序、调试程序的方法;
3、理解CPU各种寄存器的作用:
10DD:2010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
4、观察和修改内存单元的内容
-e 2000修改从地址DS:2000H开始内存单元的内容
10DD:2000 00.01 00.02
debug常用主要命令
DEBUG主要命令DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
一、DEBUG程序的调用在DOS的提示符下,可键入命令:C:\DEBUG [D:][PATH][FILENAME[.EXT>[PARM1][PARM2]其中,文件名是被调试文件的名字。
如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。
如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。
命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。
在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。
二、DEBUG的主要命令1、显示存储单元的命令D(DUMP),格式为:_D[address]或_D[range]例如,按指定范围显示存储单元内容的方法为:-d100 12018E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW. 718E4:0120 8B其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。
这里没有指定段地址,D命令自动显示DS段的内容。
如果只指定首地址,则显示从首地址开始的80个字节的内容。
如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
2、修改存储单元内容的命令有两种。
·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。
调试工具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”回车即可
懂得汇编的朋友,相信看懂下面命令是没多大问题的。
常用命令:
-A 汇编格式:A 起始地址
例如:输入“A”,回车,然后输入“MOV AX,10”回车。
再按一次回车,则退出汇编状态。
-U 反汇编格式:U 起始地址结束地址
例如:接上面,输入“U”,回车,即可看到结果。
以下不再举例,类似上面,有待自己研究,这样记得更牢。
谢谢!
-T 单步执行格式:T 起始地址运行指令数
-G 断点执行格式:G 起始地址断点地址结束地址
-D 数据显示格式: D 起始地址结束地址
-R 显示修改寄存器
格式:R 寄存器名
-P 单步执行,不进入中断
格式:T 起始地址运行指令数
-F 连续填入内存内容
格式:起始地址结束地址要填入的数值系列
-E 单个修改内存内容
格式: E 地址填入内容
-Q 退出debug状态
格式: Q 回车
状态标志位的值如下图:
不常用命令:
-M 内存搬家指令:
格式:M 起始地址结束地址目的地址-H 16进制加法:
格式:H 操作数1 操作数2
结果显示:加法结果减法结果。
思科交换机Debug调试命令-电脑资料
思科交换机Debug调试命令-电脑资料下面列出了部分常用的debug 命令,与各协议和功能相关的更具体的debug命令和对其细节的注释,请参见本手册及命令参考手册中的各相关章节.要使用debug功能,需要在特权用户模式下进行配置: 命令功能Switch#debug 显示所有可用的debug指令及简短的说明Switch #show debugging 显示当前各个调试开关的状态Switch #debug all 打开系统所有的调试开关Switch #undebug all 关闭所有的调试开关Switch #debug aaa 打开AAA调试开关Switch #debug acl 打开ACL调试开关Switch #debug arp 打开ARP调试开关Switch #debug dvmrp 打开DVMRP调试开关Switch #debug filter 打开过滤器调试开关Switch #debug igmp 打开IGMP调试开关Switch #debug ip 打开IP调试开关Switch #debug mstp 打开MSTP调试开关Switch #debug multicast 打开多播数据流调试开关Switch #debug pim 打开PIM调试开关Switch #debug sys-guard 打开sys-guard调试开关Switch #debug vlan 打开VLAN调试开关首先,要打开日志功能: Switch(config) # logging on,其次,设置日志的级别为Debug:Switch(config) # logging monitor 7在Telnet客户端登陆模式下,缺省的debug调试信息不会发送到Telnet客户端,如果需要在Telnet客户端显示调试信息,则需要在该终端会话的特权用户模式下,执行如下命令:Switch #terminal monitor交换机包含有大量的调试命令,上表所列出的,仅仅是部分DEBUG 的第一级命令而已,还有许多的DEBUG命令是有各自的子命令的,比如debug ip命令,后面还有许多的扩展选项:Switch #debug ipcache Debug IP cacheospf Debug IP OSPFpacket Debug IP packetpacket-event Debug IP packet-eventrip Debug IP RIP 说明:打开调试开关,将会占用CPU资源,某些调试开关的打开,甚至会严重占用CPU资源,影响交换机运行效率,所以如果没有必要,请不要轻易打开调试开关,尤其慎用debug all 命令,在调试结束后,应注意关闭全部调试开关.一,IGMP调试信息debug igmp packet收发IGMP报文(查询,加入,离开)丢弃IGMP报文的具体原因degug igmp event各种IGMP通知事件(添加网络范围,接口变化,IP地址变化)创建/删除组事件添加/删除组成员事件当种事件发生变化时,能够通过这些变化原因,定位问题引起的原因debug igmp timerIGMP定时器事件(发送查询,加入报告,老化组,老化端口成员)获知当前发生的各个定时器的事件,可具体到某个网络接口上二,DVMRPdebug dvmrp packetDVMRP收发报文(邻居HELLO,路由报告)丢弃报文的具体原因debug dvmrp event各种DVMRP通知事件(添加网络范围,接口变化,IP地址变化)邻居变化事件(添加,删除,刷新)debug dvmrp timerDVMRP定时器事件(路由报告,单播路由通告,路由满通告)获知当前发生的各个定时器的事件,可具体到某个网络接口上debug dvmrp route路由变化,DVMRP路由的添加与删除三,PIMdebug pim packet收发报文(HELLO, 加入/剪枝,ASSERT,嫁接,状态刷新,PIM-SM注册,PIM-SM注册停止,加入/剪枝, C-RP通告,BSR报文))丢弃报文的具体原因debug pim eventPIM各种通知事件(添加网络范围,接口变化,IP地址变化)当种事件发生变化时,能够通过这些变化原因,定位问题引起的原因debug pim timer PIM定时器事件(断言,剪枝,嫁接,加入,状态刷新, C-RP,BSR)获知当前发生的各个定时器的事件,可具体到某个网络接口上debug pim helloHELLO邻居变化事件(添加,删除,刷新,DR选举),获知当前拓扑的变化.四,多播数据流debug multicast packet收发报文(多播流)丢弃报文的具体原因debug multicast event各种通知事件(添加网络范围,接口变化,IP地址变化)当种事件发生变化时,能够通过这些变化原因,定位问题引起的原因debug multicast timer定时器事件(老化MFC,多播路由表项)得知发生的各个定时器事情debug multicast route创建/删除路由表项多播路由表项转发列表变化(添加,删除)当问题出现时,能判断对硬件操作是否成功,如果失败,能得知失败原因。
汇编语言程序设计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地址开始执行, 遇到断点
DEBUG的命令及功能
DEBUG的命令及功能
在软件开发和调试过程中,调试(Debugging)是一个关键步骤,它用于定位和解决代码中的错误和缺陷。
为了有效地进行调试,开发人员经常使用调试工具和命令来检查和分析代码的执行过程。
下面是一些常见的调试命令及其功能。
总结起来,调试命令是开发人员在调试过程中使用的工具,旨在帮助他们分析代码的执行过程、检查变量的值和状态,并解决代码中的错误和缺陷。
在大多数集成开发环境(IDE)和调试器中,这些命令通常都有单独的按钮、快捷键和菜单选项,使开发人员可以方便地使用它们。
调试命令的功能是非常丰富和多样化的,可以根据开发人员的需求和调试场景进行选择和配置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 DEBUG的基本调试命令一、实验目的1.熟悉Pentium微处理器指令系统和寻址方式2.掌握DEBUG调试软件的基本命令、调试方法。
二、DEBUG调试软件介绍DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。
它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。
WINDOWS操作系统安装时自带有DEBUG.EXE程序,不需另外安装。
1、DEBUG程序的使用在DOS提示符下键入命令:C:\> DEBUG [盘符:][路径][文件名.EXE][参数1][参数2]这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG 进行程序调试。
若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG 程序调入内存后,再由DEBUG将指定的文件名装入内存。
2、DEBUG的常用命令(1)汇编命令 A格式:A [起始地址] 或 A ;每输入完一条指令,用回车键来确认。
功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。
若缺省起始地址,则从当前CS:100 (段地址:偏移地址)地址开始存放。
A命令是按行进行汇编,主要是用于小段程序的汇编或对目标程序的修改,具有检查错误的功能。
如有错误,用^Error提示。
然后重新输入正确命令即可。
注:DEBUG的A命令中数字部分输入的默认格式是16进制。
如输入10,对于计算机而言,就是10H。
另外A命令不支持标识符的输入。
只能用准确的段地址:偏移地址来设置跳转的位置。
(2)反汇编命令 U格式1:U [起始地址]格式2:U [起始地址][结束地址|字节数]功能:格式1从指定起始地址处开始固定将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。
格式2将指定范围的内存单元中的目标代码转换成汇编指令。
(3)显示、修改寄存器命令 R格式:R[寄存器名]或R功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。
缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。
AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000DI=0000 DS=3000 ES=23A0 CS=138E IP=0000NV UP DI PL NZ NA PO NC138E:0000 MOV AX,1234-R AX ;输入命令AX 0014 ;显示AX的内容: ;供修改,不修改按回车。
若对标志寄存器进行修改,输入:-RF屏幕显示如下信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。
NV UP DI PL NZ NA PO NC不修改按回车键。
要修改需个别输入一个或多个此标志的相反值,再按回车键。
R命令只能显示、修改16位寄存器。
(4)显示存储单元命令 D格式1:D[起始地址]格式2:D[起始地址][结束地址|字节数]功能:格式1从起始地址开始按十六进制显示80H(128)个单元的内容,每行16个单元,共8行,每行右边显示16个单元的ASCII码,不可显示的ASCII码则显示“·”。
格式2显示指定范围内存储单元的内容,其他显示方式与格式1一样。
如果缺省起始地址或地址范围,则从当前的地址开始按格式1显示。
例如: -D 200 ;表示从DS:0200H开始显示128个单元内容-D 100 120 ;表示显示DS:0100-DS:0120单元的内容说明:在DEBUG中,地址表示方式有如下形式:段寄存器名:相对地址,如:DS:100段基值:偏移地址(相对地址),如:23A0:1500(5)修改存储单元命令 E格式1:E[起始地址] [内容表]格式2:E[地址]功能:格式1按内容表的内容修改从起始地址开始的多个存储单元内容,即用内容表指定的内容来代替存储单元当前内容。
例如:—E DS:0100 'VAR' 12 34表示从DS:0100 为起始单元的连续五个字节单元内容依次被修改为'V'、'A'、'R'、12H、34H。
格式2是逐个修改指定地址单元的当前内容。
如:—E DS:0010156F:0010 41.5F其中156F:0010单元原来的值是41H,5FH为输入的修改值。
若只修改一个单元的内容,这时按回车键即可;若还想继续修改下一个单元内容,此时应按空格键,就显示下一个单元的内容,需修改就键入新的内容,不修改再按空格跳过,如此重复直到修改完毕,按回车键返回DEBUG“-”提示符。
如果在修改过程中,将空格键换成按“-”键,则表示可以修改前一个单元的内容。
(6)运行命令 G格式:G[=起始地址][第一断点地址[第二断点地址……]功能:CPU从指定起始地址开始执行,依次在第一、第二等断点处中断。
若缺省起始地址,则从当前CS:IP指示地址开始执行一条指令。
最多可设置10个断点。
(7)跟踪命令 T格式:T[=起始地址][正整数] ;缺省时执行一条指令功能:从指定地址开始执行‘正整数’条指令。
若缺省‘正整数’,表示执行一条指令,若两项都缺省,表示从当前CS:IP指示地址开始执行一条指令。
(8)指定文件命令 N格式:N<文件名或扩展名>功能:指定即将调入内存或从内存写入磁盘的文件名。
该命令应该用在L命令和W命令之前。
(9)装入命令 L格式1:L[起始地址][盘符号][扇区号][扇区数]格式2:L[起始地址]功能:格式1根据盘符号,将指定扇区的内容装入到指定起始地址的存储区中。
格式2将N命令指出的文件装入到指定起始地址的存储区中,若省略起始地址,则装入到CS:100处或按原来文件定位约定装入到相应位置。
(10)写磁盘命令 W格式1:W<起始地址>[驱动器号]<起始扇区><扇区数>格式2:W[起始地址]功能:格式1把指定地址开始的内容数据写到磁盘上指定的扇区中。
格式2将起始地址的BX×10000H+CX个字节内容存放到由N命令指定的文件中。
BX中存放程序段地址的末地址与首地址的差(通常程序存放在一个段中,即BX=0),CX中存放偏移地址的末地址与首地址的差。
在格式2的W命令之前,除用N命令指定存盘的文件名外,还必须将要写的字节数用R命令送入BX和CX中。
(11)退出命令 Q格式:Q功能:退出DEBUG,返回到操作系统。
以上介绍的是DEBUG常用命令,其他命令请参考有关书籍。
三.实验内容1.熟悉debug调试软件,掌握其中红色标注的命令。
2.将0-99等100个数依次存放到1000:0000为首地址的存储单元中。
所对应的宏汇编格式的程序:CODE SEGMENTCS:CODEASSUMESTART: MOV AX,1000HMOV DS, AXXOR BX, BXMOV CX, 0064HMOV AL, 00HALA1: MOV[BX],INC ALDAAINC BXLOOP A1MOV AX, 4C00HINT 21HCODE ENDSEND START用单步命令调试该程序,察看存储单元数据的变化。
3.已知(AX)=701FH,(BX)=13F1H,(CL)=02H。
用DEBUG命令逐条观察下述各指令执行前后相关寄存器和标志位的变化。
SF ZF AF PF CF OF①ADD AX, BX (AX)= H②SUB AX, BX (AX)= H③AND AX, BX (AX)= H④OR AX, BX (AX)= H⑤XOR AX, BX (AX)= H⑥IMUL BL (AX)= H⑦MUL BH (AX)= H⑧SHR AX, CL (AX)= H⑨SAR AX, CL (AX)= H⑩SHL AX, CL (AX)= H程序框架如下,请填上适当的指令完成上述任务。
CODE SEGMENTASSUMECS:CODESTART:;学生自己的程序……;学生自己的程序MOV AX, 4C00HINT 21HCODE ENDSEND START标志名标志为1 标志为0OF DF IF SF ZF AF PF CFOVDNEINGZRACPECYNVUPDIPLNZNAPONC4. 下列程序的功能是求一组十进制无符号数(2位数)的最大值,读懂该程序,写出注释,画出流程图。
1 DATA SEGMENT PARA2 BLOCK DB ‘52’, "14", "56", "85", "34"3 DB "63", "38", "70", "18", "69"4 COUNT EQU $-OFFSET BLOCK5 MAX D B 2 DUP(?)6 DATA ENDS78 CSEG SEGMENT PARA 'CODE'ASSUME CS:CSEG, DS:DATA9 START:1011 MOV AX,DATA12 MOV DS, AX13 MOV SI, OFFSET BLOCK14 MOV BX, OFFSET MAX15 MOV CX,COUNT16 MOV DH,[SI]17 MOV DL,[SI+1]18 INC SI19 INC SI20 COMP: LODSBAL21 MOV AH,22 LODSBDX23 CMP AX,24 JL NEXTAX25 MOV DX,26 NEXT: DEC CX27 LOOP COMPDH28 MOV [BX],DL29 MOV [BX+1],3031 PRINT: MOV BX, OFFSET MAX32 MOV DL, [BX] ;DL中放入要显示的字符高位2 ;AH=2表示显示输出33 MOV AH,34 INT 21H;DOS功能调用[BX+1] ;DL中放入要显示的字符低位35 MOV DL,36 INT 21H4CH ;返回到DOS37 MOV AH,38 INT 21H39 CSEG ENDS40 END START①用MASM 6.11汇编上述程序②用DEBUG跟踪、调试上述程序用U命令列出反汇编程序,与源程序清单进行比较跟踪到语句12,检查语句执行后DS寄存器的变化语句12执行后,发命令D DS:0检查显示的内容是否与程序数据段定义的单元内容一致。