我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: DEBUG主要命令 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

套话系





性别: 保密 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 643
威望: 0
浮云: 1111
在线等级:
注册时间: 2007-06-26
最后登陆: 2008-06-29

5come5帮你背单词 [ systematically /sisti'mætikəli/ ad. 系统地,有秩序地 ]


DEBUG主要命令

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 

      例如,-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  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.EXE指令说明 
       
      DEBUG  [执行文件名]  [执行该文件的外带参数]   
      a  [sta]  编写汇编语言程序的指令,sta为启始地址   
      c  sta  end  sta2    比较两个储存单元,sta为第一储存单元的启始地址,而end为第一储存单元结束地址,sta2为第二储存单元的启始地址   
      c  sta  lnn  sta2  比较两储存单元,sta为第一储存单元启始地址,而nn为欲比较的长度大小,sta2为第二储存单元启始地址   
      d  [sta]  [end]    显示某指定范围储存单元至屏幕(sta:启始、end:结束)   
      d  [sta]  [lnn]    显示某指范围块储存单元至屏幕(sta:启始、nn:长度)   
      e  [sta]    修改储存单元中某一个byte的资料,sta为地址   
      e  [sta]  [data]    修改储存单元中某一个byte的资料,data为新资料   
      g  [end]  执行程序,直至结束地址(end)或程序结束时   
      g=sta  [end]  执行从启始(sta)直至结束(end)或程序结束时   
      r  [reg]    显示所有存储器內容或修改某指定存储器(reg)值   
      t  [num]    单步执行,num指定一次执行几步(预设1)   
      t=sta  [num]  单步执行,从sta起始,num指定执行几步(预设1)   
      n  filename  为目前正在编辑或除错的文件命名   
      w  [sta]    储存文件,写入cx个bytes的资料至n指定的文件名   
      w  sta  dri  sec  num    将sta资料写入dri磁盘的第sec磁区共写num个磁区   
      l  [sta]    载入文件,读出n指定文件,档名的资料至sta地址中   
      l  sta  dri  sec  num  读出dri磁盘的第sec磁区的资料至sta共读num个磁区   
      q    离开debug,返回DOS   
      u  [sta]  [end]    反汇编,从sta至end   
      u  [sta]  [lnn]    反汇编,从sta,共反汇编nn个bytes   
      m  sta  end  sta2  将第一储存单元的数据搬至第二储存单元中   
      m  sta  lnn  sta2    将第一储存单元的数据搬至第二储存单元中   
      f  sta  end  data    将一段资料(data)存入某指定的储存单元区   
      f  sta  lnn  data    将nn个bytes的资料存入某指定的储存单元区   
      s  sta  end  data    搜寻data资料在指定地址內,data不限长度   
      s  sta  lnn  data  搜寻data资料在指定地址內,data不限长度   
      h  data  data2    计算两个资料的和与差并显示在屏幕上   
      i  inport  由输入埠输入并显示一个byte   
      o  outport  由输出埠输出一个byte值   
顶端 Posted: 2007-12-09 22:27 | [楼 主]
依然随意



性别: 帅哥 状态: 该用户目前不在线
等级: 前途无量
家族: ⊙JAY菊爱园⊙
发贴: 5922
威望: 0
浮云: 760
在线等级:
注册时间: 2006-09-25
最后登陆: 2022-10-30

5come5帮你背单词 [ education /edju:'keiən/ n. 教育,培养,训练 ]


可以可以,收下了。
顶端 Posted: 2007-12-10 12:07 | [1 楼]
hygel



性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 134
威望: 0
浮云: 1105
在线等级:
注册时间: 2006-06-17
最后登陆: 2009-09-09

5come5帮你背单词 [ pronounce /prə'nauns/ vt. 发…的音,宣布,宣称,断言;vi. 表态 ]


其实这个工具没有用。还是去学习下windbg,od,IDA比较有用。。。
顶端 Posted: 2007-12-13 23:26 | [2 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.018206(s) query 7, Time now is:12-12 07:41, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号