⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug usage_collection.htm

📁 Debug命令大全, DOS下ASM程序调试很有用
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<a name="4553069066"></a>

<font color=#0000cc>DEGUG:F(填充) </font>

</td></tr>
<tr><td></td>
<td align=left width="97%" >
<table class="wr" border="0" cellspacing="0" cellpadding="0"><tr><td class="gray14"> 

<cc>DEGUG:F(填充)
<br>
<br>一、概述
<br>
<br>  用指定值填充指定区域的内存。
<br>  指定值可为16进制数据或ASCII字符。填充后,指定内存原内容丢失。
<br>
<br>  格式
<br>  F&nbsp;RANGE&nbsp;LIST
<br>
<br>  参数
<br>  range
<br>  指定待填充内存的起始和结束地址,或其起始地址和长度。有关本参数有效值的说明,参阅DEGUG命令。
<br>  指定填充数据。指定值可为16进制数据或引号内的ACSII字符。
<br>
<br>二、注意事项
<br>
<br>  使用range参数
<br>  如果range中包含的字节数多于list中的数值个数,DEGUG将重复使用list中的数值,直到range中的所有字节填满为止。
<br>  如果range内的内存单元坏或不存在,DEGUG将显示出错信息并停止F命令。
<br>
<br>  使用list参数
<br>  如果list中的数值个数多于range包含的字节数,DEGUG将忽略list中多余的值。
<br>
<br>三、应用举例
<br>
<br>  如输入如下命令:
<br>  f01ba:100&nbsp;L100&nbsp;42&nbsp;45&nbsp;52&nbsp;54&nbsp;41
<br>  DEGUG将五个指定值勤(42到41)填入从04BA:1FF的内存单元。DEGUG重复使用指定的五个值,直到所有100H个单元填完为止。&nbsp;
<br>
<br><a href="http://mw.cnit128.com" target="_blank">http://mw.cnit128.com</a></cc>
</td></tr></table>
</td></tr>
<tr><td height="17"></td><td class="p14"></td></tr>
<tr><td height="17"></td>
<td align=left class="au"><div class="uau">作者: <a href="http://passport.baidu.com/?detail&aid=6&default_tab=1&un=%D3%F1%BD%E0" target=_blank> 玉洁</a></div><div class="shi">&nbsp;<a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a>&nbsp;</div><script>document.write("<div class=auw id=p_hi_"+(hiID++)+" value='玉洁'></div>");</script><div class="uau">



<font class="gray12"> 2008-7-29 19:22 </font> 
 <a href="#sub" class=t onclick="ResetReplyTitle('6','DEGUG:F(填充) ');">回复此发言</a> &nbsp; 
</div></td></tr>

<tr><td></td><td><hr align=left width="87%" size=1 >
</td>
</tr></table><a name="#7"></a>
<table width="72%" border="0" bgcolor="#FFFFFF">
<tr>
<td  height="17" align="center" width="3%" class="gray">7</td>
<td class="p14" align=left >
<a name="4553073760"></a>

<font color=#0000cc>DEGUG:G(执行) </font>

</td></tr>
<tr><td></td>
<td align=left width="97%" >
<table class="wr" border="0" cellspacing="0" cellpadding="0"><tr><td class="gray14"> 

<cc>DEGUG:G(执行)
<br>
<br>一、概述
<br>
<br>  运行内存中的程序
<br>
<br>  格式
<br>  G[=address][breakpoints]
<br>  参数
<br>  =address
<br>  指定运行程序的起始地址。如不指定该地址,DEGUG将从由CS:IP指定的当前地址处开始运行程序。
<br>
<br>  breakpoints
<br>  指定临时断点地址。断点数为1到10个。
<br>
<br>  相关命令
<br>  有关执行循环,字符吕重复指令,软中断及子程序的说明,参阅DEGUG&nbsp;P命令。有关逐条执行指令的说明,参阅DEGUG&nbsp;T命令。
<br>
<br>
<br>二、注意事项
<br>
<br>  =address参数的使用
<br>  注意本参数前面的等号(=),其作用是指导程序运行的起始地址和程序运行期间的断点地址(breakpoints)区分开来。
<br>
<br>  指定断点
<br>  程序在到达第一个断点停下,不管该断点在断点中表示什么地方。因为断点设定后,DEGUG即把每一个断点处的原指令换为中断码(0CCh)。
<br>  程序到达断点时,DEGUG将所有断点处的中断码恢复为原来的指令,显示各寄存器的当前内容和标志状态,当前地址及其存放的指令。DEGUG的这些显示信息如同执行R(寄存器)命令并指定断点时显示的信息一样。
<br>  如果程序执行时没有遇到断点,一直执行下去,DEGUG不会把断点处的中断码恢复为原来的指令。
<br>
<br>  断点设置的限制
<br>  断点必须害在存放着8086操作码(opcode)和一个字节的地址上,不能插在中间。如果设置的断点超过10个,DEGUG显示如下信息:
<br>
<br>  bp&nbsp;Error
<br>  对用户堆载指针的要求
<br>  用户规模指针必须有效,且应有6个字节供G命令使用。G命令使用IRET指令跳至正在调试的程序。DEGUG置用户堆栈无效或太小,操作系统可能终止。DEGUG还在旨定断点处放置一中断码(0CCh)。
<br>
<br>  重新启动程序
<br>  程序运行正常结束,MS-DOS显示如下信息:
<br>  rpogram&nbsp;terminated&nbsp;normally
<br>  此时,不要马上启动程序运行。必须使用DEGUG的N和L命令重新装入该程序后,才能保证程序正常运行。
<br>
<br>三、应用举例
<br>
<br>  输入如下命令:
<br>  gcs:7550
<br>  MS-DOS运行现正在内存中的程序,到断点--CS段的7550地址处停下。DEGUG显示当前各寄存器的内容和标志状态,并暂停G命令的执行。
<br>  如下命令设置两个断点:
<br>  gcs:7550,cs:8000
<br>  如果用户在DEGUG遇到一个断点暂停后在输入G命令,程序将从断点后面的第一条指令开始继续运行,而不是像通常那样从起始地址开始运行。&nbsp;
<br>
<br><a href="http://www.sunenze.com" target="_blank">http://www.sunenze.com</a></cc>
</td></tr></table>
</td></tr>
<tr><td height="17"></td><td class="p14"></td></tr>
<tr><td height="17"></td>
<td align=left class="au"><div class="uau">作者: <a href="http://passport.baidu.com/?detail&aid=6&default_tab=1&un=%D3%F1%BD%E0" target=_blank> 玉洁</a></div><div class="shi">&nbsp;<a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a>&nbsp;</div><script>document.write("<div class=auw id=p_hi_"+(hiID++)+" value='玉洁'></div>");</script><div class="uau">



<font class="gray12"> 2008-7-29 19:22 </font> 
 <a href="#sub" class=t onclick="ResetReplyTitle('7','DEGUG:G(执行) ');">回复此发言</a> &nbsp; 
</div></td></tr>

<tr><td></td><td><hr align=left width="87%" size=1 >
</td>
</tr></table><a name="#8"></a>
<table width="72%" border="0" bgcolor="#FFFFFF">
<tr>
<td  height="17" align="center" width="3%" class="gray">8</td>
<td class="p14" align=left >
<a name="4553078749"></a>

<font color=#0000cc>DEGUG:H(16进制算术运算) </font>

</td></tr>
<tr><td></td>
<td align=left width="97%" >
<table class="wr" border="0" cellspacing="0" cellpadding="0"><tr><td class="gray14"> 

<cc>DEGUG:H(16进制算术运算)
<br>
<br>一、概述
<br>
<br>  对指定的两个数进行16进制算术运算。
<br>
<br>  格式
<br>  H&nbsp;valuel&nbsp;value2
<br>
<br>  参数
<br>  valuel
<br>  参数运算的第一个数,为从0到FFFFh的任意16进制数。
<br>  value2
<br>  参数运算的第二个数,为从0到FFFFh的任意16进制数。
<br>
<br>二、注意事项
<br>
<br>  DEGUG先对两个数作加法运算,然后作减法运算,从第一个数减去第二个数。运算结果显示在同行上--首先是和,然后是差。
<br>
<br>三、应用举例
<br>
<br>  假设输入如下命令:
<br>  h19f&nbsp;10a
<br>  DEGUG执行运算并显示如下结果:
<br>  02A9&nbsp;0095&nbsp;
<br>
<br><a href="http://www.cnit128.com" target="_blank">http://www.cnit128.com</a></cc>
</td></tr></table>
</td></tr>
<tr><td height="17"></td><td class="p14"></td></tr>
<tr><td height="17"></td>
<td align=left class="au"><div class="uau">作者: <a href="http://passport.baidu.com/?detail&aid=6&default_tab=1&un=%D3%F1%BD%E0" target=_blank> 玉洁</a></div><div class="shi">&nbsp;<a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a>&nbsp;</div><script>document.write("<div class=auw id=p_hi_"+(hiID++)+" value='玉洁'></div>");</script><div class="uau">



<font class="gray12"> 2008-7-29 19:23 </font> 
 <a href="#sub" class=t onclick="ResetReplyTitle('8','DEGUG:H(16进制算术运算) ');">回复此发言</a> &nbsp; 
</div></td></tr>

<tr><td></td><td><hr align=left width="87%" size=1 >
</td>
</tr></table><a name="#9"></a>
<table width="72%" border="0" bgcolor="#FFFFFF">
<tr>
<td  height="17" align="center" width="3%" class="gray">9</td>
<td class="p14" align=left >
<a name="4553083550"></a>

<font color=#0000cc>DEGUG:&nbsp;I(读输入口) </font>

</td></tr>
<tr><td></td>
<td align=left width="97%" >
<table class="wr" border="0" cellspacing="0" cellpadding="0"><tr><td class="gray14"> 

<cc>DEGUG:&nbsp;I(读输入口)
<br>
<br>一、概述
<br>
<br>  从指一输入口读入并显示一字节的值。
<br>
<br>  格式
<br>  I&nbsp;port
<br>
<br>  参数
<br>  port
<br>  指定输入口地址。该址址可以是一个16-bit的值。
<br>
<br>  相关命令
<br>  有关把数据发送至输出口的说明,参阅DEGUG&nbsp;O命令。
<br>
<br>二、应用举例
<br>
<br>  假设输入口2F8的字节值为42H,那么输入如下命令:
<br>  i2f8
<br>  DEGUG将读入该字节并显示如下:
<br>  42
<br>&nbsp;
<br><a href="http://www.cnit128.com" target="_blank">http://www.cnit128.com</a></cc>
</td></tr></table>
</td></tr>
<tr><td height="17"></td><td class="p14"></td></tr>
<tr><td height="17"></td>
<td align=left class="au"><div class="uau">作者: <a href="http://passport.baidu.com/?detail&aid=6&default_tab=1&un=%D3%F1%BD%E0" target=_blank> 玉洁</a></div><div class="shi">&nbsp;<a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a>&nbsp;</div><script>document.write("<div class=auw id=p_hi_"+(hiID++)+" value='玉洁'></div>");</script><div class="uau">



<font class="gray12"> 2008-7-29 19:23 </font> 
 <a href="#sub" class=t onclick="ResetReplyTitle('9','DEGUG:&nbsp;I(读输入口) ');">回复此发言</a> &nbsp; 
</div></td></tr>

<tr><td></td><td><hr align=left width="87%" size=1 >
</td>
</tr></table><a name="#10"></a>
<table width="72%" border="0" bgcolor="#FFFFFF">
<tr>
<td  height="17" align="center" width="3%" class="gray">10</td>
<td class="p14" align=left >
<a name="4553086585"></a>

