PC机调试程序DEBUG命令一览表

合集下载

调试程序Debug常用命令

调试程序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命令大全

debug命令大全
-r cx
:0014
-w
-q
冷启动:
-a 100
jmp ffff:0
int 20
-n a:
-r cx
:0007
-w
-q
2、加密dos内部命令
例如要加密 dir
用pctools或diskedit找 c:下的文件
-a 150
****:0150 db "cmos.dat",0
****:0159
-r cx
cx 0000
:60
-n save
-w
-q
-w 100 2 0 1
-q
(2)恢复cmos数据 进入debug
-a 100
****:*100 mov cx,0150
****:**** mov ah,3d
****:**** mov al,00
****:**** int 21
****:**** mov dx,1000
****:**** mov bx,ax
****:**** mov cx,0040
****:**** mov ah,3f
****:**** int 21
****:**** out 70,al
****:**** mov cx,0005
****:0115 loop 0115
****:**** in al,71
****:**** mov 【bx】,al
****:**** cmp ah,0e
****:**** jb 0123
****:**** add ah,80
-e e0:4c

DEBUG命令

DEBUG命令
②键入读文件命令-L[<内存地址>] ③将文件装入CS:<地址>开始的内存 ④BX和CX中存放计入文件的字节数 例: E:>DEBUG -N -L -R
•写文件
-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开始运行。

PC技术 DEBUG常用命令及其使用

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命令

表1 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修改存储单元内容·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。

命令格式为:-E address [list]例如,-E DS:100 F3'XYZ'8D其中F3,'X','Y','Z'和各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。

第二种格式则是采用逐个单元相继修改的方法。

命令格式为:-E address例如,-E DS:100则可能显示为:18E4:0100 89.-如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如下:18E4:0100 89.78 1B.-这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。

·填写命令F(FILL),其格式为:-F range list例如:-F 4BA:0100 5 F3'XYZ'8D使04BA:0100~0104单元包含指定的五个字节的内容。

DEBUG的命令及功能

DEBUG的命令及功能

DEBUG的命令及功能1. A(assemble):将指令转换成机器码并存储到内存中。

-A100:在内存地址100处开始输入指令。

2. D(dump):显示内存中的内容。

-D100200:显示内存地址从100到200的内容。

3. E(enter):修改内存中的数据。

-E1004000:在内存地址100处将数据修改为40。

4. G(go):执行程序。

-G100:从内存地址100处开始执行程序。

6. Q(quit):退出DEBUG。

-Q:退出DEBUG程序。

7. R(registers):显示和修改CPU寄存器的值。

-R:显示所有寄存器及其值。

-RAX1234:将AX寄存器的值修改为12348. T(trace):单步跟踪程序的执行。

-T:执行下一条指令并停止。

9. P(proceed):继续执行程序直至下一个断点或程序结束。

-P:继续执行程序。

10. U(unassemble):将机器码转换成指令。

-U100120:从内存地址100处开始将机器码转换成指令。

11. B(breakpoint):设置断点。

-B100:在内存地址100处设置断点。

12. S (search):在内存中指定的内容。

- S 100 200 "Hello": 在内存地址100到200之间字符串"Hello"。

13. L(load):加载程序到内存中。

-L100:从内存地址100处加载程序。

14. W(write):将内存中的数据写入文件。

- W 100 200 file.txt: 将内存地址100到200的数据写入到文件file.txt。

15. M(move):将内存中的数据移动到指定的地址。

-M100200300:将内存地址100到200的数据移动到地址300处。

16. X (execute):执行子程序。

-X100:从内存地址100处执行子程序。

17. H(help):显示DEBUG命令的帮助信息。

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各命令详细说明(很详细)

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码的形式显示内存值。

PC Debug命令

PC Debug命令

启动Debug,它是可用于测试和调试MS-DOS 可执行文件的程序。

Debug [[drive:][path] filename [parameters]]参数[drive:][path] filename指定要测试的可执行文件的位置和名称。

parameters指定要测试的可执行文件所需要的任何命令行信息。

++说明使用Debug 命令但不指定要测试的文件如果使用没有位置和文件名的Debug 命令,然后键入所有的Debug 命令以响应Debug 提示符,连字符(-)。

Debug 命令以下是Debug 命令列表:? 显示Debug 命令列表。

a 汇编8086/8087/8088 记忆码。

c 比较内存的两个部分。

d 显示部分内存的内容。

e 从指定地址开始,将数据输入到内存。

f 使用指定值填充一段内存。

g 运行在内存中的可执行文件。

h 执行十六进制运算。

i 显示来自特定端口的1 字节值。

l 将文件或磁盘扇区内容加载到内存。

m 复制内存块中的内容/n 为l 或w 命令指定文件,或者指定正在测试的文件的参数。

o 向输出端口发送1 个字节的值。

p 执行循环、重复的字符串指令、软件中断或子例程。

q 停止Debug 会话。

r 显示或改变一个或多个寄存器。

s 在部分内存中搜索一个或多个字节值的模式。

t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和Debug 下一步要执行的指令的解码形式。

u 反汇编字节并显示相应的原语句。

w 将被测试文件写入磁盘。

xa 分配扩展内存。

xd 释放扩展内存。

xm 映射扩展内存页。

xs 显示扩展内存的状态。

分隔命令参数所有Debug 命令都接受参数,除了q 命令之外。

可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符。

因此,以下命令等价:dcs:100 110d cs:100 110d,cs:100,110指定有效地址项Debug 命令中的address 参数指定内存位置。

DEBUG调试命令介绍

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一、如何调用 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命令大全

(11)写命令 ) 格式: 起始地址] 格式:W [起始地址 起始地址 功能: 功能: 将起始地址开始的数据写入由 CS:5CH处的文件控制块所指定的文件中。如果未 处的文件控制块所指定的文件中。 处的文件控制块所指定的文件中 指定地址则数据从CS:0100开始。 开始。 指定地址则数据从 开始 要写入文件的字节数应先放入BX和 中 注:要写入文件的字节数应先放入 和CX中。 文件大小为20字节 字节, 如:文件大小为 字节,则BX和CX中的内容应 和 中的内容应 设为: 设为: (CX)= 0014H ) (BX)=0000H ) 即: (BXCX)=00000014H ) 例 :N aa R bx R cx w cs:0 首先命名文件,名字为 首先命名文件,名字为aa; 其次把准备写入文件aa的字节数 其次把准备写入文件 的字节数 寄存器; 放入 BX和CX 寄存器 和 最后将代码段0000H单元开始的代码 最后将代码段 单元开始的代码 写入文件aa; 写入文件
(7)汇编命令 ) 格式: 起始地址 起始地址] 格式:A[起始地址 功能:允许键入汇编语言语句, 功能:允许键入汇编语言语句,并能把它们 汇编成机器代码, 汇编成机器代码,相继地存放在从指定地址开始的 存储区。 存储区。 把键入的数字均看成十六制数, 注:DEBUG把键入的数字均看成十六制数, 把键入的数字均看成十六制数 所以要键入十进制数,则其后必须加以标识符D。 所以要键入十进制数,则其后必须加以标识符 。 (8)反汇编命令 ) 格式1: 起始地址 起始地址] 格式 :U[起始地址 功能:从起始地址开始反汇编32个字节 个字节。 功能:从起始地址开始反汇编 个字节。 例:U100 如果地址被省略,则从上一个U命令的最后一 如果地址被省略,则从上一个 命令的最后一 条指令的下一个单元开始显示32个字节 个字节。 条指令的下一个单元开始显示 个字节。 格式2: 起始范围 起始范围] 格式 : U[起始范围 功能:对指定范围的存储单元进行反汇编。 功能:对指定范围的存储单元进行反汇编。 例:U100 10C

Debug主要命令

Debug主要命令

Debug主要命令1. A[地址] 汇编命令功能: 将指令直接汇编成机器码输入到内存中。

说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制,用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到 CS:0100区域。

-a 010008F1:0100 MOV AH,0908F1:0102 MOV DX,10908F1:0105 INT 21H08F1:0109 db 'HELLO WORLD!$'08F1:0115-g2.D[地址] 或D[起始地址][目的地址] 转储命令功能: 以内存映象方式显示内存中的信息。

说明: 转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCII字符显示,所有不可打印字符用句号(.)表示。

每行显示16个字节的内容,在第八和第九个字节之间有一个连字符 - 此命令隐含的段地址为DS的值。

若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令,则从初使化的段寄存器的内容,加上地址偏移量 0100H 开始显示。

3.E[地址] [字节串) 修改内存命令功能: 从指定的地址开始修改内存值。

说明: 若地址部分只输入偏移量,则 E 命令认为段包括在DS寄存器中。

命令格式有两种:其一是用命令中包含的字节串替换从指定的地址开始的多个字节的内容;其二是命令后不跟字节串,则允许按顺序方式显示和修改字节,按下空格键为显示下一字节内容,若想修改,直接输入相应值。

4.F[地址范围] [字节或字节串] 填写命令功能: 将要填写的字节或字节串填入由地址范围指定的存储器中。

5.G[=起始地址] [[断点]……] 执行命令功能: 执行正在调试的程序,当达到断点时停止执行,并且显示寄存器标志和下一条要执行的命令。

说明: 如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。

DEBUG命令一览表

DEBUG命令一览表

DEBUG 主要命令一览表 DEBUG [d:] [path] [.exe] [参数]2、DEBUG的主要命令(1)汇编命令A,格式为:-A[地址] 该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。

(2)反汇编命令U,有两种格式:1)-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。

2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108或–U 04BA:0100 L9 此二命令是等效的。

(3)运行命令G,格式为:-G [=地址1][地址2[地址3。

]] 其中地址1规定了运行起始地址,后面的若干地址均为断点地址。

(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址] 该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

2)多条指令追踪:-T[=地址][值] 该命令从指定地址起执行n条命令后停下来,n由[值]确定。

(5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围](6)修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址内容表例如:-E 2000:0100 F3 “XYZ” 8D 其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。

2)逐个单元相继地修改:-E地址例如:-E 100:18E4:0100 89.78 此命令是将原100号单元的内容89改为78。

78是程序员键入的。

(7)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R R命令显示中标志位状态的含义如下表所示:标志名置位复位溢出Overflow(是/否)OVNV 方向Direction(减量/增量)DNUP 中断Interrupt(允许/屏蔽)EIDI 符号Sign(负/正)NGPL 零Zero(是/否)ZRNZ 辅助进位Auxiliary Carry (是/否)ACNA 奇偶Parity(偶/奇)PEPO 进位Carry(是/否)CYNC 2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如打入:-R AX 系统将响应如下:AX FIF4 :表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:-R BX BX 0369 :059F 则BX内容由0369改为059F 3)显示和修改标志位状态,命令格式为:-RF 系统将给出响应,如OV DN EI NG ZR AC PE CY- 这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。

DEBUG命令集锦

DEBUG命令集锦

DEBUG是DOS操作系统中的一个外部命令,从DOS 1.0起就带有此命令。

利用此命令下的子命令,可以查看和修改寄存器、内存单元的内容;输入并执行汇编指令;可以查看(反汇编)代码段中的指令;可以对端口进行操作;可以对磁盘和磁盘文件进行操作;可以调试简单程序。

因此可见此命令的重要性了。

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

因此,现将学习汇编语言常用到的DEBUG的命令详细介绍一番,以让大家知道它的使用。

其他命令请参考其他详细资料。

1. A(汇编,ASSEMBLE)作用:直接将 8086/8087/8088 记忆码合并到内存(默认存到代码段中)。

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

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

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

格式:A [ADDRESS]说明:ADDRESS指定键入汇编语言指令的位置。

对 ADDRESS 使用十六进制值,但键入时不以“H”字符结尾,如果十六进制数以字母开始,也不要在前面加“0”。

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

例:在代码段中偏移地址为0200处存入指令MOV AX,BX (假定CS=0B49H)A 命令支持两个常用的伪指令:DB 操作码,将字节值直接汇编到内存,DW 操作码,将字值直接汇编到内存。

以下是两个伪指令的范例:A 命令支持所有形式的寻址方式和所有操作码同义词。

2. C(内存比较,COMPARE)作用:比较两个内存区域中的数据是否相同格式:C RANGE ADDRESS说明:①RANGE指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。

②ADDRESS指定要比较的第二个内存区域的起始地址。

如果内存第一个区域的内容和内存第二个区域的内容相同,DEBUG 将不显示任何内容而直接返回到DEBUG 提示符。

如果有差异,DEBUG 将按如下格式显示:ADDRESS1 BYTE1 BYTE2 ADDESS2例:比较DS:0000-DS:000F和ES:0000-ES:000F区域的数据以下命令具有相同效果:C 100,10F 300C 100 L10 300每个命令都对 100H 到 10FH 的内存数据块与 300H 到 30FH 的内存数据块进行比较。

DEBUG命令用法速查

DEBUG命令用法速查

DEBUG命令用法速查
DEBUG是一种最为常见的调试工具,由由MS-DOS的系统盘提供,现在在WINDOWS95、98、2000态调试,而且还可以用于系统内存和磁盘的维护、软件的修改和加密解密等方面。

使用DEBUG要注(1)在修改软件时应注意,应避免在中DEBUG中写EXE为后缀的文件。

如果你需要这样作,就必(2)在命令表1-4中,有许多命令的参量定义由表1-3给出。

(3)一般命令中的整数参量都已十六进制数表示。

(4)字符串引号可用双引号,也可用单引号。

(5)在DEBUG中标志寄存器将按8个标志显示,每个标志用两个字母编码,以表示置位或清零。

表1-3 DEBUG命令参量
表1-4 DEBUG命令表
表 1-5标志寄存器显示含义。

debug指令大全

debug指令大全

debug指令⼤全⼀、预习内容预习DEBUG程序的各种命令功能及使⽤⽅法。

⼆、实验⽬的1、掌握DEBUG程序的各种命令,重点是A,R,D,E,U,T,G,N,W,Q等命令的使⽤。

2、掌握⽤DEBUG调试⾃编程序的⽅法,为以后实验打下基础。

三、实验内容1、⽤命令A汇编下列指令,并判断指令正误并说明原因。

(1)ROR AX,8(2)LEA DI,[AX](3)MOV DS,2010(4)PUSH AL(5)OUT 900,AL(6)MOV [BX],02、掌握⽤DEBUG编写程序的⽅法。

C:\MASM>DEBUG-A136E:0100 MOV DX, 10C136E:0103 MOV AH, 9136E:0105 INT 21136E:0107 MOV AX, 4C00136E:010A INT 21136E:010C-E10C 'Hello!$'-R CX ;⽂件字节数写在CX中CX 0000:13-N /doc/57f16180d4d8d15abe234ef1.html ;给⽂件命名-W;写⼊到磁盘中Writing 00013 bytes-GHello!C:\MASM> DEBUG /doc/57f16180d4d8d15abe234ef1.html-U-G-Q四、问题1、在指令MOV [BX],AX中,操作数[BX]的寻址⽅式是什么?在DEBUG下执⾏完该指令后,如何查看执⾏结果?2、可否随意在DEBUG提⽰符“-”后不带参数发出命令G?什么情况下使⽤命令G时,可不⽤“=”给出程序的⾸地址?五、预习内容预习汇编程序的功能及汇编过程。

六、实验⽬的熟悉宏汇编MASM 6.0的使⽤,掌握对汇编语⾔源⽂件的编辑、汇编及连接的⽅法。

七、实验内容1、⽤编辑软件EDIT编辑源程序SAMPLE.ASM,功能是输出字符串“HELLO!”。

SAMPLE.ASM程序代码如下:DATA SEGMENTSTRING DB 'HELLO!',' $'DATA ENDSSTACK SEGMENT 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTMAIN PROC FARASSUME DS:DATA,SS:STACKASSUME CS:CODESTART:PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXLEA DX,STRINGMOV AH,9INT 21HMOV AH,4CHINT 21HRETMAIN ENDPCODE ENDS2、⽤MASM程序对其进⾏汇编,产⽣SAMPLE.OBJ⽂件。

调试程序DEBUG命令说明

调试程序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在每个人的机器里都会有,只是很多人对它都很陌生,不要小看它,对你的破解会很有帮助的。

如你掌握了它的用法,对你的日常使用及维护工作会带来很大的方便,下面介绍一些它的基本指令用法:指令格式功能备注A A [记忆体位址] 组译汇编语言指令A 100C C [区段1] [区段范围] [区段2] 将两块内存作比较C 100 L20 200D D [记忆体拉址] 显示记忆体的内容D 100E E [记忆体位址] 编辑记忆体资料E 100F F [指定区段范围] 填充指定内存区块内容F 100 L10 90G G [区段:区址]带有任选断点执行G 100H H [运算子] [运算子]十六进制加减运算H 44 33I I [端口]读/显示输入字节L L [记忆位址]或[磁碟,磁轨,磁区] 装入文件或磁区L 100 2 1 2M M [区段范围] [记忆体位址]传送内存区块M 100 L10 110N N [档案名称] 定义文件及参量N O O [端口位址] 输出字节到端口P P [区段:区址]在下一指令上停止P 2Q Q 退出DEBUG 界面QR R [寄存器] 显示修改寄存器/标志R AXS S [记忆区段范围] 对字符进行检索S 100 L70 'j'T T [=记忆区段]或[数值范围]单步追踪TU U [记忆位址] 对指令进行反汇编U 100W W [记忆区段]或[指定范围] 写入文件或磁盘扇区W 100 0 1 1下面对一些常用指令进行详细剖析:A (Assemble)汇编指令1、输入汇编语句被汇编到内存的指定区段,此区段在开始时用A address 指定。

2、所有语句输入完成后,按ENTER 键返回。

3、完成输入后,可以用U 命令观看它的机械码。

D (Dump)显示命令1、从指定的地址开始显示内容,如果没有指定地址,则从前一个D命令继续显示。

2、如果没指定地址并是第一次,则从DS:100 处开始显示。

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


┃ │ │ │定区域中 ┃
┃ │ │(2)L地址件装入指定区域中 ┃
┃ │ │ [地址……]│ ┃
┃ 十六进制 │ H │值1值2 │计算十六进制值1与值2之和与差 ┃
┃ 计算 │ │ │ ┃
┃ 输入 │ I │I端口地址 │从指定端口输入1字节并显示出来 ┃
┃ │ │(1)L地址驱动器│ ┃
┃ │ │扇区号 扇区数 │把磁盘上指定区域内容装入内存指 ┃
┃命名 │ N │N文件标识符 │用给定文件标识符格式化CS:5C和 ┃
┃ │ │[文件标识符]│CS:6C的两个文件控制块 ┃
┗━━━━━┷━━━━┷━━━━━━━┷━━━━━━━━━━━━━━━━━┛
PC机调试程序DEBUG命令一览表
1992-04-03
┃命令名称 │命令字符│ 命令格式 │ 功能 ┃
┠─────┼────┼───────┼─────────────────┨
┃ 汇编 │ A │ A[地址] │对地址单元开始的汇编源程序实施汇编┃
┃ 元内容 │ │(2)E地址 │连续逐一修改内存单元的内容 ┃
┃ 填充 │ F │F范围表 │在指定范围写入表所示的内容 ┃
┃ 运行 │ G │G[=地址] │在程序运行中设置断点 ┃
┃显示内存单│ D │(1)D地址 │显示从地址单元开始的40H个字节 ┃
┃ 元内容 │ │(2)D范围 │显示地址范围的内容 ┃
┃修改内存单│ E │(1)E地址内容表│用给定内容代替指定地址单元内容 ┃
相关文档
最新文档