这可能是最详细的 Windows Debug 详解 了

0

调试概述

是什么调试?

  • debug是Windows 一种16位或32位机的调试器。就是说,在WindowsXP和先前的机具上有调试,导演Win+X 可以调试调试。;后头32位计算图表也干。;但它不分娩随后的64位机具上。,如果有,它也不克不及运转。。你不用试着去运转它。,对立不克不及
  • 外表的,微软的MASM也不克不及在64位体系上运转。。
  • 可以经过任命dosbox来小说式的独身DOS周围的事物或运用WindowsXP(小说式的机那就够了)的办法来运用debug和masm。

调试的功用是什么?什么翻开调试?

运用调试时必需发生的容量的

0。迷住资料都是10二元系,除非阿拉伯数字系统体系中有任何一个等等记号修正(比如50)。

代表徘徊,不一样命令的默许段是不一样的。。都可以接近地适合。 CS:0100L2的产生代表徘徊

2。不葡萄汁运用记号持续的和记号地址。(就是说,var

三。不克不及运用最好地失常的命令,还两种最经用的伪命令 DB 和 DW 能被运用,用于将八位位组和字资料导演放入通信的的存储器UNI中。。如:
DB 1,2,3,4,“ABCD”
DW 1234,5678

调试运用

决定因素记述

命令 意味着 用法
A assemble 导演在内存中调解行为准则
C Compare 比较地叫回
D Dump 检查内存容量的
E Enter 修正内存容量的
F Full 配药内存
G Go 实施行为准则
H Hexarithmetic 施魔法体系达到任务算学运算
I Input 从举枪输入施魔法数显示它
L load 将发送对立做切片读入内存
M move 资料改变(与配摆脱掉不一样)
N name 为读写磁盘发送苛求地解说发送名
O output 将装设八位位组发送到启动举枪
Q quit 完毕调试顺序
R Register 留下印象命令
S Search 粉底列表列表查找内存徘徊徘徊
T track 追踪命令
U UNassemble 内存中命令的表决
W write 将调试消息以书面提出磁盘
? Help 获取扶助消息,就是说,实施了迷住供养的命令。

申述

0。启动调试决定因素

启动产生:Debug [详尽的用法说明][发送名][.exe][exe的决定因素1][exe的决定因素2]

流行,方括号达到任务容量的是可选值。。如果装载发送(正文),未必是EXE。,还可以卸下发送),则使担负的位是CS标点的位。,偏移量为0。

如果输入发送名 filename,这么 DEBUG 只需将装设的发送装载到内存中,晚年的可以输入命令来修正它们。它们。、显示或实施装设发送的容量的。如果缺勤输入发送名 filename,或与普遍地内存的容量的一同任务,或运用命名命令 Name 和装入命令 Load 将所需发送或苛求磁盘做切片装载到内存中,晚年的可以输入命令来修正它们。它们。、显示或实施内存的容量的。

1。缀编命令A(缀编)

  • 功能:典型缀编命令,并把它们安顿成机具行为准则,从装设地址开端在存储器区域中延续存储器。
  • 产生:[地址] (A和ADDR干或不带空格) , A [劣的址留下印象]:[偏移] (迷住干阻止得分)

  • 缀编命令有以下两种体式:

    a 持续从末版一站输入配命令(末版独身)

    a 开端地址 从开端调解缀编行为准则(比如):A 政事司主管:1100 ,就是说,从CS:在1100开端调解缀编行为准则。

2。比较地命令C(比较地)

  • 功能:比较地两个资料块的容量的

  • 体式: C range addr , 流行,徘徊延年益寿第独身资料块的亲子关系地址(以形式)。,如果缺勤以书面提出段留下印象,默许DS,次货个只以书面提出任务地址,无写段留下印象的由于不到庭而败诉DS

  • 如果被发现的人独身不相等的八位位组,地址和容量的以以下产生显示: addr1 byte1 byte2 addr2
    此处,上半部(即) addr1 byte1)阐明 range 外部胜算元素的位和容量的,后半部指 address 被发现的人不相等的容量的和位。

  • 传唤:

    C 100L20 200
    把 DS:100 开端的存储器器的 32 八位位组与从 DS:200 开端的 32 八位位组比较地。

    C代表比较地命令。,100表现亲子关系地址,缺勤分阶段实行被以书面提出,因而默许DS

    L表现段尺寸。,20是十六。,更反倒32八位位组。

三。显示内存命令D(卸下)

  • 功能:显示内存容量的(施魔法)
  • 体式:D [ADDR] 或 D [徘徊] , 任何一个空格都是可以无怨接受的。。
  • 变清澈的:
    • D DS:1100 ;从DS:1100开端显示
    • D ;从末版一位置显示
    • D 0100 ; 无段留下印象,默许DS
    • D [ADDR]L[size] 从ADDR开端按大小排列(16二元系)个八位位组的资料,ADDR的意味着与1比得上。 – 3
    • D [start_addr] [end_addr] ;从start_addr 显示到航空站地址

4。修正内存命令E(输入)

  • 功能:修正内存值

  • 产生:E addr [名单]

    • 缺勤名单。:显示ADDR的容量的,并盼望输入施魔法数掉换它。资料段默许DS

    • 当列表在时:用LI的容量的填写ADDR后的列表尺寸的内存

    eg:E DS:1000 f3 ‘xyz’ d8 ;运用F3 x y z d8 5美元钞票八位位组的容量的掉换DS:1000 到 DS内容:1004

    比如:
    E address
    如今您可以开端以下柄状物:
     输入独身或两个施魔法值的字母去掉换八位位组的容量的,晚年的采用下列的柄状物经过。
     按阻止得分步到下独身地址,显示其容量的。。。如果期望使改变用法说明其容量的就采用是你这么说的嘛!原生的条柄状物。
     输入连字号-重现到先前的地址,显示其容量的。。。如果期望使改变用法说明其容量的则采用是你这么说的嘛!原生的条柄状物。
     在不使改变用法说明普遍地八位位组的命运下重现姓独身八位位组,葡萄汁输入另独身连字母。。
     为了完毕 E 命令,按 ENTER 键。
    比如:
    E cs:100
    您可以存在以下显示:
    04BA:0100 电子书。
    为了把 04BA:0100 容量的由 EBH 使改变用法说明成 41H,晚年的输入。 41:
    04BA:0100 EB.41
    检查三个单元的容量的,按三阻止得分,银幕显示:
    04BA:0100 EB.41 10.00.BC._
    为了普遍地单元(04BA):0103)由 BCH 改成 42H,葡萄汁输入 42:
    04BA:0100 EB.41 10.00.BC.42
    如果你想把它还回去 10h 改成 6FH,在两个连字母和输入掉换八位位组晚年的,银幕上显示:
    04BA:0100 EB.41 10.00.BC.42
    04BA:0102 00._
    04BA:0101 10.6F
    按 ENTER 键完毕输入命令,你会布告提示符是连字母。。

5。内存配药命令F(配药)

  • 用列表达到任务容量的配药徘徊内存
  • 产生: F range list
  • 阐明:如果列表达到任务八位位组数以内地址徘徊,反复运用列表,直到装设徘徊内的内存单元被包装材料为止。如果列表中象征的八位位组姓地址徘徊,疏忽富余。。
  • 比如:
    F4BA:100 L 5 F3‘XYZ’8D
    用装设的 5 配药到内存达到任务八位位组数 04BA:100 到 04BA:104 单元中。注重,存储器列表字母为
    ASCII 字母码,例如 100—104 单位内 F3 58 59 5A 8D。

6。实施命令G(go)

  • 功能:实施在调试的顺序。当抵达装设的断点地址时,终止实施,显示留下印象、斑点位和下独身要实施的命令。断点定居轨道使分裂。。
  • 体式:g[= ADDR] [断点1 ] [断点2 ] [断点n ]…
  • 当未装设= ADDR决定因素时,从IP开端实施

7。施魔法运算命令H (Hexarithmetic)

  • 功能:率先将两个施魔法值相加,晚年的第独身值减去次货个值。。在一件商品线上显示和和比例。

  • 体式:体式:H value value

    比如:
    H 0F 8
    17 07
    000F 和 0008 的 16 施魔法和 0017,不一样之处分娩 0007

8。输入命令I(输入)

  • 装设举枪输入显示

  • 体式:I portnum

    比如:

    – I 2F8

    6B
    显示 02F8 由举枪读取的施魔法八位位组数(6BH)。

9。装载命令L(使担负)

  • 功能:做文档对立做切片装入内存。

  • 产生1:L [ADDR][driver][亲子关系做切片][装填的做切片美国昆腾公司]

    比如:
    L 4BA:100 1 OF 6D
    从螺线管 B 在磁盘上装载资料,并将资料存储器在 4BA:100 开端的内存中。从互相牵连机关 0FH

    提出带 1 2 3个分别

  • 产生2:L 或许 L [ADDR] ;由N命令装设的装载发送。由于不到庭而败诉CS:100发送需求在普遍地发送夹中

    N file_test

    L 使担负到CS:100

    L 政事司主管:1000 装载到装设的内存位 政事司主管:1000

  • 阐明:用奇特的事物 Load 命令可以装载的做切片的最大数量是80H。如果在读取失常的,则 DEBUG 显示失常的消息。

10。转变命令M(摆脱掉)

  • 功能:重现装设内存块到另独身内存块的容量的

  • 产生:M range addr ;将徘徊容量的重现到ADDR徘徊内存块容量的扣留持续性

    比如:
    M CS:100 110 500
    把 政事司主管:100 到 CS:110 的 17 个八位位组的资料,传送到以 DS:500 初始存储器区。

11。命名命令n(选派)

  • 功能:为读写磁盘发送苛求地解说发送名
  • 体式:N [name1][name2….]
  • 阐明:如果缺勤文档开端 DEBUG,在用 L 在命令装载发送领先,必需运用 Name 命令。

12。输入命令O(输入)

  • 功能:向举枪发送资料

  • 体式:O portNum byte

    比如:为了八位位组 4F 到输入举枪 2F8,输入:
    O 2F8 4F

13。离开命令Q(离开)

  • 阐明:Q 命令不饲料内存达到任务任务发送,需求时干 Write 命令饲料发送。

14。留下印象命令R(留下印象)

  • 任务:

    • 显示和修正留下印象的值
    • 显示迷住留下印象、斑点位、因此下独身要实施的命令。
    • 显示 8 个斑点位身份,并选择修正它们达到任务独身或整个
  • 体式:R [regname]

    • 高音的:显示奇特的事物留下印象
      无效留下印象是:AX、BX、CX、DX、SP、BP、SI、DI、DS、ES、SS、CS 和 IP。

    R AX
    体系显示如次:
    AX F1E4
    :_
    如今您可以运用以下两个柄状物经过:
    按 ENTER 关键的保存未修正容量的。。
    输入 1—4 要修正的字母的施魔法值 AX 留下印象容量的,比如 FFFH。
    AX F1F4
    :FFF_
    如今按Enter将AX留下印象容量的更反倒0FFFH。。

    其二:显示迷住留下印象和斑点
    为了显示迷住留下印象容量的和斑点位(静止的下条要实施的命令),输入:
    R
    晚年的体系可以如次所示:
    AX=0E00 BX=00FF CX=0007 DX=01FF
    SP=039D BP=0000 SI=005C DI=0000
    DS=04BA ES=04BA SS=04BA CS=04BA
    IP=011A NV UP DI NG NZ AC PE NC
    04BA:01lA CD21 1NT 21
    前四行显示留下印象和施魔法的施魔法容量的。。末版党派的命令要实施的下一件商品命令的地址,,这是普遍地CS。:IP命令。

    • (3)有8个显示帐单。,全世界用两个字母表现如果设置1身份或,项目见下表。:
    斑点位选派 集中(集中) 变清澈(变清澈)
    超出额 OV NV
    用法说明(减)、加) DN UP
    暂时失去知觉容许 DI DI
    没有(正负) NZ PL
    零(是) ZR NZ
    附带进位 AC NA
    奇偶 PE PO
    进位 CY NC

    显示迷住帐单,输入命令:
    R F
    如果迷住的斑点位都在位1身份,就显示:
    OV DN EI NGZR AC PE CY

15。搜索命令S

  • 功能:粉底倘若容量的在一定徘徊内搜索

  • 产生:S range list

  • 阐明:经过显示婚配字母的地址来命令迷住婚配项。显示缺勤地址的提示符
    “—”,表现未找到婚配字母。。

    比如:要想从 政事司主管:100 到 CS:110 地址徘徊检索 41H,晚年的输入:
    S CS:100 110 41
    如果找到两个婚配,则显示也许是:
    04BA:0104
    04BA:010D

16。下列命令T(下列)

  • 任务:从 CS: IP 或许=address(如果装设的话)单元达到任务命令开端单步实施一件商品或多条命令。嗨的记号必需输入。用 value 装设多个下列命令。在实施每个命令晚年的,显示迷住留下印象容量的、斑点位的身份和下独身要实施的命令。
  • 产生: T [价钱为]

比如,输入命令:
T
如果 IP 留下印象的容量的是 011A,地址援用的命令是 MOV AH,0EH,这可以显示:
AX=0E00 BX=00FF CX=0007 DX=01FF
SP=039D BP=0000 SI=005C D1=0000
DS=04BA ES=04BA SS=04BA CS=04BA
IP=011C NV UP DI NG NZ NC PE NC
04BA:01lC CD21 INT 21
这是实施。 011A 命令后显示水果,还指明下独身要实施的命令是 04BA:011C 单元达到任务
INT 21。

17。分解命令U(分解)

  • 功能:将机具行为准则替换成缀编制陈述,显示命令的地址、机具行为准则和汇
    编制陈述
  • 产生:
    • U [徘徊] , 缺勤装设地址的分解命令,或从装设地址开端分解命令
    • U [ADDR] , 用ADDR启动分解命令。分解好多发动什么显示。用 40 列显示时期间,一次把 16 八位位组表决;用 80 列显示时期间,一次把 32 八位位组表决。,

18。发送卸下命令W(以书面提出)

  • 任务:将调试消息以书面提出磁盘。

  • 产生:

    • 1。将消息以书面提出装设地址对立磁盘做切片上,W address drive sector sector
      从装设开端(原生的)的对立做切片 做切片)开端以书面提出资料,延续写。,直到所需的做切片数已以书面提出(次货) 做切片)直到。这种办法受到磁盘做切片美国昆腾公司的限度局限。,故障内存容量的的量。

    比如,命令:
    W 1FD 1 100 A
    把从 CS:01FD 以书面提出螺线管的单元启动资料 B 的软盘中,由对立做切片 100h(256)开端延续写信 0Ah(10)做切片。

    此刻,将命令以书面提出发送到磁盘,把从政事司主管:100按决定因素 address 装设单元开端文档由文档作图 filespec 以书面提出磁盘。此发送的发送作图已体式化为 CS:5C 发送把持块中。开端时 DEBUG 装设发送作图时,或运用 N 命令,这两种办法都能容量这一件商品件。。

    另一边,必需自动行为记录器 BX 和 CX 以书面提出八位位组数,他们可能性先前 DEBUG 或 Load 命令先前扩展。,它可能性先前被修正了。。必需确保 BX 和 CX 留下印象象征正当的值。原生的种办法的不确实知道是呼唤的吗?

注重调试点

也许是前独身反复。。这就更变清澈的了。。

DEBUG供养根本的8086/8088缀编语言表情,DEBUG下的缀编语言有上面某个点和定期地:
① 数字是施魔法,缺勤后缀H。
② 记号持续的和记号地址不克不及运用。
③ 不克不及运用最好地的虚伪命令,还两种最经用的伪命令 DB 和 DW 能被运用,用于将八位位组和字资料导演放入通信的的存储器UNI中。。如:
DB 1,2,3,4,“ABCD”
DW 1234,5678
④ 可以运用属性运算符PTR对。 DEBUG 无法装设未苛求地解说典型的柄状物数。。如:INC BYTE
PTR [BX]。
⑤ DEBUG 的 A 命令缀编顺序可粉底需求自动行为缀编存储管理服务。、近距离或微小的的改变
呼唤命令。自然,这也可以用短来填写。、“NEAR PTR或远 改变任务地址
实施解说。
⑥ 微小的重现命令的记忆的定居 DEBUG 中为 RETF。
⑦ 命令前缀记忆的必需在互相牵连命令领先输入。,它也可以放在不一样的行中。。
⑧ 字母串柄状物命令只能用八位位组或圣洗池记忆的产生。,如:MOVSB、CMPSW 等。
⑨ 可以运用段超过前缀记忆的 CS:、DS:、ES:和 SS:。如:
DS:
MOV AL,[BP ]

LEAVE A REPLY