<font color=#0000cc>DEGUG:&nbsp;L(装入) </font>

</td></tr>
<tr><td></td>
<td align=left width="97%" >
<table class="wr" border="0" cellspacing="0" cellpadding="0"><tr><td class="gray14"> 

<cc>DEGUG:&nbsp;L(装入)
<br>
<br>一、概述
<br>
<br>  把指定文件或磁盘扇区的内容装入内存。
<br>
<br>  格式
<br>  L[address]
<br>  L&nbsp;address&nbsp;drive&nbsp;start&nbsp;number
<br>  第一个格式把磁盘文件(由N命令指定)读入内存,读入字节数存BX:CX。
<br>  第二个格式绕过MS-DOS文件系统,直接从指定的磁盘扇区读入数据。
<br>  参数
<br>  address
<br>  指定存放读入数据的内存位置。如果不指定,DEGUG将从CS:IP处开始存放读入数据。(.exe和.hex文件的装入地址参阅注意事项)
<br>  drive
<br>  指定要读入某扇区内容的盘符。本参数值为数字。每个值与一盘符对应,如0=A,1=B,2=C等等。
<br>  start
<br>  指定要读入其内容的每一个扇区号(十六进制数)。
<br>  number
<br>  指定要读入其内容的连续扇数(十六进制数)。
<br>  相关命令
<br>  有关在使用L命令读入前先指定文件的说明,参阅DEGUG&nbsp;N命令。
<br>  有关把调试文件写入磁盘的说明,参阅DEGUG&nbsp;W命令。
<br>
<br>  
<br>二、注意事项
<br>
<br>  不带参数L命令的使用
<br>  如果在输入DEGUG的命令行中指定了文件,那么不带参数使用L命令将把该指定文件的内容从磁盘读入内存。如果命令行中没有指定文件,那么读入的文件是最近运行命令N指定的文件。读入的内容从地址CS:100开始存放。读入的字节数存入寄存器BX和CS。
<br>
<br>  带address参数L命令的使用
<br>  如果带address参数,L命令将读入的文件或磁盘扇区的内容存入从address开始的内存单元。
<br>  注意L命令的两种格式,不带参数的L命令用于读入文件,带全部参数的L命令用于读入磁盘扇区。
<br>
<br>  读入指定扇区内容。
<br>  DEGUG从由参数start指定的扇区开始读入磁盘内容。一直到读完由number指定的扇区数为止。
<br>
<br>  装入EXE文件
<br>  参数address对读入.EXE文件无效。DEGUG在装入.EXE文件时,将按.EXE文件阔大中指定的地址存放该文件。.EXE文件头在文件装入内存之前就与文件本身分开,所以.EXE文件在盘上的长度和在内存中的长度不同。如果需要检查检验一个完整的.EXE文件,必须更换其扩展名。
<br>
<br>  打开十六进制(HEX)文件
<br>  所谓十六进制(HEX)文件是使用intel十六进制格式的文件,DEGUG把凡以.HEX为扩展名的文件都看作十六进制文件。不带参数的L命令装.HEX文件的地址是由HEX文件中指定的地址。如果L合命令使用address参数指定装入地址,DEGUG将这两个地址相加,得到确定的装入地址。
<br>
<br>三、应用举例
<br>
<br>  假设用户输入如下命令
<br>  nfile.com
<br>  该命令命名了个名为file.com的文件。用户随后使用L命令把该文件的内容装入内存。装毕,显示DEGUG的提示符。
<br>
<br>  假设需读入C盘从逻辑扇区15(0Fh)开始的109(6Dh)个扇区的内容,存放在从04BA:0100开始的内存单元内,输入如下命令:
<br>  L04ba:100&nbsp;2&nbsp;of&nbsp;6d</cc>
</td></tr></table>
</td></tr>
<tr><td height="17"></td><td class="p14"></td></tr>
<tr><td height="17"></td>
<td align=left class="au"><div class="uau">作者: <a href="http://passport.baidu.com/?detail&aid=6&default_tab=1&un=%D3%F1%BD%E0" target=_blank> 玉洁</a></div><div class="shi">&nbsp;<a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a>&nbsp;</div><script>document.write("<div class=auw id=p_hi_"+(hiID++)+" value='玉洁'></div>");</script><div class="uau">



<font class="gray12"> 2008-7-29 19:23 </font> 
 <a href="#sub" class=t onclick="ResetReplyTitle('10','DEGUG:&nbsp;L(装入) ');">回复此发言</a> &nbsp; 
</div></td></tr>

<tr><td></td><td><hr align=left width="87%" size=1 >
</td>
</tr></table><a name="#11"></a>
<table width="72%" border="0" bgcolor="#FFFFFF">
<tr>
<td  height="17" align="center" width="3%" class="gray">11</td>
<td class="p14" align=left >
<a name="4553090716"></a>

<font color=#0000cc>DEBUG:&nbsp;M(移动) </font>

</td></tr>
<tr><td></td>
<td align=left width="97%" >
<table class="wr" border="0" cellspacing="0" cellpadding="0"><tr><td class="gray14"> 

<cc>DEBUG:&nbsp;M(移动)
<br>
<br>一、概述
<br>  把一块内存的内容复制到一另块。
<br>  格式
<br>M&nbsp;range&nbsp;address
<br>  参数
<br>  range
<br>  指定被拷贝的起始地址和结束地址,或其起始地址和块长。
<br>  address
<br>
<br>二、注意事项
<br>  叠交复制移动
<br>  所谓叠交复制移动是指执行M命令时,被复制块(源块)的一部分和新复制块(终块)的一部分相互重叠。M命令智能地处理这类复制,不会搞乱新复制块的数据。M先复制要被覆盖的内容,即如果数据从高地址移至低地址,从低地址开始复制,如果数据从低地址至高地址,则从高地址开始复制,这样,保证了新复制块的数据在叠交复制时候保持完整,不遭破坏。
<br>
<br>三、应用举例
<br>  假设输入如下命令:
<br>  msc:100&nbsp;110&nbsp;cs:500
<br>  DEBUG先把地址CS:100的内容复制到CS:510,然后是CS:10F的内容复制到CS:50F。依次进行。一直把CS:100的内容复制到CS:500为止。如需检查移动结果,可使用D命令显示从CS:500开始的内容。</cc>
</td></tr></table>
</td></tr>
<tr><td height="17"></td><td class="p14"></td></tr>
<tr><td height="17"></td>
<td align=left class="au"><div class="uau">作者: <a href="http://passport.baidu.com/?detail&aid=6&default_tab=1&un=%D3%F1%BD%E0" target=_blank> 玉洁</a></div><div class="shi">&nbsp;<a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a>&nbsp;</div><script>document.write("<div class=auw id=p_hi_"+(hiID++)+" value='玉洁'></div>");</script><div class="uau">



<font class="gray12"> 2008-7-29 19:24 </font> 
 <a href="#sub" class=t onclick="ResetReplyTitle('11','DEBUG:&nbsp;M(移动) ');">回复此发言</a> &nbsp; 
</div></td></tr>

<tr><td></td><td><hr align=left width="87%" size=1 >
</td>
</tr></table><a name="#12"></a>
<table width="72%" border="0" bgcolor="#FFFFFF">
<tr>
<td  height="17" align="center" width="3%" class="gray">12</td>
<td class="p14" align=left >
<a name="4553094877"></a>

<font color=#0000cc>DEBUG:N(命令) </font>

</td></tr>
<tr><td></td>
<td align=left width="97%" >
<table class="wr" border="0" cellspacing="0" cellpadding="0"><tr><td class="gray14"> 

