ms-dos中DEBUG如何应用
Debug-PC之开山老祖
Debug 原意是杀虫子。这里是机器调试工具。
其实,Debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。同时,许多台大型的计算机也在不停的运行着。 大概是由于,机器过热,引来许的小虫子,以至于,计算机无法正常运行。科学们,只好停下来,捉虫子。。。虫子捉完了,计算机运行也正常了,后来,这个名词就沿用至今了。。。。
虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!接下来,我们就一起学习Debug在各方面的运用吧!(在杀毒、加解密、系统。 。。)下面我和大家一起学习一些,Debug的用法,...全部
Debug-PC之开山老祖
Debug 原意是杀虫子。这里是机器调试工具。
其实,Debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。同时,许多台大型的计算机也在不停的运行着。
大概是由于,机器过热,引来许的小虫子,以至于,计算机无法正常运行。科学们,只好停下来,捉虫子。。。虫子捉完了,计算机运行也正常了,后来,这个名词就沿用至今了。。。。
虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!接下来,我们就一起学习Debug在各方面的运用吧!(在杀毒、加解密、系统。
。。)下面我和大家一起学习一些,Debug的用法,虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!
Debug常用命令集
名称 解释 格式
a (Assemble) 逐行汇编 a [address]
c (Compare) 比较两内存块 c range address
d (Dump) 内存16进制显示 d [address]或 d [range]
e (Enter) 修改内存字节 e address [list]
f (fin) 预置一段内存 f range list
g (Go) 执行程序 g [=address][address。
。。]
h (Hexavithmetic) 制算术运算 h value value
i (Input) 从指定端口地址输入 i pataddress
l (Load) 读盘 l [address [driver seetor]]
m (Move) 内存块传送 m range address
n (Name) 置文件名 n filespec [filespec。
。。]
o (Output) 从指定端口地址输出 o portadress byte
q (Quit) 结束 q
r (Register) 显示和修改寄存器 r [register name]
s (Search) 查找字节串 s range list
t (Trace) 跟踪执行 t [=address] [value]
u (Unassemble) 反汇编 u [address ]或range
w (Write) 存盘 w [address[driver sector secnum]]
? 联机帮助 ?
debug小汇编a命令
debug小汇编a命令是一个很有用的功能,许多的小程序都要他来做。
编一些小程序比汇编要来得方便,快洁。
在Debug中,中断是非常有用的,首先,让我们先了解一下中断。
所谓中断,其实,就是,当你做某事时,有人过来找你有其他事,你先放下手中的事(计算机中,称为保护现场),再去与叫你的那个人办事去,等完了,你又回,接着做刚才的事。
这是个很通俗的讲法。
计算机在运行时,也会出现这种情况,我们叫之中断。
下面是他的一些常用中断向量的入口值详解:(记住哦,很用的。。。呵呵)
IBM PC 中断 int10
ooH 屏幕方式设置Debug实战
1。
查看主板的生产日期,版本
D ffff:05
D fe00:0e
2。模拟Rest键功能
A
:100 jmp ffff:0000
:105
g
3。快速格式化软盘
L 100 0 0 * '插入一张己格式化软盘
W 100 0 0 * '放入一张欲格式化软盘
注:* 分别为:720K e |1。
2M id |1。44M 21
4。硬盘格式化两种方法
(1)G=c800:05
(2) A 100
mov ax,0703
mov cx,0001
mov dx,0080
int 13
int 3
g 100
5。
加速键盘
A
mov ax,0305
mov bx,0000
int 16
int 20
rcx
10
n
w
q
6。关闭显示器(恢复时,按任意键)
A
mov ax,1201
mov bl,36
int 10
mov ah,0
int 16
mov ax,1200
int 10
rcx
10
n
w
q
7。
硬盘DOS引导记录的修复
在软驱中放入一张己格式化软盘
debug
-l 100 2 0 1
-w 100 0 50 1
把软盘放入故障机软驱中
debug
-l 100 0 50 1
-w 100 2 0 1
-q
8。
清coms中setup口令
debug
-a
mov bx,0038
mov cx,0000
mov ax,bx
out 70,al
inc cx
cmp cx,0006
jnz 0106
int 20
-rcx
:20
-
-w
-q
注:以上适合super与dtk机,对于ast机,因为他的口令放在coms的4ch-51h地址处,只要将:mov bx,0038 改为: mov
bx,004c即可
9。
取消coms的密码(将coms数据清为初始化)
-o 70,10
-o 71,10
-g
-q
10。将硬盘主引导记录保存到文件中
debug
-a
mov ax,0201
mov bx,0200
mov cx,0001
mov dx,0080
mov int 13
int 3
-rcx
:200
-nboot。
dat
-w
-q
11。调用中断实现重启计算机(可以成文件)
debug
-a
int 19
int 20
-rcx
:2
-
-w
-q
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]例如,按指定范围显示存储单元内容的方法为:-d10012018E4:0100c 801c706-0 c G。
。。8。G。。。。。G。。。18E$:01100202bb0402e80200-CD 578B37。。;。。h。。MPQVW。718E4:01208B其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。
这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
2、修改存储单元内容的命令有两种。
·输入命令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单元包含指定的五个字节的内容。
如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。
3)检查和修改寄存器内容的命令R(register),它有三种格式如下:
·显示CPU内所有寄存器内容和标志位状态,其格式为:
-R
例如,-r
AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC
18E4:0100 C 801 MOV WORD PTR [0204],0138 DS:0204=0000
·显示和修改某个寄存器内容,其格式为:
-R register name
例如,键入
-R AX
系统将响应如下:
AX F1F4
:
即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:
-R bx
BX 0369
:059F
则把BX寄存器的内容修改为059F。
·显示和修改标志位状态,命令格式为:
-RF系统将响应,如:
OV DN EI NG ZR AC PE CY-
此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:
OV DN EI NG ZR AC PE CY-PONZDINV
即可,可见键入的顺序可以是任意的。
4)运行命令G,其格式为:
-G[=address1][address2[address3…]]
其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
5)跟踪命令T(Trace),有两种格式:
·逐条指令跟踪
-T [=address]
从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。
·多条指令跟踪
-T [=address][value]
从指定地址起执行n条指令后停下来,n由value指定。
6)汇编命令A(Assemble),其格式为:
-A[address]
该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。
7)反汇编命令U(Unassemble)有两种格式。
·从指定地址开始,反汇编32个字节,其格式为:
-U[address]
例如:
-u100
18E4:0100 C 801 MOV WORD PTR[0204],0138
18E4:0106 C 002 MOV WORD PTR[0206],0200
18E4:010C C 202 MOV WORD PTR[0208],0202
18E4:0112 BBO4O2 MOV BX,0204
18E4:0115 E80200 CALL 011A
18E4:0118 CD20 INT 20
18E4:011A 50 PUSH AX
18E4:011B 51 PUSH CX
18E4:011C 56 PUSH SI
18E4:011D 57 PUSH DI
18E4:011E 8B37 MOV SI,[BX]
如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
·对指定范围内的存储单元进行反汇编,格式为:
-U[range]
例如:
-u100 10c
18E4:0100 C 801 MOV WORD PTR[0204],0138
18E4:0106 C 002 MOV WORD PTR[0206],0200
18E4:010C C 202 MOV WORD PTR[0208],0202
或
-u100 112
18E4:0100 C 801 MOV WORD PTR[0204],0138
18E4:0106 C 002 MOV WORD PTR[0206],0200
18E4:010C C 202 MOV WORD PTR[0208],0202
可见这两种格式是等效的。
8)命名命令N(Name),其格式为:
-N filespecs [filespecs]
命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。
filespecs的格式可以是:
[d:][path] filename[。ext]
例如,
-N myprog
-L
-
可把文件myprog装入存储器。
9)装入命令(Load),有两种功能。
·把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为:
-L[address[drive sector sector]
·装入指定文件,其格式为:
-L[address]
此命令装入已在CS:5CH中格式化了文件控制块所指定的文件。
如未指定地址,则装入CS:0100开始的存储区中。
10)写命令W(Write),有两种功能。
·把数据写入磁盘的指定扇区。其格式为:
-W address drive sector sector
·把数据写入指定的文件中。
其格式为:
-W[address]
此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。如未指定地址则数据从CS:0100开始。要写入文件的字节数应先放入BX和CX中。
11)退出DEBUG命令Q(Quit),其格式为:
-Q
它退出DEBUG,返回DOS。本命令并无存盘功能,如需存盘应先使用W命令。
问题:初学者问一个低级问题,执行debug-a后,如果有一行输入错误,如何更改这一行?回答:加入进行如下输入:D:\PWIN95\Desktop>debug-a2129:0100movax, :0103movbx, :0106movcx, :0109此时,发现movbx,200一句错误,应为movbx,20,可以敲回车返回"-"状态,然后输入:-a1032129:0103movbx,20如果多或者少若干行,不必重新输入,可以用M命令移动后面的程序来去掉或者增加程序空间。
如何除错和汇编你的第一个PCx86汇编语言程序呢?以下这些简单的解释可以让一个汇编语言新手使用DEBUG:0)在使用时,如何快速获得debug的使用帮助呢。1)让我们开始工作吧,例如:显示BIOS的日期。
2)在你的电脑的COMMANG。COM文件里搜寻"IBM"这几个字符。3)一位十六进制数的运算。4)检查x86寄存器内容。5)我们来编写我们的第一个用机械语言编写的程序-打印一个字符。6)我们现在用汇编语言指令来做和例5一样的事情。
7)现在,我们不但要编写一个汇编程序,而且我们还要把它存盘。8)现在,我们试一试查看一个已经编好的程序。
9)你可以用DEBUG的计算功能计算程序的长度。
10)另一种显示在屏幕上字符串的方法。
11)让我们试一试反复输出。
12)我们现在把两个程序连接起来。
13) 让我们逐步运行这个刚刚修补的程序。
14)如果一开始的命令不是跳转命令,那么可能就要用这种方法了。
以下所有的命令都是可以运行在WIN9x的MS-DOS方式下的。
进入MS-DOS的方式有:
[开始][程序][MS-DOS方式]
[开始][运行][打开]COMMAND[确定]
或者你可以双击它:
C:\Windows\
0)在使用时,如何快速获得debug的使用帮助呢
以下PROMPT>表示目录提示符:一般为:C:\WINDOWS\COMMAND\
PROMPT> DEBUG /?
怎样?出错了吧。
显示如下
C:\WINDOWS>DEBUG/?
Runs Debug, a program testing and editing tool。
DEBUG [[drive:][path]filename [testfile-parameters]]
[drive:][path]filename Specifies the file you want to test。
testfile-parameters Specifies command-line information required by
the file you want to test。
After Debug starts, type ? to display a list of debugging commands。
因为错了所以它给你显示一些提示。留意到最后一句了吗?
。收起