最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Debug如何 调试汇编程序

来源:动视网 责编:小OO 时间:2025-09-28 12:34:31
文档

Debug如何 调试汇编程序

如何用DEBUG调试汇编程序DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。一、DEBUG程序的调用    在DOS的提示符下,可键入命令:        C:\\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]    其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBU
推荐度:
导读如何用DEBUG调试汇编程序DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。一、DEBUG程序的调用    在DOS的提示符下,可键入命令:        C:\\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]    其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBU
如何用DEBUG调试汇编程序

DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。   

一、DEBUG程序的调用  

        在DOS的提示符下,可键入命令:  

                C:\\DEBUG   [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]  

        其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。  

        在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。   

二、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   02   G...8.G.....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   .-  

        如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如下:  

        18E4:0100   .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   C70604023801   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),有两种格式:  

        ·逐条指令跟踪  

        -T   [=address]  

        从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。  

        ·多条指令跟踪  

        -T   [=address][value]  

        从指定地址起执行n条指令后停下来,n由value指定。  

6)汇编命令A(Assemble),其格式为:  

        -A[address]  

        该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。  

7)反汇编命令U(Unassemble)有两种格式。  

        ·从指定地址开始,反汇编32个字节,其格式为:  

        -U[address]  

例如:  

        -u100  

        18E4:0100   C70604023801       MOV       WORD   PTR[0204],0138  

        18E4:0106   C70606020002       MOV       WORD   PTR[0206],0200  

        18E4:010C   C70606020202       MOV       WORD   PTR[0208],0202  

        18E4:0112   BBO4O2                                   MOV           BX,0204  

        18E4:0115   E80200                                   CALL   011A  

        18E4:0118   CD20                           INT       20  

        18E4:011A   50                                 PUSH   AX  

        18E4:011B   51                                 PUSH   CX  

        18E4:011C   56                                 PUSH   SI  

        18E4:011D   57                                 PUSH   DI  

        18E4:011E   8B37   MOV   SI,[BX]  

如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。  

        ·对指定范围内的存储单元进行反汇编,格式为:  

        -U[range]  

例如:  

        -u100   10c  

        18E4:0100   C70604023801   MOV   WORD   PTR[0204],0138  

        18E4:0106   C70606020002   MOV   WORD   PTR[0206],0200  

        18E4:010C   C70606020202   MOV   WORD   PTR[0208],0202  

或  

        -u100   112          

        18E4:0100   C70604023801   MOV   WORD   PTR[0204],0138  

        18E4:0106   C70606020002   MOV   WORD   PTR[0206],0200  

        18E4:010C   C70606020202   MOV   WORD   PTR[0208],0202  

  

        可见这两种格式是等效的。  

8)命名命令N(Name),其格式为:  

        -N   filespecs   [filespecs]  

命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。filespecs的格式可以是:  

[d:][path]   filename[.ext]  

例如,  

        -N   myprog  

        -L  

        -  

可把文件myprog装入存储器。  

9)装入命令(Load),有两种功能。  

        ·把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为: 

        -L[address[drive   sector   sector]  

        ·装入指定文件,其格式为:  

        -L[address]  

此命令装入已在CS:5CH中格式化了文件控制块所指定的文件。如未指定地址,则装入CS:0100开始的存储区中。  

10)写命令W(Write),有两种功能。  

        ·把数据写入磁盘的指定扇区。其格式为:  

                -W   address   drive   sector   sector 

        ·把数据写入指定的文件中。其格式为:  

                -W[address]  

此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。如未指定地址则数据从CS:0100开始。要写入文件的字节数应先放入BX和CX中。  

11)退出DEBUG命令Q(Quit),其格式为:  

        -Q  

它退出DEBUG,返回DOS。本命令并无存盘功能,如需存盘应先使用W命令。   

问   题   :   初   学   者   问   一   个   低   级   问   题   ,执   行   debug   -a   后   ,如   果   有   一   行   输   入   错   误   ,如   何   更   改   这   一   行   ?   

回答: 

        加   入   进   行   如   下   输   入   : 

        D:\\PWIN95\\Desktop> debug

        -a 

        2129:0100   mov   ax,   200 

        2129:0103   mov   bx   ,200 

        2129:0106   mov   cx,   200 

        2129:0109 

        此   时   ,   发   现   mov   bx,   200一   句   错   误   ,   应   为   mov   bx,   20,   可   以   敲   回   车   返   回   “   -”   状   态   ,   然   后   输   入   : 

        -a   103 

        2129:0103   mov   bx,   20 

    如   果   多   或   者   少   若   干   行   ,   不   必   重   新   输   入   ,   可   以   用   M命   令   移   动   后   面   的   程   序   来   去   掉   或   者   增   加   程   序   空   间   。  

文档

Debug如何 调试汇编程序

如何用DEBUG调试汇编程序DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。一、DEBUG程序的调用    在DOS的提示符下,可键入命令:        C:\\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]    其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBU
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top