DEBUGEXE的使用.docx
- 文档编号:5320639
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:21
- 大小:23.96KB
DEBUGEXE的使用.docx
《DEBUGEXE的使用.docx》由会员分享,可在线阅读,更多相关《DEBUGEXE的使用.docx(21页珍藏版)》请在冰点文库上搜索。
DEBUGEXE的使用
附录2动态调试程序DEBUG.EXE的使用
DEBUG.EXE是专为汇编语言设计的一种调试工具,可用来检查、修改存储单元和寄存
器的内容,装入、存储及启动运行程序,也可用DEBUG.EXE汇编简单的汇编语言程序。
(注:
DEBUG只能在DOS或WINDOWS98及WINDOWSME下运行)
DEBUG的命令表
命令
目的
格式
A(Assemble)
汇编语句
A[address]
C(Compare)
比较内存
Crangeaddress
D(Dump)
显示内存
D[address]
D[range]
E(Enter)
改变内存
Eaddresslist
F(Fill)
填充内存
Frangelist
G(GO)
执行程序
G[=address][address]
H(Hexarthmetic)
十六进制运算
HValueValue
I(Input)
输入
Iportaddress
L(Load)
装入内存
L[address]
M(Move)
传送内存
Mrangerange
N(Name)
定义文件
N[d:
[path]filename[.exe]]
O(Output)
输出字节
Oportaddressbyte
Q(Quit)
退出DEBUG状态
Q
R(Register)
显示寄存器
R[registername]
S(Search)
检索字符
Srangelist
T(Trace)
单步/多步跟踪
TorT[address][Value]
U(Unassmble)
反汇编
U[address]orU[range]
W(Write)
文件或数据写盘
W[address[drivesectorsector]]
A(汇编)命令
用途:
把计算机的宏汇编语句直接汇编到内存中.
格式:
A[address]
说明:
“A”是一条逐行汇编命令,当使用“A”命令时,并不直接将16进制字节(机器
码)键入存储器,而键入的是助记符。
但键入的汇编语句被汇编在指定地址的连续单元中.
在“A”命令后没指出地址时,分两种情况:
a.没指定地址同时前面没有使用汇编命令,则语句被汇编到CS:
100开始的区域中.
b.没指定地址,但前面已有汇编命令,则语句被汇编到紧接着前一条汇编语句的后
一个地址单元里。
例
-;“-”为DEBUG提示符
-A
0CDE:
0100DB‘THISISANEXAMPLE’,‘$’
0CDE:
0113DB‘123456789ABCDEF$’
OCDE:
0133MOVDX,0100
0CDE:
0136MOVAH,09
0CDE:
01381NT21
0CDE:
013AMOVDL,0D
0CDE:
013CMOVAH,02
0CDE:
013EINT21
0CDE:
0140MOVDL,0A
0CDE:
0142MOVAH,02
0CDE:
0144INT21
0CDE:
0146MOVDX,0100
0CDE:
0149MOVAH,09
0CDE:
014BINT21
0CDE:
014D1NT20
0CDE:
014F
-;“-”为DEBUG提示符
*在DEBUG状态下键入的数字都是16进制数,所以不要用H表示为16进制数。
在语句输入完后,只要按ENTER键,即告诉DEBUG用户程序输入完毕,此时回
到DEBUG初始状态。
注意:
(1)DEBUG不能识别操作数是字存储单元,还是字节存储单元。
必须用前缀
“WORDPTR”或“BYTEPTR”来明确指出数据类型。
WORD和BYTE可简写为
WO,BY。
例:
NEGBYTEPTR[l28]
DECWORDPTR[SI]
(2)NEAR前缀可缩写为NE,但FAR前缀不能缩写。
C(比较)命令
用途:
比较两个内存区的内容。
格式:
Crangeaddress
说明:
比较两个内存区的内容,比较长度由range决定,若发现不相等的字节,按下
列格式显示它们的内容。
addr1bytelbyte2addr2
例:
先用D命令显示两个存储区的内容。
-D0100
0CDE:
01005448495320495320—414E204558414D50
0CDE:
01104C45243120322033—2020342035203620
-C0100L6011F;比较100H和11FH开始的6个字符。
0CDE:
0100544CCDE:
0110
0CDE:
010148450CDE:
0111
0CDE:
010249240CDE:
0112;不同字符
0CDE:
010353310CDE:
0113
0CDE:
010549320CDE:
0115
D(显示)命令
用途:
显示部分存储区的内容。
格式:
D[address]或D[range]
说明:
显示指定内存单元的内容。
(1)在输入的起始地址中,只键入一个相对偏移量,段地址为DS中。
-D100
0915:
01005448495320495320-414E204558414D50
0915:
01104C45243120322033-2034203520362037
0915:
01202038203920412042-2043204420452046
(2)若要显示指定范围的内容,则要输入显示的起始和结束地址.
-D0100011F
0915:
01005448495320495320-414E204558414D50
0915:
01104045243120322033-2034203520362037
(3)如果用D命令没有指定地址,则当前D命令开始地址是由前一个D命令所显示
的最后单元后面的单元地址。
E(修改)命令
用途:
修改RAM区的单元内容
格式:
Eaddress[List]
说明:
该命令可以在指定的地址里修改一个或多个字节的内容,同时也可连续的修改
每个字节的内容。
如:
(1)连续修改每个字节的内容
-D0180;显示0180单元开始的内容
0915:
01800000000000000000-0000000000000000
0915:
01900000000000000000-0000000000000000
-E0180;修改开始,每修改—个单元后按空格键再修改第二个单元
0915:
018000.1200.3400.5600.7800.1200.5400.990087
0915:
018800.2100.AC00.SS00.CB00.BE00.FC00.EF00.BA
0915:
019000
-D0180019F;修改完毕,检查正确否
0915:
01801234567812549987-21AC00CBBEFCEFBA
0915:
01900000000000000000-0000000000000000
(2)用给定的内容去代替指定范围的内存单元内容。
-d
0915:
01500000000000000000-0000000000000000
0915:
01600000000000000000-0000000000000000
-e0150‘whatisyourname?
’
-d0150016F
0915:
01507768617420697320-796F7572206E616D
0915:
016065203F0000000000-0000000000000000
(3)输入一个连接号‘-’,则显示前一个地址单元的内容,若修改就键入一个字节,
然后按“-”,则又显示前一个地址单元内容···。
如显示的单元不修改,则按“-”。
-D0150015F;从150H到15FH单元内容
0CDD:
015008200800D038041B一5B324A42981l44AC
-E0160;从160单元开始修改
0CDD:
016025.-;160单元不修改,键入“-”
0CDD:
015FAC.23-;15F单元用23替代原先AC
0CDD:
015E44.AA-;15E单元用AA替代原先44
0CDD:
015D11.55-;修改完毕
-D0150015F;检查修改后的单元内容
0CDD:
0150082008000D38041B-5B324A429811AA23
F(填充)命令
用途:
把表中的值填到内存单元中。
格式:
FrangeList
说明:
如果List所含的字节数比range小,则List被重复使用,如List所含的字节
数比range大,则多余被略去。
-F0280L20“ABCDEF0123456789”;把ASCⅡ码填入到从280开始的32个单元里
-D0280029F;检查
0CDD:
02804l42434445463031-3233343536373839
0CDD:
02904142434445463031-3233343536373839
-F0100L9“ABCDEF0123456789”;删除多余的3-9
-D0100010F;检查
0CDD:
01004142434445463031-320DOA007038496E
G(执行)命令
用途:
执行需运行的程序,并对调试的程序进行断点测试跟踪。
格式:
G[=address][address[address···]]
说明:
程序从当前指令开始执行,执行的地址由CS和IP的内容决定。
如用“=ad-
dress”参数取代,则程序从CS:
“=address”开始执行。
-A
0CDD:
0100DB‘THISISANEXAMPLE’,‘$’
0CDD:
0113DB‘123456789ABCDEF$’
0CDD:
0132MOVDX,0100
0CDD:
0135MOVAH,09
0CDD:
01371NT21
0CDD:
0139MOVDl,0D
0CDD:
013BMOVAH,02
OCDD:
013DINT21
0CDD:
013FMOVDL,0A
0CDD:
0141MOVAH,02
0CDD:
0143INT21
0CDD:
0145MOVDX.0113
0CDD:
0148MOVAH,09
0CDD:
014AINT21
0CDD:
014CINT20
0CDD:
014E
-G;从CS:
IP=0CDD:
0100开始运行结果在显示器上显示出
THlSISANEXAMPLE
123456789ABCDEF
Programterminatednormally
-G=0132
THISISANEXAMPlE
123456789ABCDEF
Programterminatednormally
-G=013F
123456789ABCDEF
Programterminatednormally
-G=0132013F;程序从0132开始运行,在013F处设置一个断点
THlSISANEXAMPLE
AX=020DBX=0000CX=0000DX=010DSP=FFEEBP=0000SI=0000DI=0000
DS=0CDDES=0CDDSS=OCDDCS=0CDDIP=013FNVUPEIPLNZNAPONC
0CDD:
013FB20AMOVDL,0A
注意:
(1)一旦程序运行结束(DEBUG显示“programterminatednormally”信息),在它
再次执行之前,必须重新启动程序。
(2)地址参数指向的位置必须含有合法的8086/8088指令码,如指定第一个字节为
非法指令,那么会出现不可预测的结果。
(3)堆栈指示器必须是合法的,并且对G命令有6个字节可用,否则会出现不可预
测的结果.
(4)对断点只键入一个偏移量,G命令设该段在CS寄存器中。
H(16进制运算)命令
用途:
对两个16进制数进行加,减,然后显示出和与差。
格式:
HValueValue
-HAB
0015FFFF;和为0015H,差为FFFFH
I(输入)命令
用途:
从指定的端口显示出输入数据字节。
格式:
Iportaddtess
-I200
FF;从200端口读入FF字节
L(装入)命令
用途:
把磁盘上的内容装入内存。
格式:
L或Laddress
说明:
此命令装入在CS:
5CH格式化的文件控制块所指定的文件,所以在使用这种格
式的L命令以前,在CS:
5CH中必须有已格式化的文件标识符,这通常用N命令采实现。
若命令没规定地址,则文件装入到CS:
100开始的内存区中,若命令规定了地址,则
装入到指定的区域中,但对具有扩展名的.COM或.EXE的文件,则始终是装入到CS:
100
的内存区中,即使命令中指定了地址,此地址也被忽略。
A>DEBUG
-NSS.COM
-L;把SS.COM文件从磁盘装人内存
-U0114011D;用反汇编检查装人内存程序正确否(文件见W命令)
0CF3:
0114BA0001MOVDX,0100
0CF3:
0117B409MOVAH,09
0CF3:
0119CD21INT21
0CF3:
011BCD201NT20
0CF3:
011D6FDB6F
-D0100011D
0CF3:
01005448495320495320-414E204558414D50
0CF3:
01104C452024BA0001B4-09CD21CD206F
M(传送)命令
用途:
把由range规定的内存单元区域的内容传送到address开始的单元。
格式:
Mrangeaddress
说明:
传送期间总是执行复盖传送,源区域的数据保持不变。
-DDS:
0100011F
0CDD:
0100CD2000A0009AEEFE-IDF0F50242092E03
0CDD:
0110424F4D535045433D-433A5C434F4D4D41
-DDS:
0000001F
0CDD:
00004209BD0242093B08-0101010002FFFFFF
0CDD:
00104209BD0242093B08-0101010002FFFFFF
-DCS:
050005lF
L
0CDD:
0500CD2000A0009AEEFE-1DF0F50242092E03
0CDD:
0510424F4D535045433D-433A5C434F4D4D41
-DCS:
0800080F
0CDD:
08000000000000000000-0000000000000000
-MDS:
0000000FDS:
0100;把DS:
0000开始的000FH个单元内容传送到CS:
100开始的单元里
-DDS:
0100010F;检查传送结果
0CDD:
01004209BD0242093B08-0101010002FFFFFF
-MDS:
0100010FCS:
0800;把DS:
100开始的0FH个单元内容传送到CS:
800开始的单元里
-DCS:
0800080F;检查传送结果
0CDD:
08004209BD0242093B08-0101010002FFFFFF
N(命名)命令
用途:
给文件定名,用于文件存盘或装入内存区。
格式:
Nfilespec[filespec…]
说明:
用命令中给定的两个文件标识符,格式化在CS:
5CH和CS:
6CH的两个文件控制块(若在
调用DEBUG程序时具有一个文件标识符,则它已格式化在CS:
5CH的文件控制块)中,文件控制块
是为L和W命令提供所要求的文件名。
所有文件标识符和参数按键人的模式,放在CS:
81H开始的参数保存区中,在CS:
80H
中保存输入的字符个数,在寄存器AX中保存前两个文件标识符中的驱动器标志。
A>DEBUG
-NSS.COM;给文件命名为SS,扩展名为COM(文件见W命令)
-L
-U0114011D
0CF3:
0114BA0001MOVDX,0'00
0CF3:
0117B409MOVAH,09
0CF3:
0119CD21INT21
0CF3:
011BCD20INT20
OCF3:
011D6FDB6F
-D0100011D
0CF3:
01005448495320495320-414E204558414050
0CF3:
01104C452024BA0001B4-09CD21CD206F
-G
THISISANEXAMPLE
Programterminatednormally
O(输出)命令
用途:
向指定的端口输出一个字节。
格式:
Oprotaddressbyte
-O23499
Q(退出)命令
用途:
退出DEBUG状态
格式:
Q
说明:
Q命令不保留正在内存中运行的文件,若保留需用‘W’命令,DEBUO返回
到命令处理程序,然后显示出正常的命令提示.
A:
>DEBUGSS.COM
-L
-U0114011D
0CF3:
0114BA0001MOVDX,0100
0CF3:
0117B409MOVAH,09
0CF3:
0119CD21INT21
0CF3:
011BCD20INT20
0CF3:
011D6FDB6F
-Q;退出DEBUG
R(寄存器)命令
用途:
显示和修改各寄存器的内容
格式:
R[Registername]
说明:
当R命令后面不带任何参数时,显示出13个16位寄存器的内容,同时又显
示出标志寄存器各位状态。
最后显示出下一条要执行的指令地址及指令内容。
当R命令后面带参数时,显示出该寄存器的内容,同时又可进行修改。
-R;没有参数
AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=OCDDES=OCDDSS=0CDDCS=0CDDIP=0100NVUPEIPLNZNAPONC
0CDD:
01004DDECBP
-RAX;显示AX寄存器的内容
AX0000;AX当前值
:
ACEB;用ACEB取代当前值
-RAX;修改完毕,检查
AXACEB;显示出修改后的AX寄存器内容
-;DEBUG提示符
标志寄存器共有9个标志位,其中追踪标志T不能改变,其它8个标志位可以显示
和修改,并且以二个字母的代码来分别表示各位状态,显示次序和符号如下:
-RF
NVUPEIPLNZNAPONC-OVEIZRPE;修改NV,EI,NZ,PO标志位
-RF
OVUPEIPLZRNAPENC-;检查修改结果,返回
-RF
OVUPEIPLZRNAPENC-DNNGACCY;修改UP,PL,NA,NC标志位
-RF
OVDNEINGZRACPECY-;检查修改结果,返回
-;DEBUG提示符
标志
置位(SET)
复位(CLEAR)
溢出overflow
OV
NV
方向Direction
DN
UP
中断interrupt
EI
DI
符号Sign
NG
PL
零Zero
ZR
NZ
辅助进位Anxigiarycarry
AC
NA
奇偶Parity
PE
PO
进位carry
CY
NC
S(检索)命令
用途:
在指定的range范围内找到List规定的字符。
格式:
SrangeList
说明:
显示出符合规定字符处的各地址,如显示提示符“-”,则表示没有发现规定字符。
如对寻找范围内的起始地址只键人一个相对偏移量,S命令假定该段包含在DS寄存器中。
-D0100010F
OCF3:
01005448495320495320-414E204558414D50THISISANEXAMP
-SOl00O1OF20;在100到140区间里,寻找20H字符
0CF3:
0114
0CF3:
0107
0CF3:
010A
-S0100010FAA;在100H到10FH区间里,寻找AAH字符。
-;没检索到AAH字符,“-”DEBUG显示符。
T(跟踪)命令
用途:
执行以CS:
IP(或者=address的规定地址)中指令开始的一个或几个指令,
并显示出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DEBUGEXE 使用
![提示](https://static.bingdoc.com/images/bang_tan.gif)