编辑: star薰衣草 | 2019-07-05 |
3 (返回 debug 状态) ****:011C -d ****:0100 (d 为内存单元数据显示命令.这里是检查源地址开始的10h个单 元中的数) ****:0100
00 01
02 03
04 05
06 07-08
09 0A 0B 0C 0D 0E 0F ... -g=****:0110 (g 为运行命令.这里是从 ****:0110 地址开始运行程序) AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0110 DI=0210 DS=**** ES=**** SS=**** CS=**** IP=011B NV UP EI PL NZ NA PO NC ****:011B CC INT
3 -d ****:0200 (检查目标地址开始的 10h 个单元中的数) ****:0200
00 01
02 03
04 05
06 07-08
09 0A 0B 0C 0D 0E 0F ... -a ****:0113 ****:0113 mov di,0300 (将目标地址改为 ****:0300) ****:0116 -g=****:0110 (再运行该段程序) AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0110 DI=0310 DS=**** ES=**** SS=**** CS=**** IP=011B NV UP EI PL NZ NA PO NC ****:011B CC INT
3 -d ****:0300 (检查新目标地址开始的 10h 个单元中的数) ****:0300
00 01
02 03
04 05
06 07-08
09 0A 0B 0C 0D 0E 0F ... -e ****:0100 (e 为修改内存单元内容命令.这里是改写源地址开始的 10h个单元中的数) ****:0100 00.f 01.e 02.d 03.c 04.b 05.a 06.9 07.8 ****:0108 08.7 09.6 0A.5 0B.4 0C.3 0D.2 0E.1 0F.0 -g=****:0110 (再运行该段程序) AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE P=0000 SI=0110 DI=0310 DS=**** ES=**** SS=**** CS=**** IP=011B NV UP EI PL NZ NA PO NC ****:011B CC INT
3 -d ****:0300 (检查新目标地址开始的10h 个单元中的数据) ****:0300 0F 0E 0D 0C 0B 0A
09 08-07
06 05
04 03
02 01
00 ... 若要把调试中的数据存盘, 可先用 n 命令指定文件名, 再用 w命令将指定长度和起始地址的数据存入指定文件.具体操作为: -n aaa (n 是命名命令, 用此命令指定了文件后, 才能用 l 命令调文件或用w 命令写文件.这里是在当前盘当前路径下指定了文件 aaa) -r cx (r 是显示/修改寄存器内容命令, 能显示 cpu 内部所有寄存器的内容和全部标志位的状态, 也能显示和修改某个指定寄存器的内容, 也能显示和修改所有标志位的状态.这里是改写 cx 的值) cx
0000 :001c (将要存盘的字节数 1ch 写入 cx) -w ****:0100 (w 是写命令.这里是将从地址 ****:0100 开始的 1ch 个字 节的数据存入文件 aaa 中) Write 001c bytes -q (退出 debug) 实例二: 对abc.exe 程序进行检测、调试.有两种方法将 abc.exe 程序调入 debug. 方法一: debug abc.exe 方法二: debug -n abc.exe (指定文件 abc.exe) -l (l 是调入命令, 将n命令指定的文件调入 debug.) 用其中一种方法将 abc.exe 调入debug 后, 继续操作如下: -u (u 是反汇编命令, 可将目标程序反汇编为源程序.这里是从当前地址 ****:0000=cs:ip 处开始反汇编) ****:0000 1E PUSH DS ****:0001 B80000 MOV AX,0000 ****:0004
50 PUSH AX ****:0005 B82A14 MOV AX,DATA (DATA 为ds 段基址) ****:0008 8ED8 MOV DS,AX ****:000A BB0000 MOV BX,0000 (0000 为d1 的地址偏移量) ****:000D B90E00 MOV CX,000E ****:0010 BA0000 MOV DX,0000 ****:0013 8B07 MOV AX,[BX] ****:0015 3D0000 CMP AX,0000 ****:0018 7D01 JGE 001B ****:001A
42 INC DX ****:001B
43 INC BX ****:001C E2F5 LOOP
0013 ****:001E 89160E00 MOV [000E],DX (000e 为rs 的地址偏移量) -d ****:0 (显示d1 的地址开始的内存单元中的数据) ****:0000 FF
02 FD
04 FB
06 F9 08-F7 0C E2 0A F4
06 00
00 ... 可看出 d1 地址开始的数据块中有
14 个单字节数, 其中有
7 个负数. -g=****:0 (从cs:ip 开始运行程序.若程序正确, 则rs 所在单元 ****:000e 的内容应为 7) Program terminated normally -d ****:0 (显示****:000e 单元的内容) ****:0000 FF