<cc>DEBUG: N(命令)
<br>
<br>一、概述
<br>  为L和W命令执行准备好文件名;为正调试的可执行文件指定所需参数。
<br>  格式
<br>  N[drive:][path]filename
<br>  为正在调试的可执行文件指定所需参数,使用如下格式:
<br>  N&nbsp;file-parameters
<br>  清除由前面的N命令指定的文件名和参数,使用如下格式:
<br>  N
<br>  参数
<br>  [drive:][path]filename
<br>  指定要调试文件的所在位置和文件名。
<br>  file-parameters
<br>  指定调试文件运行时所需要的参数。
<br>  相关命令
<br>  有关读入文件或磁盘扇区内容的说明,参阅DEBUG&nbsp;L命令。
<br>  有关把调试文件写盘的说明,参阅DEBUG&nbsp;W命令。
<br>
<br>二、注意事项
<br>  N命令的两种用法
<br>  N命令的第一种用法是指定后面L和W命令所要处理的文件。如果启动DEBUG时未带文件名,在以后使用L命令装入文件前,必须先用N指定文件。文件名将按所要求的格式存入位于CS:5C的文件控制块。N的第二种用法是为调试文件指定所需要的参数。
<br>  内存区分配
<br>  如下四处内存区受命令N的影响:
<br>  内存单元     内容
<br>  ------------------------------------
<br>  CS:5C      File&nbsp;1的文件控制块(FCB)
<br>  CS:6C      File&nbsp;2的文件控制块(FCB)
<br>  CS:80     &nbsp;N命令长度(字符数)
<br>  CS:81&nbsp;N命令起始字符
<br>  N命令指定的第一个文件名放在位于CS:5C的文件控制块(FCB)中,如果指了第一个文件,第二个文件名放在位于CS:6C的FCB中。N命令行的字符(不包括N本身)个数放CS:80,字符本身则从CS:81开始排放。这些字符可以是参数和定界符等所有在MS-DOS命令行上合法使用的字符。
<br>
<br>三、应用举例
<br>  假设启动DEBUG调试程序PROG.COM,然后为PROG.COM指定两个参数,接着运行该程序,为此,可顺序输入如下命令:
<br>  debug&nbsp;prog.com
<br>  nparaml&nbsp;param2
<br>  g
<br>  G命令运行该程序的情形和在MS-DOS提示符下输入如下命令一样:
<br>  prog&nbsp;paraml&nbsp;param2
<br>  下面的命令串中,第一条N命令指定FILE1.EXE为随后L命令要装入的文件。第二条N命令指这FILE1.EXE使用的参数。最后的G命令运行FILE1.EXE,如同在MS-DOS提示符下输入命令FILE1&nbsp;FILE2.DAT&nbsp;FILE2.DAT一样。
<br>  nfilel.exe
<br>  1
<br>  nfile2.dat&nbsp;file3.dat
<br>  g
<br>  注意,在第二条N命令后,一不能使用L命令;二如使用W命令,MS-DOS将把FILE1.EXE文件存入FILE2.DAT,为避免这种情况,建议在每次即将使用命令L(装入)或W(保存)文件前,先使用N命令指定文件。</cc>
</td></tr></table>
</td></tr>
<tr><td height="17"></td><td class="p14"></td></tr>
<tr><td height="17"></td>
<td align=left class="au"><div class="uau">作者: <a href="http://passport.baidu.com/?detail&aid=6&default_tab=1&un=%D3%F1%BD%E0" target=_blank> 玉洁</a></div><div class="shi">&nbsp;<a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a>&nbsp;</div><script>document.write("<div class=auw id=p_hi_"+(hiID++)+" value='玉洁'></div>");</script><div class="uau">



<font class="gray12"> 2008-7-29 19:24 </font> 
 <a href="#sub" class=t onclick="ResetReplyTitle('12','DEBUG:N(命令) ');">回复此发言</a> &nbsp; 
</div></td></tr>

<tr><td></td><td><hr align=

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -