| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5860 人关注过本帖
标题:DEBUG主要命令
只看楼主 加入收藏
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
结帖率:25%
收藏
 问题点数:0 回复次数:11 
DEBUG主要命令
1、如何调用DEBUG程序
语法格式:DEBUG [驱动器名:][路径][文件名]
如有文件名,则将指定的文件调入内存。
如命令中没有指定文件名,则DEBUG可以与正在内存中的内容打交道。DEBUG程序调入后,出现提示符“_”,说明现在系统在DEBUG程序的管理下,所有DEBUG命令只有在出现提示符后才有效。
2、DEBUG对寄存器和标志位的初始化
 指令指针寄存器(IP)置为0100H。
 AX、BX、CX、DX、BP、SI、DI置为0。若DEBUG调入时指定了文件名,则BX:CX中包含以字节表示的文件长度。
 标志清零。
3、有关DEBUG命令的一些共同信息
 所有命令都是一个字母,后面跟一个或多个参数,数据是十六进制数;
 命令和参数大、小写等价;
 命令和参数之间可以用定界符,两个相邻的十六进制数之间必须使用定界符;
 按Ctrl+Break可以中止一个命令的执行;
 DEBUG可以检查语法错误。
4、显示内存单元内容的命令
格式:D[地址] 或 D[范围]
功能:检查指定范围的存储单元的内容,分两种方式显示。
例:d 2000:0100 d d100 des:0 d1000:0100 02ff
5、修改存储单元内容的命令
 用命令中给定的内容表去代替指定范围的内存单元的内容。
格式:E 地址 内容表
例:e ds:100 f3’abc’8d
e 100 30 31 32 33 34 35 36 37
d 100
 逐个单元连续修改。
格式:E 地址
E2000:100
 填写命令
格式:F 范围 内容表
范围:由起始地址和结束地址组成。
例:f ds:0 8 ‘abc’
 检查和修改寄存器内容的命令
格式1:R
功能:显示所有寄存器的内容和全部标志位的状态。
格式2:R 寄存器名
功能:显示和修改一个指定寄存器的内容。
格式3:RF
功能:显示和修改所有标志位的状态。
6、汇编命令A
  格式:A[地址]
  功能:将用户输入的汇编语言的语句汇编成机器码,存放在指定地址开始的存储单元中。若没有指定地址,则接着上一个汇编命令的最后一个单元开始存放;若前面没有用过汇编命令,则从(CS):100H单元开始存放。
  注:Debug不能确定某些操作数涉及到的是字单元还是字节单元,必须用前缀来说明数据类型。
7、跟踪命令T
格式:T[=地址][n]
功能:从指定地址开始(若没有指定地址则从现行的CS:IP处)执行n条指令后停下来,显示每条指令执行完后的所有寄存器和标志位的状态。
8.反汇编命令U
① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。
② U 范围;对指定范围的单元进行反汇编。
-U
-U100
-U100L10
9.运行程序命令G
① G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。
② G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。
③ G 断点;从CS:IP指向的指令开始执行程序,直到遇到断点。
④G=地址 断点
-G ;从CS:IP指向的指令开始执行程序。
-G=100 ;从指定地址开始执行程序。 -G=100 120
搜索更多相关主题的帖子: DEBUG 寄存器 内存 命令 文件名 
2007-04-28 22:19
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 

做个更详细的补充:

进入后显示’-’,CS、DS、ES、SS四个段寄存器值相等(每次进入不一定相等,取决于系统及内存驻留程序的多少),除IP=0100H、SP=FFEEH,其它通用寄存器值均为0,PSW的初值为NV、UP、EI、PL、NA、PO、NC。特别要注意CS:IP代表下一条待执行的指令的默认起始,SS:SP为栈顶地址,涉及串操作时DS:SI代表源串的起始地址,ES:DI代表目的串的起始地址,涉及文件操作时BX、CX代表文件长度(BX为高16位,CX为低16位),内存变量在DEBUG中必须用其他寻址方式替代(一般用直接偏移量表示)。练习各条常用DEBUG命令的使用,要求熟悉英文缩写及单词。
1、 -? ; 显示如下(命令英文全称,命令,参数表)(中括号代表可省略,下同)
assemble A [address]
compare C range address
dump D [range]
enter E address


    fill F range list
    go G [=address] [addresses]
    hex H value1 value2
    input I port
    load L [address] [drive] [firstsector] [number]
    move M range address
    name N [pathname] [arglist]
    output O port byte
    proceed P [=address] [number]
    quit Q
    register R [register]
    search S range list
    trace T [=address] [value]
    unassemble U [range]
    write W [address] [drive] [firstsector] [number]
    allocate expanded memory XA [#pages]
    deallocate expanded memory XD [handle]
    map expanded memory pages XM [Lpage] [Ppage] [handle]
    display expanded memory status XS
    2、 显示和修改寄存器的内容的命令R的用法:-R[积存器名| F]
    -R ; 这可显示所有寄存器的内容,包括标志寄存器的内容,以及当前CS:IP处的一条指令的机器码和汇编指令,还有涉及到的存储单元内容。如:
    -R
    AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
    DS=119D ES=119D CS=119D IP=0100 NV UP EI PL NZ NA PO NC
    119D:0100 B83412 MOV AX,1234
    除PSW外其余寄存器均显示为16进制数据,PSW各标志位的置位/复位(1/0)分别为:
    OF: OV/NV(Overflow/No Overflow)
    DF: DN/UP(Down/Up)
    IF: EI/DI(Enable Interrupt/Disable Interrupt)
    SF: NG/PL(Negative/Positive)
    ZF: ZR/NZ(Zero/Not Zero)
    AF: AC/NA(Auxiliary Carry/No Auxiliary Carry)
    PF: PE/PO(Parity Even/Parity Odd)
    CF: CY/NC(Carry/No Carry)
    -R 寄存器名或标志F ; 修改指定寄存器或标志位的内容,如:
    -R BX
    BX 0369
    : ; 若不修改,可按ENTER键,否则在冒号后输入要修改的内容如059F回车,则BX的内容有0369修改为059F。
    -RF
    NV UP EI PL NZ NA PO -CY ZR ; 则NC改为CY,NZ改ZR(无序)

    内存数据内命令主要有以下三个D、E、F。
    3、 显示内存单元的内容命令格式:
    -D[[段地址:]起始偏移 [终止偏移]] ; 显示指定范围的内存单元内容,如:
    -D
    0BB4:0100 2E F6 06 56 91 40 74 0F-26 F7 47 02 20 00 74 07 ...V.@t.&.G. .t.
    0BB4:0110 26 80 7E 00 00 74 22 26-F7 07 10 00 34 00 A3 0B &.~..t"&....4...
    0BB4:0120 75 09 26 80 7E 00 00 75-0D EB 0E 3C 00 75 07 26 u.&.~..u...<.u.&
    0BB4:0130 80 7E 00 3A 74 03 F9 EB-06 2E 89 36 59 91 F8 5E .~.:t......6Y..^
    0BB4:0140 5A 5D 58 C3 50 51 52 56-53 56 E8 AA 00 5E 2E C7 Z]X.PQRVSV...^..
    0BB4:0150 06 08 92 00 00 2E C7 06-0A 92 00 00 2E C7 06 0C ................
    0BB4:0160 92 00 00 E8 AD 00 72 18-2E A3 08 92 0A DB 74 1A ......r.......t.
    0BB4:0170 E8 A0 00 72 6E 2E A3 0A-92 0A DB 74 0D E8 93 00 ...rn......t....
    (默认从当前段及偏移地址开始,显示内存单元的128个字节的内容,每行16个字节。显示出内容的格式为:内存起始段地址:偏移地址,16个字节的16进制数据,对应ASCII字符)
    4、 修改内存单元的内容: -E[段地址:]起始偏移 [修改内容列表],如:
    -E 0100 “ABCD” 或 –E 0100 41 42 43 44
    将0100H起始偏移单元的内容修改为41H、42H、43H、44H。
    -E 100 ; 省略内容列表,边显示边修改
    136C:0100 3C.41 3E.42 75.43 70.44
    5、 填充内容列表: -F[段地址:]起始偏移 终止偏移 填充内容列表,如:
    -F 0200 0300 “AB” ; 将偏移地址从0200H到0300H单元的内容都填充为ABAB......AB

    内存程序类命令主要有以下5个:A、U、T、P、G。这类指令地址断位一定要准确,否则可能将一条指令拆开造成程序乱套。
    6、 编写/修改汇编语句: -A[[段地址:]起始偏移],如:
    -A100
    0BB4:0100 MOV AX,829F
    0BB4:0103 MOV BX,2C78
    0BB4:0106 ADD AX,BX
    0BB4:0108 HLT
    0BB4:0109
    7、 反汇编命令: -U[[段地址:]起始偏移 [终止偏移]] ; 将指定地址范围的机器码反汇编成汇编指令。如:
    -U100
    0BB4:0100 B89F82 MOV AX,829F
    0BB4:0103 BB782C MOV BX,2C78
    0BB4:0106 01D8 ADD AX,BX
    0BB4:0108 F4 HLT
    0BB4:0109 F747022000 TEST WORD PTR [BX+02],0020
    0BB4:010E 7407 JZ 0117
    0BB4:0110 26 ES:
    0BB4:0111 807E0000 CMP BYTE PTR [BP+00],00
    0BB4:0115 7422 JZ 0139
    0BB4:0117 26 ES:
    0BB4:0118 F7071000 TEST WORD PTR [BX],0010
    0BB4:011C 3400 XOR AL,00
    0BB4:011E A30B75 MOV [750B],AX
    (未指定终止偏移共显示13行,段地址:偏移地址 机器码 汇编指令)
    8、 单步跟踪进入命令: -T[=[段地址:]起始偏移] [指令条数] ; 默认为一条指令,该命令可从指定地址起执行指定条数指令后停下来,每条指令执行后均会显示寄存器内容和状态值。如:
    -R ; 显示当前寄存器、标志位及当前指令
    AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
    DS=0BB4 ES=0BB4 SS=0BB4 CS=0BB4 IP=0100 NV UP EI PL NZ NA PO NC
    0BB4:0100 B89F82 MOV AX,829F
    -T ; 执行当前一条指令MOV AX,829F,即将829FH送AX,标志位不变
    AX=829F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
    DS=0BB4 ES=0BB4 SS=0BB4 CS=0BB4 IP=0103 NV UP EI PL NZ NA PO NC
    0BB4:0103 BB782C MOV BX,2C78
    -T ; 执行当前一条指令MOV BX,2C78,即将2C78H送BX,标志位不变
    AX=829F BX=2C78 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
    DS=0BB4 ES=0BB4 SS=0BB4 CS=0BB4 IP=0106 NV UP EI PL NZ NA PO NC
    0BB4:0106 01D8 ADD AX,BX
    -T ; 执行当前一条指令ADD AX,BX,即将AX加BX送AX,标志位相应改变
    AX=AF17 BX=2C78 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
    DS=0BB4 ES=0BB4 SS=0BB4 CS=0BB4 IP=0108 NV UP EI NG NZ AC PE NC
    0BB4:0108 F4 HLT
    9、单步跟踪跳过命令: -P[=[段地址:]起始偏移] [指令条数] ; 默认为一条指令,该命令可从指定地址起执行指定条数指令后停下来,每条指令执行后均会显示寄存器内容和状态值。与上一条T命令相比最主要的不同是遇到CALL及INT指令时是否进入子程序内部,T会进入,P不会进入,当成一条指令一次完毕。所以在调试程序时,若子程序需要调试则用T进入,否则用P跳过以节省时间。
    10、连续运行命令: -G[=[段地址:]起始偏移] [偏移2 [偏移3 […]]]
    起始偏移规定了运行的起始偏移地址,后面的若干偏移均为断点地址。如:
    -G=100 108 ; 从100H处连续执行到108H处,不包括108H处指令
    AX=AF17 BX=2C78 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
    DS=0BB4 ES=0BB4 SS=0BB4 CS=0BB4 IP=0108 NV UP EI NG NZ AC PE NC
    0BB4:0108 F4 HLT

    以下三个命令M、C、S既可用于内存数据处理也可用于内存程序处理。注意:内存中的内容既可看成数据也可看成程序,程序是一种特殊的数据而已。程序是由指令构成,指令包含若干个字节的数据。
    11、移动内存数据或程序: -M[段地址:]起始偏移 终止偏移 目的偏移,如:
    -C0200 021F 0300 ; 将从偏移0200H到021FH单元的内容与0300H到031FH中共32个字节的内存相比较,对应不同时显示它们的地址,相同时则不显示。
    -C200 21F 300
    0BB4:0207 1F 0E 0BB4:0307
    0BB4:0208 B8 92 0BB4:0308
    0BB4:0209 00 0A 0BB4:0309
    0BB4:020A 38 DB 0BB4:030A
    0BB4:020B 8B 75 0BB4:030B
    0BB4:020C D6 57 0BB4:030C
    0BB4:020D CD 2E 0BB4:030D
    0BB4:020E 21 A1 0BB4:030E
    0BB4:020F 58 08 0BB4:030F
    0BB4:0210 5A 92 0BB4:0310
    0BB4:0211 1F 0A 0BB4:0311
    0BB4:0212 C3 E4 0BB4:0312
    0BB4:0213 51 75 0BB4:0313
    0BB4:0214 52 4F 0BB4:0314
    0BB4:0215 33 2E 0BB4:0315
    0BB4:0216 C9 F6 0BB4:0316
    0BB4:0217 2E 06 0BB4:0317
    0BB4:0218 8A 55 0BB4:0318
    0BB4:0219 04 91 0BB4:0319
    0BB4:021A 0A 01 0BB4:031A
    0BB4:021B C0 74 0BB4:031B
    0BB4:021C 74 08 0BB4:031C
    0BB4:021E 2E 0C 0BB4:031E
    0BB4:021F 80 77 0BB4:031F
    13、查找内存数据或程序: -S[段地址:]起始偏移 终止偏移 查找内容列表,如:
    -S200 300 "A"
    0BB4:02C1 ; 从偏移0200H到0300H单元的内容依次与”A”即41H相比较,相同则显示它们的地址,否则不显示。

    以下两个命令L、W主要与外存打交道,可以为磁盘的扇区也可以为文件。N用于文件取名或指定。
    N命令的格式为: -N[盘符][路径]文件名
    15、将磁盘扇区内容或文件内容装入内存的命令L,L命令的格式为:
    -L[[段地址:]起始偏移] ; 将N命令指定的文件内容装入内存指定起始地址处,并将文件长度填充到BX、CX中,BX为长度高16位,CX为低16位,装入文件也可由DEBUG命令时带入参数,如:>DEBUG 文件名。
    -L[段地址:]起始偏移 盘号 起始扇区号 扇区数 ; 将指定盘(0号对应A盘、1号对应B盘,依次类推)的指定扇区的内容(一个扇区512字节)装入内存。如:
    -L 100 2 0 1 ; 将硬盘C的引导扇区内容读入内存100H开始处
    -D 100 ; 显示引导扇区内容
    0BB4:0100 3B 52 45 53 45 54 2E 41-53 4D 20 28 52 45 53 45 ;RESET.ASM (RESE
    0BB4:0110 54 BF AA B9 D8 B8 B4 CE-BB C6 F4 B6 AF B3 CC D0 T...............
    0BB4:0120 F2 29 20 0D 0A 43 4F 44-45 31 20 53 45 47 4D 45 .) ..CODE1 SEGME
    0BB4:0130 4E 54 20 41 54 20 30 46-46 46 46 48 20 0D 0A 41 NT AT 0FFFFH ..A
    0BB4:0140 53 53 55 4D 45 20 43 53-3A 43 4F 44 45 31 20 0D SSUME CS:CODE1 .
    0BB4:0150 0A 41 44 44 52 20 4C 41-42 45 4C 20 46 41 52 20 .ADDR LABEL FAR
    0BB4:0160 0D 0A 43 4F 44 45 31 20-45 4E 44 53 20 0D 0A 43 ..CODE1 ENDS ..C
    0BB4:0170 4F 44 45 20 53 45 47 4D-45 4E 54 20 0D 0A 4F 52 ODE SEGMENT ..OR
    -D
    0BB4:0180 47 20 31 30 30 48 20 0D-0A 41 53 53 55 4D 45 20 G 100H ..ASSUME
    0BB4:0190 43 53 3A 43 4F 44 45 2C-44 53 3A 43 4F 44 45 2C CS:CODE,DS:CODE,
    0BB4:01A0 45 53 3A 43 4F 44 45 0D-0A 53 54 41 52 54 3A 20 ES:CODE..START:
    0BB4:01B0 0D 0A 4A 4D 50 20 46 41-52 20 50 54 52 20 41 44 ..JMP FAR PTR AD
    0BB4:01C0 44 52 20 0D 0A 43 4F 44-45 20 45 4E 44 53 20 0D DR ..CODE ENDS .
    0BB4:01D0 0A 45 4E 44 20 53 54 41-52 54 20 0D 0A 0D 0A 3B .END START ....;
    0BB4:01E0 42 4F 4F 54 2E 41 53 4D-20 28 C8 C8 C6 F4 B6 AF BOOT.ASM (......
    0BB4:01F0 B3 CC D0 F2 29 20 0D 0A-43 4F 44 45 31 20 53 45 ....) ..CODE1 SE
    -D
    0BB4:0200 47 4D 45 4E 54 20 41 54-20 30 46 46 46 46 48 20 GMENT AT 0FFFFH
    0BB4:0210 0D 0A 41 53 53 55 4D 45-20 43 53 3A 43 4F 44 45 ..ASSUME CS:CODE
    0BB4:0220 31 20 0D 0A 41 44 44 52-20 4C 41 42 45 4C 20 46 1 ..ADDR LABEL F
    0BB4:0230 41 52 20 0D 0A 43 4F 44-45 31 20 45 4E 44 53 20 AR ..CODE1 ENDS
    0BB4:0240 0D 0A 43 4F 44 45 20 53-45 47 4D 45 4E 54 20 0D ..CODE SEGMENT .
    0BB4:0250 0A 4F 52 47 20 31 30 30-48 20 0D 0A 41 53 53 55 .ORG 100H ..ASSU
    0BB4:0260 4D 45 20 43 53 3A 43 4F-44 45 2C 44 53 3A 43 4F ME CS:CODE,DS:CO
    0BB4:0270 44 45 2C 45 53 3A 43 4F-44 45 0D 0A 53 54 41 52 DE,ES:CODE..STAR
    -D
    0BB4:0280 54 3A 20 0D 0A 4D 4F 56-20 41 58 2C 30 30 34 30 T: ..MOV AX,0040
    0BB4:0290 48 20 0D 0A 4D 4F 56 20-44 53 2C 41 58 20 0D 0A H ..MOV DS,AX ..
    0BB4:02A0 4D 4F 56 20 41 58 2C 31-32 33 34 48 20 0D 0A 4D MOV AX,1234H ..M
    0BB4:02B0 4F 56 20 53 49 2C 30 30-37 32 48 20 0D 0A 4D 4F OV SI,0072H ..MO
    0BB4:02C0 56 20 5B 53 49 5D 2C 41-58 20 0D 0A 4A 4D 50 20 V [SI],AX ..JMP
    0BB4:02D0 46 41 52 20 50 54 52 20-41 44 44 52 20 0D 0A 43 FAR PTR ADDR ..C
    0BB4:02E0 4F 44 45 20 45 4E 44 53-20 0D 0A 45 4E 44 20 53 ODE ENDS ..END S
    0BB4:02F0 54 41 52 54 0D 0A 0D 0A-2E 8B 36 E3 91 E9 CE F7 TART......6.....
    16、将内存中内容存入磁盘扇区或文件中去的命令W,W命令的格式为:
    -W[[段地址:]起始偏移] ; 将内存指定起始地址处的内容(长度由BX、CX指定,BX为长度高16位,CX为长度低16位)存入由N命令指定的文件或DEBUG命令时装入的文件中去。如:
    C:\DOCUME~1\ADMINI~1>DEBUG E:\BOOT.DAT
    -R BX
    BX 0000 ; 指定文件长度高16位为0
    :0
    -R CX ; 指定文件长度低16位为512(200H)
    CX 0000
    :200
    -W 100 ; 文件存盘
    Writing 00200 bytes
    -W[段地址:]起始偏移 盘号 起始扇区号 扇区数 ; 将指定内存起始处的内容存入指定盘的指定扇区中。如果遇到C盘引导区被破坏,此时可用软盘启动后,装入刚才备份的引导区文件覆盖到原引导区即可:
    C:\DOCUME~1\ADMINI~1>DEBUG E:\BOOT.DAT
    -L 100
    -W 100 2 0 1 ; 将硬盘C的引导扇区内容读入内存100H开始处
    注:32位以上机型不支持此功能

    17、十六进制计算H命令格式为: -H 十六进制数1 十六进制数2,如:
    -H 1234 5678
    68AC BBBC ; 求出两数之和、之差
    18、端口输入命令I的格式为: -I 端口地址,从指定端口输入一个字节内容,如:
    -I 40
    B2
    19、端口输出命令O的格式为: -O 端口地址 输出字节内容,将字节内容输出到端口,如破解CMOS口令:
    -O 70 10
    20、退出命令: -Q


2007-04-29 14:22
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 

谢谢补充


   好好活着,因为我们会死很久!!!
2007-04-29 15:26
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
呵呵,互相帮助嘛

2007-04-29 16:03
danielliujp
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-11-30
收藏
得分:0 
太感谢了,现在正用这个

上有政策 下有对策
2007-05-11 21:52
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 
顶,,有更多这样资料就好

2007-05-11 22:37
totohack
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2007-7-15
收藏
得分:0 
谢谢!
这个不支持下都不行了,太详细了!

2007-07-15 20:56
losttime9958
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-8-27
收藏
得分:0 
回复:(totohack)谢谢!这个不支持下都不行了,太详...
太感谢了

2007-08-28 18:58
吊儿郎当
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-27
收藏
得分:0 

看了一篇像看天书一样,不过还是顶一下。

2007-09-01 11:19
电脑爱好者
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-5-6
收藏
得分:0 
   武功秘籍。。。很好
2007-09-26 17:02
快速回复:DEBUG主要命令
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012918 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved