📄 debug usage_collection.htm
字号:
<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 RANGE 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 L100 42 45 52 54 41
<br> DEGUG将五个指定值勤(42到41)填入从04BA:1FF的内存单元。DEGUG重复使用指定的五个值,直到所有100H个单元填完为止。
<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"> <a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a> </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>
</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 P命令。有关逐条执行指令的说明,参阅DEGUG 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 Error
<br> 对用户堆载指针的要求
<br> 用户规模指针必须有效,且应有6个字节供G命令使用。G命令使用IRET指令跳至正在调试的程序。DEGUG置用户堆栈无效或太小,操作系统可能终止。DEGUG还在旨定断点处放置一中断码(0CCh)。
<br>
<br> 重新启动程序
<br> 程序运行正常结束,MS-DOS显示如下信息:
<br> rpogram terminated 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命令,程序将从断点后面的第一条指令开始继续运行,而不是像通常那样从起始地址开始运行。
<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"> <a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a> </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>
</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 valuel 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 10a
<br> DEGUG执行运算并显示如下结果:
<br> 02A9 0095
<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"> <a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a> </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>
</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: 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: I(读输入口)
<br>
<br>一、概述
<br>
<br> 从指一输入口读入并显示一字节的值。
<br>
<br> 格式
<br> I port
<br>
<br> 参数
<br> port
<br> 指定输入口地址。该址址可以是一个16-bit的值。
<br>
<br> 相关命令
<br> 有关把数据发送至输出口的说明,参阅DEGUG O命令。
<br>
<br>二、应用举例
<br>
<br> 假设输入口2F8的字节值为42H,那么输入如下命令:
<br> i2f8
<br> DEGUG将读入该字节并显示如下:
<br> 42
<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"> <a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a> </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: I(读输入口) ');">回复此发言</a>
</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: 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: L(装入)
<br>
<br>一、概述
<br>
<br> 把指定文件或磁盘扇区的内容装入内存。
<br>
<br> 格式
<br> L[address]
<br> L address drive start 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 N命令。
<br> 有关把调试文件写入磁盘的说明,参阅DEGUG 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 2 of 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"> <a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a> </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: L(装入) ');">回复此发言</a>
</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: 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: M(移动)
<br>
<br>一、概述
<br> 把一块内存的内容复制到一另块。
<br> 格式
<br>M range address
<br> 参数
<br> range
<br> 指定被拷贝的起始地址和结束地址,或其起始地址和块长。
<br> address
<br>
<br>二、注意事项
<br> 叠交复制移动
<br> 所谓叠交复制移动是指执行M命令时,被复制块(源块)的一部分和新复制块(终块)的一部分相互重叠。M命令智能地处理这类复制,不会搞乱新复制块的数据。M先复制要被覆盖的内容,即如果数据从高地址移至低地址,从低地址开始复制,如果数据从低地址至高地址,则从高地址开始复制,这样,保证了新复制块的数据在叠交复制时候保持完整,不遭破坏。
<br>
<br>三、应用举例
<br> 假设输入如下命令:
<br> msc:100 110 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"> <a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a> </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: M(移动) ');">回复此发言</a>
</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 file-parameters
<br> 清除由前面的N命令指定的文件名和参数,使用如下格式:
<br> N
<br> 参数
<br> [drive:][path]filename
<br> 指定要调试文件的所在位置和文件名。
<br> file-parameters
<br> 指定调试文件运行时所需要的参数。
<br> 相关命令
<br> 有关读入文件或磁盘扇区内容的说明,参阅DEBUG L命令。
<br> 有关把调试文件写盘的说明,参阅DEBUG W命令。
<br>
<br>二、注意事项
<br> N命令的两种用法
<br> N命令的第一种用法是指定后面L和W命令所要处理的文件。如果启动DEBUG时未带文件名,在以后使用L命令装入文件前,必须先用N指定文件。文件名将按所要求的格式存入位于CS:5C的文件控制块。N的第二种用法是为调试文件指定所需要的参数。
<br> 内存区分配
<br> 如下四处内存区受命令N的影响:
<br> 内存单元 内容
<br> ------------------------------------
<br> CS:5C File 1的文件控制块(FCB)
<br> CS:6C File 2的文件控制块(FCB)
<br> CS:80 N命令长度(字符数)
<br> CS:81 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 prog.com
<br> nparaml param2
<br> g
<br> G命令运行该程序的情形和在MS-DOS提示符下输入如下命令一样:
<br> prog paraml param2
<br> 下面的命令串中,第一条N命令指定FILE1.EXE为随后L命令要装入的文件。第二条N命令指这FILE1.EXE使用的参数。最后的G命令运行FILE1.EXE,如同在MS-DOS提示符下输入命令FILE1 FILE2.DAT FILE2.DAT一样。
<br> nfilel.exe
<br> 1
<br> nfile2.dat 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"> <a href="http://hi.baidu.com/sunenze" target="_blank"><img src="http://img.baidu.com/passport/space_open.gif" border="0" align="absmiddle"></a> </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>
</div></td></tr>
<tr><td></td><td><hr align=
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -