2024年6月8日发(作者:)

一 cmd对话框中Debug指令学习

一、DEBUG的主要指令:

点击开始-->点运行-->在运行对话框中输入cmd-->在输入debug

1、显示存储单元的指令D(DUMP)格式为:_D[address]或_D[range]

例如按指定范围显示存储单元内容的方法为:

-d100 120

18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 G...

18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.7

18E4:0120 8B

其中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 C7 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)有两种格式: