DOS中debug是什么命令???有什么用?
4个回答
2013-11-05
展开全部
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:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
可以将 near 前缀缩写为 ne。
区分字和字节内存位置
当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀 word ptr 或者前缀 byte ptr 指定数据类型。可接受的缩写分别是 wo 和 by。以下范例显示两种格式:
dec wo [si]
neg byte ptr [128]
指定操作数
debug 使用包括在中括号 ([ ]) 的操作数引用内存地址的习惯用法。这是因为另一方面 debug 不能区分立即操作数和内存地址的操作数。以下范例显示两种格式:
mov ax,21 ; load ax with 21h
mov ax,[21] ; load ax with the
; contents of
; memory location 21h
使用伪指令
使用 a 命令提供两个常用的伪指令:db 操作码,将字节值直接汇编到内存,dw 操作码,将字值直接汇编到内存。以下是两个伪指令的范例:
db 1,2,3,4,"this is an example"
db 'this is a quotation mark:"'
db "this is a quotation mark:'"
dw 1000,2000,3000,"bach"
范例
a 命令支持所有形式的间接注册命令,如下例所示:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )
还支持所有操作码同义词,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
对于 8087 操作码,必须指定 wait 或 fwait 前缀,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
debug:c(比较)
比较内存的两个部分。
c range address
参数
range
指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。有关有效的 range 值的信息,请单击“相关主题”列表中的“debug 说明”。
address
指定要比较的第二个内存区域的起始地址。有关有效 address 值的信息,请单击“相关主题”列表中的“debug 说明”。
说明
如果 range 和 address 内存区域相同,debug 将不显示任何内容而直接返回到 debug 提示符。如果有差异,debug 按如下格式显示:
address1 byte1 byte2 addess2
2 of a total ff ems handles have been allocated
参考资料: http://www.x5dj.com/GroupForum/ThreadDetail.aspx?GroupID=2268&ThreadID=143012&Page=0
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:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
可以将 near 前缀缩写为 ne。
区分字和字节内存位置
当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀 word ptr 或者前缀 byte ptr 指定数据类型。可接受的缩写分别是 wo 和 by。以下范例显示两种格式:
dec wo [si]
neg byte ptr [128]
指定操作数
debug 使用包括在中括号 ([ ]) 的操作数引用内存地址的习惯用法。这是因为另一方面 debug 不能区分立即操作数和内存地址的操作数。以下范例显示两种格式:
mov ax,21 ; load ax with 21h
mov ax,[21] ; load ax with the
; contents of
; memory location 21h
使用伪指令
使用 a 命令提供两个常用的伪指令:db 操作码,将字节值直接汇编到内存,dw 操作码,将字值直接汇编到内存。以下是两个伪指令的范例:
db 1,2,3,4,"this is an example"
db 'this is a quotation mark:"'
db "this is a quotation mark:'"
dw 1000,2000,3000,"bach"
范例
a 命令支持所有形式的间接注册命令,如下例所示:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )
还支持所有操作码同义词,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
对于 8087 操作码,必须指定 wait 或 fwait 前缀,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
debug:c(比较)
比较内存的两个部分。
c range address
参数
range
指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。有关有效的 range 值的信息,请单击“相关主题”列表中的“debug 说明”。
address
指定要比较的第二个内存区域的起始地址。有关有效 address 值的信息,请单击“相关主题”列表中的“debug 说明”。
说明
如果 range 和 address 内存区域相同,debug 将不显示任何内容而直接返回到 debug 提示符。如果有差异,debug 按如下格式显示:
address1 byte1 byte2 addess2
2 of a total ff ems handles have been allocated
参考资料: http://www.x5dj.com/GroupForum/ThreadDetail.aspx?GroupID=2268&ThreadID=143012&Page=0
2013-11-05
展开全部
是为DOS提供的有力的侦错,跟踪程序运行,检查系统数据的工具程序,它是在字符界面下以单字符命令方式工作。要很好地使用它必须具备一定的汇编程序设计和硬件基本知识的能力,当然,它为汇编语言程序员提供了有效的调试手段,它的功能包括以下几个方面。�
1. 直接输入、更改、跟踪、运行汇镅栽闯绦颍华
2. 观察操作系统的内容;�
3. 查看ROM BIOS的内容;�
4. 观察更改RAM内部的设置值;�
5. 以扇区或文件的方式读写软盘数据。�
在DEBUG中地址用段地址与段内地址来表示,而段地址可以明确地指出来,也可以用一个段指示器(段寄存器)来代表,用段寄存器表示时,其段地址就是此寄存器的内含值:�
如:用段地址和段内地址表示FOFF:0100�
用段寄存器和段内地址表示CSF:0100←CS指向F000�
下面列出了常用命令用法。
-A 地址 从指定地址开始编写小汇编程序,按两个回车键结束编辑
-U 地址 从指定地址开始反汇编32字节的机器指令,缺省地址则从上一U命令继续
-D 始址 终址 以16进制/Asc字符对照方式显示指定内存范围的数据,每行显示10H个字节
-E 地址 值表 用给出的值表(空格分隔)替换指定地址开始的内存单元,例:-E 100 'v' 1F 'hello'
-N 文件名 为后续的L/W命令约定所操作的文件名
-L 地址 将N命令所指定文件的内容读入到指定内存位置。另,逻辑卷扇区直接读:-L 地址 逻卷号 起始逻扇号 扇数
-W 地址 将BX-CX个字节的内存数据写入N命令指定的文件中。另,逻辑卷扇区直接写:-W 地址 逻卷号 起始逻扇号 扇数
-R 寄存器名 显示并允许修改指定寄存器的值
-G=始址 终址 执行指定内存中的机器指令程序
-T=地址 单步执行机器指令,缺省地址则从上一T命令继续。另,继续跟踪m条指令:-T m
读取c:卷的引导扇区,并保存到Boot.1文件中,并简单分析引导程序的前面几条指令:
-L 1000 2 0 1
-N boot.1
-R bx ;输入0000
-R cx ;输入0200
-W 1000
-U 1000
读取第一个硬盘上的主引导扇区,并保存到MB.1文件中,在屏幕上显示硬盘分区表数据:
-A 100
yyyy:0100 mov dx,0080
yyyy:01xx mov cx,0001
yyyy:01xx mov ax,yyyy
yyyy:01xx mov es,ax
yyyy:01xx mov bx,1000
yyyy:01xx mov ax,0201
yyyy:01xx int 13
yyyy:01zz nop
-G=yyyy:0100 01zz
-N mb.1
-R bx ;输入0000
-R cx ;输入0200
-W 1000
-D 11be 11ff
Debugger
"Debugger"这个词按它的英文字面意思来讲是这样一种“装置”(-er),这种装置可以“消除”(De-)“系统中的缺陷”(bug)。然而事实上,迄今为止我们经常使用到的"Debugger"只是用来帮助我们进行Debug的工具,"Debugger"本身不能自动完成"Debug"。我们可以回想一下我们是如何进行Debug的,在进行Debug的过程中,我们通过Debugger来完成以下工作:
(1)监视“Debug对象”的状态;
(2)控制“Debug对象”的运行;
这些工作可以为“发现Debug对象中存在的问题”以及“对解决问题方案的检验”提供有用的信息。
监控工作有时只需要由软件就可以完成,有时不仅需要软件支持,还需要硬件的支持。
Debugger除了被用来Debug,还被用来帮助我们理解“Debug的对象”内部结构,因为我们用到的Debugger能够完成对“Debug对象”的监控工作,在监控的过程中可以获取“Debug对象”动态特征的信息,这对我们理解其结构是非常有用的。 Debug-如何打开debug开关 debug是设备调试,排错中非常重要也非常有效的手段。需要对网络协议和Quidway产品相对熟悉的情况下使用。 过程:首先输入 [Router]info-centerenable 使用console配置口时,输入: [Router]info-centerconsole [Router]info-centerconsoledebug 使用远程telnet时,输入: [Router]info-centermonitor [Router]info-centermonitordebug 此处以调试链路层协议ppp数据包为例 [Router]debuggingppppacket 『注意』 1.特权模式下debug;可以从displaydebug看出现在有哪些调试开关是打开的 2.调试开关打开,对路由器性能会有相应程度的影响,所以用后请及时关闭调试信息: [Router]undodebugall,或者ctrl+d亦可
1. 直接输入、更改、跟踪、运行汇镅栽闯绦颍华
2. 观察操作系统的内容;�
3. 查看ROM BIOS的内容;�
4. 观察更改RAM内部的设置值;�
5. 以扇区或文件的方式读写软盘数据。�
在DEBUG中地址用段地址与段内地址来表示,而段地址可以明确地指出来,也可以用一个段指示器(段寄存器)来代表,用段寄存器表示时,其段地址就是此寄存器的内含值:�
如:用段地址和段内地址表示FOFF:0100�
用段寄存器和段内地址表示CSF:0100←CS指向F000�
下面列出了常用命令用法。
-A 地址 从指定地址开始编写小汇编程序,按两个回车键结束编辑
-U 地址 从指定地址开始反汇编32字节的机器指令,缺省地址则从上一U命令继续
-D 始址 终址 以16进制/Asc字符对照方式显示指定内存范围的数据,每行显示10H个字节
-E 地址 值表 用给出的值表(空格分隔)替换指定地址开始的内存单元,例:-E 100 'v' 1F 'hello'
-N 文件名 为后续的L/W命令约定所操作的文件名
-L 地址 将N命令所指定文件的内容读入到指定内存位置。另,逻辑卷扇区直接读:-L 地址 逻卷号 起始逻扇号 扇数
-W 地址 将BX-CX个字节的内存数据写入N命令指定的文件中。另,逻辑卷扇区直接写:-W 地址 逻卷号 起始逻扇号 扇数
-R 寄存器名 显示并允许修改指定寄存器的值
-G=始址 终址 执行指定内存中的机器指令程序
-T=地址 单步执行机器指令,缺省地址则从上一T命令继续。另,继续跟踪m条指令:-T m
读取c:卷的引导扇区,并保存到Boot.1文件中,并简单分析引导程序的前面几条指令:
-L 1000 2 0 1
-N boot.1
-R bx ;输入0000
-R cx ;输入0200
-W 1000
-U 1000
读取第一个硬盘上的主引导扇区,并保存到MB.1文件中,在屏幕上显示硬盘分区表数据:
-A 100
yyyy:0100 mov dx,0080
yyyy:01xx mov cx,0001
yyyy:01xx mov ax,yyyy
yyyy:01xx mov es,ax
yyyy:01xx mov bx,1000
yyyy:01xx mov ax,0201
yyyy:01xx int 13
yyyy:01zz nop
-G=yyyy:0100 01zz
-N mb.1
-R bx ;输入0000
-R cx ;输入0200
-W 1000
-D 11be 11ff
Debugger
"Debugger"这个词按它的英文字面意思来讲是这样一种“装置”(-er),这种装置可以“消除”(De-)“系统中的缺陷”(bug)。然而事实上,迄今为止我们经常使用到的"Debugger"只是用来帮助我们进行Debug的工具,"Debugger"本身不能自动完成"Debug"。我们可以回想一下我们是如何进行Debug的,在进行Debug的过程中,我们通过Debugger来完成以下工作:
(1)监视“Debug对象”的状态;
(2)控制“Debug对象”的运行;
这些工作可以为“发现Debug对象中存在的问题”以及“对解决问题方案的检验”提供有用的信息。
监控工作有时只需要由软件就可以完成,有时不仅需要软件支持,还需要硬件的支持。
Debugger除了被用来Debug,还被用来帮助我们理解“Debug的对象”内部结构,因为我们用到的Debugger能够完成对“Debug对象”的监控工作,在监控的过程中可以获取“Debug对象”动态特征的信息,这对我们理解其结构是非常有用的。 Debug-如何打开debug开关 debug是设备调试,排错中非常重要也非常有效的手段。需要对网络协议和Quidway产品相对熟悉的情况下使用。 过程:首先输入 [Router]info-centerenable 使用console配置口时,输入: [Router]info-centerconsole [Router]info-centerconsoledebug 使用远程telnet时,输入: [Router]info-centermonitor [Router]info-centermonitordebug 此处以调试链路层协议ppp数据包为例 [Router]debuggingppppacket 『注意』 1.特权模式下debug;可以从displaydebug看出现在有哪些调试开关是打开的 2.调试开关打开,对路由器性能会有相应程度的影响,所以用后请及时关闭调试信息: [Router]undodebugall,或者ctrl+d亦可
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
debug命令:DOS实用程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-05
展开全部
DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |