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

📄 debug命令详解.htm

📁 DEBUG 命令使用详解
💻 HTM
📖 第 1 页 / 共 4 页
字号:
    <TD align=left width="90%" bgColor=#ebebeb colSpan=2 height=8>
      <P align=center><FONT size=3><B> <FONT color=#0000ff>☆DEBUG命令详解☆</FONT> 
      </B></FONT></P></TD>
  <TR>
    <TD align=left width="90%" colSpan=2 
      height=16>Debug:A(汇编)&nbsp;<BR><BR><BR>直接将&nbsp;8086/8087/8088&nbsp;记忆码合并到内存。&nbsp;<BR><BR>该命令从汇编语言语句创建可执行的机器码。所有数值都是十六进制格式,必须按一到四个字符输入这些数值。在引用的操作代码(操作码)前指定前缀记忆码。&nbsp;<BR><BR><BR>a&nbsp;[address]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>address&nbsp;<BR><BR>指定键入汇编语言指令的位置。对&nbsp;address&nbsp;使用十六进制值,并键入不以“h”字符结尾的每个值。如果不指定地址,a&nbsp;将在它上次停止处开始汇编。&nbsp;<BR><BR>有关将数据输入到指定字节中的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;E(键入)。&nbsp;<BR><BR>有关反汇编字节的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;U(反汇编)。&nbsp;<BR><BR><BR>说明&nbsp;<BR><BR>使用记忆码&nbsp;<BR><BR>段的替代记忆码为&nbsp;cs:、ds:、es:&nbsp;和&nbsp;ss:。远程返回的记忆码是&nbsp;retf。字符串处理的记忆码必须明确声明字符串大小。例如,使用&nbsp;movsw&nbsp;可以移动&nbsp;16&nbsp;位的字串,使用&nbsp;movsb&nbsp;可以移动&nbsp;8&nbsp;位字节串。&nbsp;<BR><BR><BR>汇编跳转和调用&nbsp;<BR><BR>汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。通过使用&nbsp;near&nbsp;或&nbsp;far&nbsp;前缀可以替代这样的跳转或调用,如下例所示:&nbsp;<BR><BR>-a0100:0500&nbsp;<BR>0100:0500&nbsp;jmp&nbsp;502&nbsp;;&nbsp;a&nbsp;2-byte&nbsp;short&nbsp;jump&nbsp;<BR>0100:0502&nbsp;jmp&nbsp;near&nbsp;505&nbsp;;&nbsp;a&nbsp;3-byte&nbsp;near&nbsp;jump&nbsp;<BR>0100:0505&nbsp;jmp&nbsp;far&nbsp;50a&nbsp;;&nbsp;a&nbsp;5-byte&nbsp;far&nbsp;jump&nbsp;<BR><BR>可以将&nbsp;near&nbsp;前缀缩写为&nbsp;ne。&nbsp;<BR><BR><BR>区分字和字节内存位置&nbsp;<BR><BR>当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀&nbsp;word&nbsp;ptr&nbsp;或者前缀&nbsp;byte&nbsp;ptr&nbsp;指定数据类型。可接受的缩写分别是&nbsp;wo&nbsp;和&nbsp;by。以下范例显示两种格式:&nbsp;<BR><BR>dec&nbsp;wo&nbsp;[si]&nbsp;<BR>neg&nbsp;byte&nbsp;ptr&nbsp;[128]&nbsp;<BR><BR><BR>指定操作数&nbsp;<BR><BR>Debug&nbsp;使用包括在中括号&nbsp;([&nbsp;])&nbsp;的操作数引用内存地址的习惯用法。这是因为另一方面&nbsp;Debug&nbsp;不能区分立即操作数和内存地址的操作数。以下范例显示两种格式:&nbsp;<BR><BR>mov&nbsp;ax,21&nbsp;;&nbsp;load&nbsp;AX&nbsp;with&nbsp;21h&nbsp;<BR>mov&nbsp;ax,[21]&nbsp;;&nbsp;load&nbsp;AX&nbsp;with&nbsp;the&nbsp;<BR>;&nbsp;contents&nbsp;of&nbsp;<BR>;&nbsp;memory&nbsp;location&nbsp;21h&nbsp;<BR><BR><BR>使用伪指令&nbsp;<BR><BR>使用&nbsp;a&nbsp;命令提供两个常用的伪指令:db&nbsp;操作码,将字节值直接汇编到内存,dw&nbsp;操作码,将字值直接汇编到内存。以下是两个伪指令的范例:&nbsp;<BR><BR>db&nbsp;1,2,3,4,"THIS&nbsp;IS&nbsp;AN&nbsp;EXAMPLE"&nbsp;<BR>db&nbsp;'THIS&nbsp;IS&nbsp;A&nbsp;QUOTATION&nbsp;MARK:"'&nbsp;<BR>db&nbsp;"THIS&nbsp;IS&nbsp;A&nbsp;QUOTATION&nbsp;MARK:'"&nbsp;<BR>dw&nbsp;1000,2000,3000,"BACH"&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>a&nbsp;命令支持所有形式的间接注册命令,如下例所示:&nbsp;<BR><BR>add&nbsp;bx,34[bp+2].[si-1]&nbsp;<BR>pop&nbsp;[bp+di]&nbsp;<BR>push&nbsp;[si]&nbsp;)&nbsp;<BR><BR>还支持所有操作码同义词,如下例所示:&nbsp;<BR><BR>loopz&nbsp;100&nbsp;<BR>loope&nbsp;100&nbsp;<BR>ja&nbsp;200&nbsp;<BR>jnbe&nbsp;200&nbsp;<BR><BR>对于&nbsp;8087&nbsp;操作码,必须指定&nbsp;wait&nbsp;或&nbsp;fwait&nbsp;前缀,如下例所示:&nbsp;<BR><BR>fwait&nbsp;fadd&nbsp;st,st(3)&nbsp;;&nbsp;this&nbsp;line&nbsp;assembles&nbsp;<BR>;&nbsp;an&nbsp;fwait&nbsp;prefix&nbsp;<BR><BR><BR>Debug:C(比较)&nbsp;<BR><BR><BR>比较内存的两个部分。&nbsp;<BR><BR><BR>c&nbsp;range&nbsp;address&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>range&nbsp;<BR><BR>指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。有关有效的&nbsp;range&nbsp;值的信息,请单击“相关主题”列表中的“Debug&nbsp;说明”。&nbsp;<BR><BR>address&nbsp;<BR><BR>指定要比较的第二个内存区域的起始地址。有关有效&nbsp;address&nbsp;值的信息,请单击“相关主题”列表中的“Debug&nbsp;说明”。&nbsp;<BR><BR><BR>说明&nbsp;<BR><BR>如果&nbsp;range&nbsp;和&nbsp;address&nbsp;内存区域相同,Debug&nbsp;将不显示任何内容而直接返回到&nbsp;Debug&nbsp;提示符。如果有差异,Debug&nbsp;将按如下格式显示:&nbsp;<BR>address1&nbsp;byte1&nbsp;byte2&nbsp;addess2&nbsp;<BR><BR>范例&nbsp;<BR><BR>以下命令具有相同效果:&nbsp;<BR><BR>c100,10f&nbsp;300&nbsp;<BR>c100l10&nbsp;300&nbsp;<BR><BR>每个命令都对&nbsp;100h&nbsp;到&nbsp;10Fh&nbsp;的内存数据块与&nbsp;300h&nbsp;到&nbsp;30Fh&nbsp;的内存数据块进行比较。&nbsp;<BR><BR>Debug&nbsp;响应前面的命令并显示如下信息(假定&nbsp;DS&nbsp;=&nbsp;197F):&nbsp;<BR><BR>197F:0100&nbsp;4D&nbsp;E4&nbsp;197F:0300&nbsp;<BR>197F:0101&nbsp;67&nbsp;99&nbsp;197F:0301&nbsp;<BR>197F:0102&nbsp;A3&nbsp;27&nbsp;197F:0302&nbsp;<BR>197F:0103&nbsp;35&nbsp;F3&nbsp;197F:0303&nbsp;<BR>197F:0104&nbsp;97&nbsp;BD&nbsp;197F:0304&nbsp;<BR>197F:0105&nbsp;04&nbsp;35&nbsp;197F:0305&nbsp;<BR>197F:0107&nbsp;76&nbsp;71&nbsp;197F:0307&nbsp;<BR>197F:0108&nbsp;E6&nbsp;11&nbsp;197F:0308&nbsp;<BR>197F:0109&nbsp;19&nbsp;2C&nbsp;197F:0309&nbsp;<BR>197F:010A&nbsp;80&nbsp;0A&nbsp;197F:030A&nbsp;<BR>197F:010B&nbsp;36&nbsp;7F&nbsp;197F:030B&nbsp;<BR>197F:010C&nbsp;BE&nbsp;22&nbsp;197F:030C&nbsp;<BR>197F:010D&nbsp;83&nbsp;93&nbsp;197F:030D&nbsp;<BR>197F:010E&nbsp;49&nbsp;77&nbsp;197F:030E&nbsp;<BR>197F:010F&nbsp;4F&nbsp;8A&nbsp;197F:030F&nbsp;<BR><BR>注意列表中缺少地址&nbsp;197F:0106&nbsp;和&nbsp;197F:0306。这表明那些地址中的值是相同的。&nbsp;<BR><BR><BR>Debug:D(转储)&nbsp;<BR><BR><BR>显示一定范围内存地址的内容。&nbsp;<BR><BR><BR>d&nbsp;[range]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>range&nbsp;<BR><BR>指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。有关有效的&nbsp;range&nbsp;值的信息,请单击“相关主题”列表中的“Debug&nbsp;说明”。如果不指定&nbsp;range,Debug&nbsp;程序将从以前&nbsp;d&nbsp;命令中所指定的地址范围的末尾开始显示&nbsp;128&nbsp;个字节的内容。&nbsp;<BR><BR>有关显示寄存器内容的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;R(寄存器)。&nbsp;<BR><BR><BR>说明&nbsp;<BR>当使用&nbsp;d&nbsp;命令时,Debug&nbsp;以两个部分显示内存内容:十六进制部分(每个字节的值都用十六进制格式表示)和&nbsp;ASCII&nbsp;码部分(每个字节的值都用&nbsp;ASCII&nbsp;码字符表示)。每个非打印字符在显示的&nbsp;ASCII&nbsp;部分由句号&nbsp;(.)&nbsp;表示。每个显示行显示&nbsp;16&nbsp;字节的内容,第&nbsp;8&nbsp;字节和第&nbsp;9&nbsp;字节之间有一个连字符。每个显示行从&nbsp;16&nbsp;字节的边界上开始。&nbsp;<BR><BR>范例&nbsp;<BR>假定键入以下命令:&nbsp;<BR>dcs:100&nbsp;10f&nbsp;<BR>Debug&nbsp;按以下格式显示范围中的内容:&nbsp;<BR>04BA:0100&nbsp;54&nbsp;4F&nbsp;4D&nbsp;00&nbsp;53&nbsp;41&nbsp;57&nbsp;59-45&nbsp;52&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;TOM.SAWYER......&nbsp;<BR>如果在没有参数的情况下键入&nbsp;d&nbsp;命令,Debug&nbsp;按以前范例中所描述的内容来编排显示格式。显示的每行以比前一行的地址大&nbsp;16&nbsp;个字节(如果是显示&nbsp;40&nbsp;列的屏幕,则为&nbsp;8&nbsp;个字节)的地址开头。&nbsp;<BR>对于后面键入的每个不带参数的&nbsp;d&nbsp;命令,Debug&nbsp;将紧接在最后显示的命令后立即显示字节内容。&nbsp;<BR>如果键入以下命令,Debug&nbsp;将从&nbsp;CS:100&nbsp;开始显示&nbsp;20h&nbsp;个字节的内容:&nbsp;<BR>dcs:100&nbsp;l&nbsp;20&nbsp;<BR>如果键入以下命令,Debug&nbsp;将显示范围从&nbsp;CS&nbsp;段的&nbsp;100h&nbsp;到&nbsp;115h&nbsp;中所有字节的内容:&nbsp;<BR>dcs:100&nbsp;115&nbsp;<BR><BR>Debug:E(键入)&nbsp;<BR><BR>将数据输入到内存中指定的地址。&nbsp;<BR>可以按十六进制或&nbsp;ASCII&nbsp;格式键入数据。以前存储在指定位置的任何数据全部丢失。&nbsp;<BR><BR>e&nbsp;address&nbsp;[list]&nbsp;<BR><BR>参数&nbsp;<BR>address&nbsp;<BR>指定输入数据的第一个内存位置。&nbsp;<BR>list&nbsp;<BR>指定要输入到内存的连续字节中的数据。&nbsp;<BR>有关集成记忆码的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;A(汇编)。&nbsp;<BR>有关显示内存部分内容的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;D&nbsp;(转储)。&nbsp;<BR><BR>说明&nbsp;<BR><BR>使用&nbsp;address&nbsp;参数&nbsp;<BR><BR>如果在没有指定可选的&nbsp;list&nbsp;参数的值情况下指定&nbsp;address&nbsp;的值,Debug&nbsp;将显示地址和内容,在下一行重复地址,并等待您的输入。此时,您可以执行下列操作之一:&nbsp;<BR><BR>替换字节值。为此,请在当前值后键入新值。如果您键入的值不是有效的十六进制值,或该值包含两个以上的数字,则&nbsp;Debug&nbsp;不会回显无效或额外的字符。&nbsp;<BR>进入下一个字节。为此,请按&nbsp;SPACEBAR(空格键)。要更改该字节中的值,请在当前值后键入新值。如果按&nbsp;SPACEBAR(空格键)时,移动超过了&nbsp;8&nbsp;位界限,Debug&nbsp;程序将显示新的一行并在行首显示新地址。&nbsp;<BR>返回到前一个字节。为此,请按&nbsp;HYPHEN&nbsp;键&nbsp;(-)。可以反复按&nbsp;HYPHEN&nbsp;键&nbsp;(-)&nbsp;向后移动超过多个字节。在按&nbsp;HYPHEN&nbsp;时,Debug&nbsp;开始新行并显示当前地址和字节值。&nbsp;<BR>停止执行&nbsp;e&nbsp;命令。为此,请按&nbsp;ENTER&nbsp;键。在任何字节位置都可以按&nbsp;ENTER。&nbsp;<BR>使用&nbsp;list&nbsp;参数&nbsp;<BR><BR>如果指定&nbsp;list&nbsp;参数的值,随后的&nbsp;e&nbsp;命令将使用列表中的值替换现有的字节值。如果发生错误,将不更改任何字节值。&nbsp;<BR><BR>List&nbsp;值可以是十六进制字节或字符串。使用空格、逗号或制表符来分隔值。必须将字符串包括在单或双引号中。&nbsp;<BR><BR>范例&nbsp;<BR><BR>假定键入以下命令:&nbsp;<BR><BR>ecs:100&nbsp;<BR><BR>Debug&nbsp;按下面的格式显示第一个字节的内容:&nbsp;<BR><BR>04BA:0100&nbsp;EB.&nbsp;<BR><BR>要将该值更改为&nbsp;41,请在插入点键入&nbsp;41,如下所示:&nbsp;<BR><BR>04BA:0100&nbsp;EB.41_&nbsp;<BR><BR>可以用一个&nbsp;e&nbsp;命令键入连续的字节值。在键入新值后按&nbsp;SPACEBAR(空格键),而不是按&nbsp;ENTER&nbsp;键。Debug&nbsp;显示下一个值。在此范例中,如果按三次&nbsp;SPACEBAR(空格键),Debug&nbsp;将显示下面的值:&nbsp;<BR><BR>04BA:0100&nbsp;EB.41&nbsp;10.&nbsp;00.&nbsp;BC._&nbsp;<BR><BR>要将十六进制值&nbsp;BC&nbsp;更改为&nbsp;42,请在插入点键入&nbsp;42,如下所示:&nbsp;<BR><BR>04BA:0100&nbsp;EB.41&nbsp;10.&nbsp;00.&nbsp;BC.42_&nbsp;<BR><BR>假定决定值&nbsp;10&nbsp;应该是&nbsp;6F。要纠正该值,请按&nbsp;HYPHEN&nbsp;键两次以返回到地址&nbsp;0101(值&nbsp;10)。Debug&nbsp;显示以下内容:&nbsp;<BR><BR>04BA:0100&nbsp;EB.41&nbsp;10.&nbsp;00.&nbsp;BC.42-&nbsp;<BR>04BA:0102&nbsp;00.-&nbsp;<BR>04BA:0101&nbsp;10._&nbsp;<BR><BR>在插入点键入&nbsp;6f&nbsp;更改值,如下所示:&nbsp;<BR><BR>04BA:0101&nbsp;10.6f_&nbsp;<BR><BR>按&nbsp;ENTER&nbsp;停止&nbsp;e&nbsp;命令并返回到&nbsp;Debug&nbsp;提示符下。&nbsp;<BR><BR>以下是字符串项的范例:&nbsp;<BR><BR>eds:100&nbsp;"This&nbsp;is&nbsp;the&nbsp;text&nbsp;example"&nbsp;<BR><BR>该字符串将从&nbsp;DS:100&nbsp;开始填充&nbsp;24&nbsp;个字节&nbsp;<BR><BR>Debug:F(填充)&nbsp;<BR><BR>使用指定的值填充指定内存区域中的地址。&nbsp;<BR><BR>可以指定十六进制或&nbsp;ASCII&nbsp;格式表示的数据。任何以前存储在指定位置的数据将会丢失。&nbsp;<BR><BR><BR>f&nbsp;range&nbsp;list&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>range&nbsp;<BR><BR>指定要填充内存区域的起始和结束地址,或起始地址和长度。关于有效的&nbsp;range&nbsp;值的信息,请单击“相关主题”列表中的“Debug&nbsp;说明”。&nbsp;<BR><BR>list&nbsp;<BR><BR>指定要输入的数据。List&nbsp;可以由十六进制数或引号包括起来的字符串组成。&nbsp;<BR><BR><BR>说明&nbsp;<BR><BR>使用&nbsp;range&nbsp;参数&nbsp;<BR><BR>如果&nbsp;range&nbsp;包含的字节数比&nbsp;list&nbsp;中的数值大,Debug&nbsp;将在&nbsp;list&nbsp;中反复指派值,直到&nbsp;range&nbsp;中的所有字节全部填充。&nbsp;<BR><BR>如果在&nbsp;range&nbsp;中的任何内存损坏或不存在,Debug&nbsp;将显示错误消息并停止&nbsp;f&nbsp;命令。&nbsp;<BR><BR><BR>使用&nbsp;list&nbsp;参数&nbsp;<BR><BR>如果&nbsp;list&nbsp;包含的数值多于&nbsp;range&nbsp;中的字节数,Debug&nbsp;将忽略&nbsp;list&nbsp;中额外的值。&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>假定键入以下命令:&nbsp;<BR><BR>f04ba:100l100&nbsp;42&nbsp;45&nbsp;52&nbsp;54&nbsp;41&nbsp;<BR><BR>作为响应,Debug&nbsp;使用指定的值填充从&nbsp;04BA:100&nbsp;到&nbsp;04BA:1FF&nbsp;的内存位置。Debug&nbsp;重复这五个值直到&nbsp;100h&nbsp;个字节全部填满为止。&nbsp;<BR><BR><BR>Debug:G(转向)&nbsp;<BR><BR><BR>运行当前在内存中的程序。&nbsp;<BR><BR><BR>g&nbsp;[=address]&nbsp;[breakpoints]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>=address&nbsp;<BR><BR>指定当前在内存中要开始执行的程序地址。如果不指定&nbsp;address,Windows&nbsp;2000&nbsp;将从&nbsp;CS:IP&nbsp;寄存器中的当前地址开始执行程序。&nbsp;<BR><BR>breakpoints&nbsp;<BR><BR>指定可以设置为&nbsp;g&nbsp;命令的部分的&nbsp;1&nbsp;到&nbsp;10&nbsp;个临时断点。&nbsp;<BR><BR>有关执行循环、重复的字符串指令、软件中断或子程序的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;P(执行)。&nbsp;<BR><BR>有关执行指令的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;T(跟踪)。&nbsp;<BR><BR>Debug:H(十六进制)&nbsp;<BR><BR>对指定的两个参数执行十六进制运算。&nbsp;<BR><BR><BR>h&nbsp;value1&nbsp;value2&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>value1&nbsp;<BR><BR>代表从&nbsp;0&nbsp;到&nbsp;FFFFh&nbsp;范围内的任何十六进制数字。&nbsp;<BR><BR>value2&nbsp;<BR><BR>代表从&nbsp;0&nbsp;到&nbsp;FFFFh&nbsp;范围内第二个十六进制数字。&nbsp;<BR><BR><BR>说明&nbsp;<BR><BR>Debug&nbsp;首先将指定的两个参数相加,然后从第一个参数中减去第二个参数。这些计算的结果显示在一行中:先计算和,然后计算差。&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>假定键入以下命令:&nbsp;<BR><BR>h19f&nbsp;10a&nbsp;<BR><BR>Debug&nbsp;执行运算并显示以下结果。&nbsp;<BR>02A9&nbsp;0095&nbsp;<BR><BR>Debug:I(输入)&nbsp;<BR><BR><BR>从指定的端口读取并显示一个字节值。&nbsp;<BR><BR>i&nbsp;port&nbsp;<BR><BR>参数&nbsp;<BR><BR>port&nbsp;<BR><BR>按地址指定输入端口。地址可以是&nbsp;16&nbsp;位的值。&nbsp;<BR><BR>有关将字节值发送到输出端口的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;O(输出)。&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>假定键入以下命令:&nbsp;<BR><BR>i2f8&nbsp;<BR><BR>同时假定端口的字节值是&nbsp;42h。Debug&nbsp;读取该字节,并将其值显示如下:&nbsp;<BR>42&nbsp;<BR><BR><BR>Debug:L(加载)&nbsp;<BR><BR>将某个文件或特定磁盘扇区的内容加载到内存。&nbsp;<BR><BR>要从磁盘文件加载&nbsp;BX:CX&nbsp;寄存器中指定的字节数内容,请使用以下语法:&nbsp;<BR><BR>l&nbsp;[address]&nbsp;<BR><BR>要略过&nbsp;Windows&nbsp;2000&nbsp;文件系统并直接加载特定的扇区,请使用以下语法:&nbsp;<BR><BR>l&nbsp;address&nbsp;drive&nbsp;start&nbsp;number&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>address&nbsp;<BR><BR>指定要在其中加载文件或扇区内容的内存位置。如果不指定&nbsp;address,Debug&nbsp;将使用&nbsp;CS&nbsp;寄存器中的当前地址。&nbsp;<BR><BR>drive&nbsp;<BR><BR>指定包含读取指定扇区的磁盘的驱动器。该值是数值型:0&nbsp;=&nbsp;A,&nbsp;1&nbsp;=&nbsp;B,&nbsp;2&nbsp;=&nbsp;C&nbsp;等。&nbsp;<BR><BR>start&nbsp;<BR><BR>指定要加载其内容的第一个扇区的十六进制数。&nbsp;<BR><BR>number&nbsp;<BR><BR>指定要加载其内容的连续扇区的十六进制数。只有要加载特定扇区的内容而不是加载&nbsp;debug&nbsp;命令行或最近的&nbsp;Debug&nbsp;n(名称)命令中指定的文件时,才能使用&nbsp;drive、start&nbsp;和&nbsp;number&nbsp;参数。&nbsp;<BR><BR>有关指定用于&nbsp;l&nbsp;命令的文件的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;n(名称)。&nbsp;<BR><BR>有关写入调试到磁盘的文件的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;w(写入)。&nbsp;<BR><BR><BR>注意&nbsp;<BR><BR>使用不带参数的&nbsp;l&nbsp;命令&nbsp;<BR><BR>当使用不带参数的&nbsp;l&nbsp;命令时,在&nbsp;debug&nbsp;命令行上指定的文件将加载到内存中,从地址&nbsp;CS:100&nbsp;开始。Debug&nbsp;同时将&nbsp;BX&nbsp;和&nbsp;CX&nbsp;寄存器设置为加载的字节数。如果不在&nbsp;debug&nbsp;命令行指定文件,所装入的文件将是最近使用&nbsp;n&nbsp;命令经常指定的文件。&nbsp;<BR><BR><BR>使用具有&nbsp;address&nbsp;参数的&nbsp;1&nbsp;命令&nbsp;<BR><BR>如果使用带&nbsp;address&nbsp;参数的&nbsp;l&nbsp;命令,Debug&nbsp;将从内存位置&nbsp;address&nbsp;开始加载文件或指定扇区的内容。&nbsp;<BR><BR><BR>使用带全部参数的&nbsp;l&nbsp;命令&nbsp;<BR><BR>如果使用带所有参数的&nbsp;l&nbsp;命令,Debug&nbsp;将加载指定磁盘扇区的内容而不是加载文件。&nbsp;<BR><BR><BR>加载特定扇区的内容&nbsp;<BR><BR>指定范围内的每个扇区均从&nbsp;drive&nbsp;读取。Debug&nbsp;从&nbsp;start&nbsp;开始加载,直到在&nbsp;number&nbsp;中指定的扇区数中的内容全部被加载。&nbsp;<BR><BR><BR>加载&nbsp;.exe&nbsp;文件&nbsp;<BR><BR>Debug&nbsp;忽略&nbsp;.exe&nbsp;文件的地址&nbsp;address&nbsp;参数。如果指定&nbsp;.exe&nbsp;文件,Debug&nbsp;将文件重新定位到&nbsp;.exe&nbsp;文件的标题中指定的加载地址。在&nbsp;.exe&nbsp;文件被加载到内存前,标题自身从&nbsp;.exe&nbsp;文件脱离,因此磁盘上的&nbsp;.exe&nbsp;文件大小与内存中的不同。如果要检查整个&nbsp;.exe&nbsp;文件,请使用不同的扩展名重命名文件。&nbsp;<BR><BR><BR>打开十六进制文件&nbsp;<BR><BR>Debug&nbsp;将具有&nbsp;.hex&nbsp;扩展名的文件认为十六进制格式文件。键入不带参数的&nbsp;l&nbsp;命令,可以加载从十六进制文件中指定的地址处开始的十六进制文件。如果键入的&nbsp;l&nbsp;命令包含&nbsp;address&nbsp;参数,Debug&nbsp;将把指定的地址加到在十六进制文件中找到的地址上,以确定起始地址。&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>假定启动&nbsp;Debug&nbsp;并键入以下命令:&nbsp;<BR><BR>nfile.com&nbsp;<BR><BR>现在可以键入&nbsp;l&nbsp;命令以加载&nbsp;File.com。Debug&nbsp;将加载文件并显示&nbsp;Debug&nbsp;提示符。&nbsp;<BR><BR>假定需要从驱动器&nbsp;C&nbsp;将起始逻辑扇区为&nbsp;15&nbsp;(0Fh)&nbsp;的&nbsp;109&nbsp;(6Dh)&nbsp;个扇区的内容加载到起始地址为&nbsp;04BA:0100&nbsp;的内存中。为此,请键入以下命令:&nbsp;<BR>l04ba:100&nbsp;2&nbsp;0f&nbsp;6d&nbsp;<BR><BR><BR>Debug:M(移动)&nbsp;<BR><BR><BR><BR>将一个内存块中的内容复制到另一个内存块中。&nbsp;<BR><BR>m&nbsp;range&nbsp;address&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>range&nbsp;<BR><BR>指定要复制内容的内存区域的起始和结束地址,或起始地址和长度。&nbsp;<BR><BR>address&nbsp;<BR><BR>指定要将&nbsp;range&nbsp;内容复制到该位置的起始地址。&nbsp;<BR><BR>说明&nbsp;<BR><BR>复制操作对现有数据的影响&nbsp;<BR><BR>如果新数据没有写入正在被复制的数据块中的地址,则源数据将保持不变。但是,如果目标块已经包含数据(就象它在覆盖副本操作中一样),则将改写该数据。(覆盖复制操作是指那些目标数据块部分内容覆盖原数据块部分内容的操作。)&nbsp;<BR><BR><BR>执行覆盖复制操作&nbsp;<BR><BR>m&nbsp;命令执行目标地址的覆盖复制操作,而不丢失数据。将改写的地址内容首先复制。因此,如果将较高位地址的数据复制到较低位地址,则复制操作从原块的最低位地址开始并向最高位地址进行。反之,如果要将数据从低地址复制到高地址,复制操作从原块的最高地址开始,向最低地址进行。&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>假定键入以下命令:&nbsp;<BR><BR>mcs:100&nbsp;110&nbsp;cs:500&nbsp;<BR>Debug&nbsp;首先将&nbsp;CS:110&nbsp;地址中的内容复制到地址&nbsp;CS:510&nbsp;中,然后将&nbsp;CS:10F&nbsp;地址中的内容复制到&nbsp;CS:50F&nbsp;中,如此操作直至将&nbsp;CS:100&nbsp;地址中的内容复制到地址&nbsp;CS:500&nbsp;中。要查看结果,请使用&nbsp;Debug&nbsp;d(转储)命令,并使用&nbsp;m&nbsp;命令指定目标地址&nbsp;<BR><BR>Debug:N(名称)&nbsp;<BR><BR><BR><BR>指定&nbsp;Debug&nbsp;l(加载)或&nbsp;w(写入)命令的可执行文件的名称,或者指定正在调试的可执行文件的参数。&nbsp;<BR><BR><BR>n&nbsp;[drive:][path]&nbsp;filename&nbsp;<BR><BR><BR>要指定测试的可执行文件的参数,请使用以下语法:&nbsp;<BR><BR>n&nbsp;file-parameters&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>如果在没有参数的情况下使用,则&nbsp;n&nbsp;命令清除当前规范。&nbsp;<BR>[drive:][path]&nbsp;filename&nbsp;<BR><BR>指定要测试的可执行文件的位置和名称。&nbsp;<BR><BR>file-parameters&nbsp;<BR><BR>为正在测试的可执行文件指定参数和开关。&nbsp;<BR><BR>有关将文件或指定磁盘扇区的内容加载到内存中的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;L(加载)。&nbsp;<BR><BR>有关写入调试到磁盘的文件的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;W(写入)。&nbsp;<BR><BR><BR>说明&nbsp;<BR><BR>n&nbsp;命令的两个用途&nbsp;<BR><BR>可以按两种方式使用&nbsp;n&nbsp;命令。首先,您可以使用它以指定后面的&nbsp;l(加载)或&nbsp;w(写入)命令所使用的文件。如果在没有命名所调试文件的情况下启动&nbsp;Debug,必须在使用&nbsp;l&nbsp;命令加载文件之前使用命令&nbsp;nfilename。在&nbsp;CS:5C&nbsp;为文件控制块&nbsp;(FCB)&nbsp;正确编排文件名的格式。其次,可以使用&nbsp;n&nbsp;命令指定被调试文件的命令行参数和开关。&nbsp;<BR><BR><BR>内存区域&nbsp;<BR><BR>以下四个内存区域都会受到&nbsp;n&nbsp;命令的影响:&nbsp;<BR><BR>内存位置&nbsp;<BR>内容&nbsp;<BR><BR>CS:5C&nbsp;<BR>文件&nbsp;1&nbsp;的文件控制数据块&nbsp;(FCB)&nbsp;<BR><BR>CS:6C&nbsp;<BR>文件&nbsp;2&nbsp;的文件控制数据块&nbsp;(FCB)&nbsp;<BR><BR>CS:80&nbsp;<BR>n&nbsp;命令行的长度(以字符表示)&nbsp;<BR><BR>CS:81&nbsp;<BR>n&nbsp;命令行字符的开头&nbsp;<BR><BR><BR>为&nbsp;n&nbsp;命令指定的第一个文件名被放在&nbsp;CS:5C&nbsp;的&nbsp;FCB&nbsp;中。如果指定第二个文件名,此名称将放置到&nbsp;CS:6C&nbsp;的&nbsp;FCB&nbsp;中。n&nbsp;命令行上键入的字符数(除第一个字符之外,n)存储在位置&nbsp;CS:80。n&nbsp;命令行上的实际字符(再次,除了字母&nbsp;n&nbsp;之外)存储在以&nbsp;CS:81&nbsp;开头的位置。注意这些字符可以是在&nbsp;Windows&nbsp;2000&nbsp;命令提示符下键入的命令中有效的任何开关和分隔符。&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>假定已经启动&nbsp;Debug,并加载了正在调试的程序&nbsp;Prog.com。接着您决定为&nbsp;Prog.com&nbsp;指定两个参数并运行此程序。以下是此范例的命令序列:&nbsp;<BR><BR>debug&nbsp;prog.com&nbsp;<BR>nparam1&nbsp;param2&nbsp;<BR>g&nbsp;<BR><BR>在这种情况下,Debug&nbsp;g(转向)命令会运行该程序,就好像您已在&nbsp;Windows&nbsp;2000&nbsp;命令提示符后键入了如下命令:&nbsp;<BR><BR>prog&nbsp;param1&nbsp;param2&nbsp;<BR><BR>所以,测试和调试反映&nbsp;Prog.com&nbsp;通常的运行时间环境。&nbsp;<BR><BR>在下面的命令序列中,第一个&nbsp;n&nbsp;命令将&nbsp;File1.exe&nbsp;指定为后接的&nbsp;l(加载)命令的文件,该命令将&nbsp;File1.exe&nbsp;加载到内存。第二个&nbsp;n&nbsp;命令指定&nbsp;File1.exe&nbsp;将使用的参数。最后,g&nbsp;命令将运行&nbsp;File1.exe&nbsp;文件,就好像您在&nbsp;Windows&nbsp;2000&nbsp;命令行中键入了&nbsp;File1&nbsp;File2.dat&nbsp;File2.dat&nbsp;一样。&nbsp;<BR><BR>nfile1.exe&nbsp;<BR>l&nbsp;<BR>nfile2.dat&nbsp;file3.dat&nbsp;<BR>g&nbsp;<BR><BR>注意&nbsp;<BR>不要在&nbsp;n&nbsp;命令的第二种形式后使用&nbsp;l&nbsp;命令。还要注意,如果现在使用&nbsp;w(写入)命令,Windows&nbsp;2000&nbsp;将使用名称&nbsp;File2.dat&nbsp;保存正在调试的文件&nbsp;File1.exe。为避免出现此结果,应该总是在&nbsp;l&nbsp;或&nbsp;w&nbsp;命令之前立即使用&nbsp;n&nbsp;命令的第一种形式。&nbsp;<BR><BR>Debug:O(输出)&nbsp;<BR><BR><BR><BR>将字节值发送到输出端口。&nbsp;<BR><BR><BR>o&nbsp;port&nbsp;byte-value&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>port&nbsp;<BR><BR>通过地址指定输出端口。端口地址可以是&nbsp;16&nbsp;位值。&nbsp;<BR><BR>byte-value&nbsp;<BR><BR>指定要指向&nbsp;port&nbsp;的字节值。&nbsp;<BR><BR>有关从输入端口读取字节值的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;I(输入)。&nbsp;<BR><BR>范例&nbsp;<BR><BR>要将字节值&nbsp;4Fh&nbsp;发送到地址为&nbsp;2F8h&nbsp;的输出端口,请键入以下命令:&nbsp;<BR>o2f8&nbsp;4f&nbsp;<BR><BR>Debug:P(执行)&nbsp;<BR><BR><BR><BR>执行循环、重复的字符串指令、软件中断或子例程;或通过任何其他指令跟踪。&nbsp;<BR><BR><BR>p&nbsp;[=&nbsp;address]&nbsp;[number]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>=address&nbsp;<BR><BR>指定第一个要执行指令的位置。如果不指定地址,则默认地址是在&nbsp;CS:IP&nbsp;寄存器中指定的当前地址。&nbsp;<BR><BR>number&nbsp;<BR><BR>指定在将控制返回给&nbsp;Debug&nbsp;之前要执行的指令数。默认值为&nbsp;1。&nbsp;<BR><BR>有关运行当前在内存中程序的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;G(转向)。&nbsp;<BR><BR>有关执行指令的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;T(跟踪)。&nbsp;<BR><BR><BR>说明&nbsp;<BR>控制传送到要测试的程序&nbsp;<BR><BR>当&nbsp;p&nbsp;命令将控制从&nbsp;Debug&nbsp;传送到要测试的程序时,该程序不间断运行,直到循环、重复字符串指令、软件中断或者完成了指定地址的子例程为止,或者直到执行了指定数量的机器指令为止。控制返回到&nbsp;Debug。&nbsp;<BR><BR>地址参数的限制&nbsp;<BR><BR>如果&nbsp;address&nbsp;参数没有指定段,Debug&nbsp;将使用被测试程序的&nbsp;CS&nbsp;寄存器。如果省略&nbsp;address,程序将从&nbsp;CS:IP&nbsp;寄存器所指定的地址开始执行。必须在&nbsp;address&nbsp;参数之前使用等号&nbsp;(=)&nbsp;以便将它与&nbsp;number&nbsp;参数区分。如果在指定地址处的指令不是循环、重复的字符串指令、软件中断或子例程,则&nbsp;p&nbsp;命令与&nbsp;Debug&nbsp;t(跟踪)命令的作用相同。&nbsp;<BR><BR>使用&nbsp;p&nbsp;命令显示的邮件&nbsp;<BR><BR>当&nbsp;p&nbsp;执行完一段说明后,Debug&nbsp;显示出程序的寄存器内容、标志的状态以及下一段将要被执行的指令的解码形式。&nbsp;<BR><BR><BR>警告&nbsp;<BR><BR>不能使用&nbsp;p&nbsp;命令跟踪只读内存&nbsp;(ROM)。&nbsp;<BR><BR>范例&nbsp;<BR><BR>假定正在测试的程序在地址&nbsp;CS:143F&nbsp;处包含一个&nbsp;call&nbsp;指令。要运行&nbsp;call&nbsp;目标位置的子程序然后将控制返回到&nbsp;Debug,请键入以下命令:&nbsp;<BR><BR>p=143f&nbsp;<BR><BR>Debug&nbsp;按以下格式显示结果:&nbsp;<BR>AX=0000&nbsp;BX=0000&nbsp;CX=0000&nbsp;DX=0000&nbsp;SP=FFEE&nbsp;BP=0000&nbsp;SI=0000&nbsp;DI=0000&nbsp;<BR>DS=2246&nbsp;ES=2246&nbsp;SS=2246&nbsp;CS=2246&nbsp;IP=1443&nbsp;NV&nbsp;UP&nbsp;EI&nbsp;PL&nbsp;NZ&nbsp;AC&nbsp;PO&nbsp;NC&nbsp;<BR>2246:1442&nbsp;7505&nbsp;JNZ&nbsp;144A&nbsp;<BR><BR>Debug:Q(退出)&nbsp;<BR><BR><BR><BR>停止&nbsp;Debug&nbsp;会话,不保存当前测试的文件。&nbsp;<BR><BR>当您键入&nbsp;q&nbsp;以后,控制返回到&nbsp;Windows&nbsp;2000&nbsp;的命令提示符。&nbsp;<BR><BR><BR>q&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>该命令不带参数。&nbsp;<BR>有关保存文件的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;W(写入)。&nbsp;<BR><BR>Debug:R(寄存器)&nbsp;<BR><BR><BR>显示或改变一个或多个&nbsp;CPU&nbsp;寄存器的内容。&nbsp;<BR><BR><BR>r&nbsp;[register-name]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>无&nbsp;<BR><BR>如果在没有参数的情况下使用,则&nbsp;r&nbsp;命令显示所有寄存器的内容以及寄存器存储区域中的标志。&nbsp;<BR><BR>register-name&nbsp;<BR><BR>指定要显示其内容的寄存器名。&nbsp;<BR><BR>有关显示内存部分内容的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;D(转储)。&nbsp;<BR><BR>有关反汇编字节的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;U(反汇编)。&nbsp;<BR><BR><BR>说明&nbsp;<BR><BR>使用&nbsp;r&nbsp;命令&nbsp;<BR><BR>如果指定了寄存器名称,Windows&nbsp;2000&nbsp;将显示以十六进制标记表示的寄存器的&nbsp;16&nbsp;位值,并将冒号显示为提示符。如果要更改包含在寄存器中的值,除非键入新值并按&nbsp;ENTER&nbsp;键;否则,请按&nbsp;ENTER&nbsp;键返回&nbsp;Debug&nbsp;提示符。&nbsp;<BR><BR>有效寄存器名&nbsp;<BR><BR>以下是&nbsp;register-name&nbsp;的有效值:ax、bx、cx、dx、sp、bp、si、di、ds、es、ss、cs、ip、pc&nbsp;及&nbsp;f。ip&nbsp;和&nbsp;pc&nbsp;都引用指令指针。&nbsp;<BR><BR>如果指定寄存器名称,而不是从前面的列表中指定,Windows&nbsp;2000&nbsp;将显示以下消息:&nbsp;<BR><BR>br&nbsp;error&nbsp;<BR><BR>使用&nbsp;f&nbsp;字符而不是寄存器名&nbsp;<BR><BR>如果键入&nbsp;f&nbsp;字符代替寄存器名,Debug&nbsp;将每个标记的当前设置显示为两字母代码,然后显示&nbsp;Debug&nbsp;提示符。要更改标志的设置,请从下表中键入适当的两字母代码:&nbsp;<BR><BR>标志名&nbsp;<BR>设置&nbsp;<BR>清除&nbsp;<BR><BR>溢出&nbsp;<BR>ov&nbsp;<BR>nv&nbsp;<BR><BR>方向&nbsp;<BR>dn(减)&nbsp;<BR>up(增)&nbsp;<BR><BR>中断&nbsp;<BR>ei(启用)&nbsp;<BR>di(禁用)&nbsp;<BR><BR>正负&nbsp;<BR>ng(负)&nbsp;<BR>pl(正)&nbsp;<BR><BR>零&nbsp;<BR>zr&nbsp;<BR>nz&nbsp;<BR><BR>辅助进位&nbsp;<BR>ac&nbsp;<BR>na&nbsp;<BR><BR>奇偶校验&nbsp;<BR>pe(偶校验)&nbsp;<BR>po(奇校验)&nbsp;<BR><BR>进位&nbsp;<BR>cy&nbsp;<BR>nc&nbsp;<BR><BR><BR>可以按任何顺序键入新的标志值。不需要在这些值之间留出空格。要停止&nbsp;r&nbsp;命令,请按&nbsp;ENTER&nbsp;键。任何没有指定新值的标志保持不变。&nbsp;<BR><BR>用&nbsp;r&nbsp;命令显示的邮件&nbsp;<BR><BR>如果为标记指定了多个值,Debug&nbsp;将显示以下消息:&nbsp;<BR><BR>df&nbsp;error&nbsp;<BR><BR>如果指定没有在前面的表中列出的标志代码,Debug&nbsp;将显示以下消息:&nbsp;<BR><BR>bf&nbsp;error&nbsp;<BR><BR>在这两种情况下,Debug&nbsp;将忽略所有在无效项目之后指定的设置。&nbsp;<BR><BR>Debug&nbsp;的默认设置&nbsp;<BR><BR>在启动&nbsp;Debug&nbsp;时,会将段寄存器设置到空闲内存的低端,指令指针设置为&nbsp;0100h,清除所有标志,并且将其余寄存器设置为零,除了被设置为&nbsp;FFEEh&nbsp;的&nbsp;sp&nbsp;之外。&nbsp;<BR><BR>Debug:R&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>要查看所有寄存器的内容、所有标记的状态和当前位置的指令解码表,请键入以下命令:&nbsp;<BR><BR>r&nbsp;<BR><BR>如果当前位置是&nbsp;CS:11A,显示外观将类似于以下内容:&nbsp;<BR><BR>AX=0E00&nbsp;BX=00FF&nbsp;CX=0007&nbsp;DX=01FF&nbsp;SP=039D&nbsp;BP=0000&nbsp;SI=005C&nbsp;DI=0000&nbsp;<BR>DS=04BA&nbsp;ES=04BA&nbsp;SS=04BA&nbsp;CS=O4BA&nbsp;IP=011A&nbsp;NV&nbsp;UP&nbsp;DI&nbsp;NG&nbsp;NZ&nbsp;AC&nbsp;PE&nbsp;NC&nbsp;<BR>04BA:011A&nbsp;CD21&nbsp;INT&nbsp;21&nbsp;<BR><BR>要只查看标志的状态,请键入以下命令:&nbsp;<BR><BR>rf&nbsp;<BR><BR>Debug&nbsp;按以下格式显示信息:&nbsp;<BR><BR>NV&nbsp;UP&nbsp;DI&nbsp;NG&nbsp;NZ&nbsp;AC&nbsp;PE&nbsp;NC&nbsp;-&nbsp;_&nbsp;<BR><BR>现在,您可以按任意顺序键入一个或多个有效的标志值,其中可以有或没有空格,如下所示:&nbsp;<BR><BR>nv&nbsp;up&nbsp;di&nbsp;ng&nbsp;nz&nbsp;ac&nbsp;pe&nbsp;nc&nbsp;-&nbsp;pleicy&nbsp;<BR><BR>Debug&nbsp;结束&nbsp;r&nbsp;命令并显示&nbsp;Debug&nbsp;提示符。要查看更改,请键入&nbsp;r&nbsp;或&nbsp;rf&nbsp;命令。Debug&nbsp;将显示以下内容:&nbsp;<BR><BR>NV&nbsp;UP&nbsp;EI&nbsp;PL&nbsp;NZ&nbsp;AC&nbsp;PE&nbsp;CY&nbsp;-&nbsp;_&nbsp;<BR>按&nbsp;ENTER&nbsp;返回到&nbsp;Debug&nbsp;提示符。&nbsp;<BR><BR>Debug:S(搜索)&nbsp;<BR><BR><BR><BR>在某个地址范围搜索一个或多个字节值的模式。&nbsp;<BR><BR><BR>s&nbsp;range&nbsp;list&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>range&nbsp;<BR><BR>指定要搜索范围的开始和结束地址。有关&nbsp;range&nbsp;参数有效值的信息,请单击“相关主题”列表中的&nbsp;Debug。&nbsp;<BR><BR>list&nbsp;<BR><BR>指定一个或多个字节值的模式,或要搜索的字符串。用空格或逗号分隔每个字节值和下一个字节值。将字符串值包括在引号中。&nbsp;<BR><BR><BR>说明&nbsp;<BR><BR>如果&nbsp;list&nbsp;参数包含多个字节值,Debug&nbsp;将只显示出现字节值的第一个地址。如果&nbsp;list&nbsp;只包含一个字节值,Debug&nbsp;将显示指定范围内出现该值的所有地址。&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>假定需要查找包含值&nbsp;41&nbsp;并且范围从&nbsp;CS:100&nbsp;到&nbsp;CS:110&nbsp;的所有地址。为此,请键入以下命令:&nbsp;<BR><BR>scs:100&nbsp;110&nbsp;41&nbsp;<BR><BR>Debug&nbsp;按以下格式显示结果:&nbsp;<BR><BR>04BA:0104&nbsp;<BR>04BA:010D&nbsp;<BR>-&nbsp;<BR><BR>以下命令在&nbsp;CS:100&nbsp;到&nbsp;CS:1A0&nbsp;的范围内搜索字符串“Ph”。&nbsp;<BR>scs:100&nbsp;1a0&nbsp;"Ph"&nbsp;<BR><BR>Debug:U(反汇编)&nbsp;<BR><BR><BR>反汇编字节并显示相应的原语句,其中包括地址和字节值。反汇编代码看起来象已汇编文件的列表。&nbsp;<BR><BR><BR>u&nbsp;[range]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>无&nbsp;<BR><BR>如果在没有参数的情况下使用,则&nbsp;u&nbsp;命令分解&nbsp;20h&nbsp;字节(默认值),从前面&nbsp;u&nbsp;命令所显示地址后的第一个地址开始。&nbsp;<BR><BR>range&nbsp;<BR><BR>指定要反汇编代码的起始地址和结束地址,或起始地址和长度。有关&nbsp;range&nbsp;参数有效值的信息,请单击“相关主题”列表中的&nbsp;Debug。&nbsp;<BR><BR>有关集成记忆码的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;A(汇编)。&nbsp;<BR><BR>有关显示内存部分内容的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;D(转储)。&nbsp;<BR><BR>范例&nbsp;<BR><BR><BR><BR>要反汇编&nbsp;16&nbsp;(10h)&nbsp;字节,从地址&nbsp;04BA:0100&nbsp;开始,请键入以下命令:&nbsp;<BR><BR>u04ba:100l10&nbsp;<BR><BR>Debug&nbsp;按以下格式显示结果:&nbsp;<BR><BR>04BA:0100&nbsp;206472&nbsp;AND&nbsp;[SI+72],AH&nbsp;<BR>04BA:0103&nbsp;69&nbsp;DB&nbsp;69&nbsp;<BR>04BA:0104&nbsp;7665&nbsp;JBE&nbsp;016B&nbsp;<BR>04BA:0106&nbsp;207370&nbsp;AND&nbsp;[BP+DI+70],DH&nbsp;<BR>04BA:0109&nbsp;65&nbsp;DB&nbsp;65&nbsp;<BR>04BA:010A&nbsp;63&nbsp;DB&nbsp;63&nbsp;<BR>04BA:010B&nbsp;69&nbsp;DB&nbsp;69&nbsp;<BR>04BA:010C&nbsp;66&nbsp;DB&nbsp;66&nbsp;<BR>04BA:010D&nbsp;69&nbsp;DB&nbsp;69&nbsp;<BR>04BA:010E&nbsp;63&nbsp;DB&nbsp;63&nbsp;<BR>04BA:010F&nbsp;61&nbsp;DB&nbsp;61&nbsp;<BR><BR>如果只显示从&nbsp;04BA:0100&nbsp;到&nbsp;04BA:0108&nbsp;特定地址的信息,请键入以下命令:&nbsp;<BR><BR>u04ba:0100&nbsp;0108&nbsp;<BR><BR>Debug&nbsp;显示以下内容:&nbsp;<BR><BR>04BA:0100&nbsp;206472&nbsp;AND&nbsp;[SI+72],AH&nbsp;<BR>04BA:0103&nbsp;69&nbsp;DB&nbsp;69&nbsp;<BR>04BA:0104&nbsp;7665&nbsp;JBE&nbsp;016B&nbsp;<BR>04BA:0106&nbsp;207370&nbsp;AND&nbsp;[BP+DI+70],DH&nbsp;<BR><BR>Debug:W(写入)&nbsp;<BR><BR><BR><BR>将文件或特定分区写入磁盘。&nbsp;<BR><BR>要将在&nbsp;BX:CX&nbsp;寄存器中指定字节数的内容写入磁盘文件,请使用以下语法:&nbsp;<BR><BR><BR>w&nbsp;[address]&nbsp;<BR><BR><BR>要略过&nbsp;Windows&nbsp;2000&nbsp;文件系统并直接写入特定的扇区,请使用以下语法:&nbsp;<BR><BR>w&nbsp;address&nbsp;drive&nbsp;start&nbsp;number&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>address&nbsp;<BR><BR>指定要写到磁盘文件的文件或部分文件的起始内存地址。如果不指定&nbsp;address,Debug&nbsp;程序将从&nbsp;CS:100&nbsp;开始。关于&nbsp;address&nbsp;参数有效值的信息,请在“相关主题”列表中单击&nbsp;Debug。&nbsp;<BR><BR>drive&nbsp;<BR><BR>指定包含目标盘的驱动器。该值是数值型:0&nbsp;=&nbsp;A,&nbsp;1&nbsp;=&nbsp;B,&nbsp;2&nbsp;=&nbsp;C,等等。&nbsp;<BR><BR>start&nbsp;<BR><BR>指定要写入第一个扇区的十六进制数。&nbsp;<BR><BR>number&nbsp;<BR><BR>指定要写入的扇区数。&nbsp;<BR><BR>有关指定用于&nbsp;w&nbsp;命令的文件的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;N(名称)。&nbsp;<BR><BR>有关将文件或文件扇区内容加载到内存中的信息,请单击“相关主题”列表中的&nbsp;Debug&nbsp;L(加载)。&nbsp;<BR><BR>说明&nbsp;<BR><BR>必须在启动&nbsp;Debug&nbsp;时或者在最近的&nbsp;Debug&nbsp;n(名称)命令中指定磁盘文件的名字。这两种方法都可以将地址&nbsp;CS:5C&nbsp;处文件控制块的文件名正确地编排格式。&nbsp;<BR><BR><BR>在使用不带参数的&nbsp;w&nbsp;命令之前重新设置&nbsp;BX:CX&nbsp;<BR><BR>如果使用了&nbsp;Debug&nbsp;g(转向)、t(跟踪)、p(执行)或&nbsp;r(寄存器)命令,必须在使用无参数的&nbsp;w&nbsp;命令之前,将&nbsp;BX:CX&nbsp;寄存器复位。&nbsp;<BR><BR>将修改后的文件写入磁盘&nbsp;<BR><BR>如果修改文件但不更改文件名、长度或起始地址,Debug&nbsp;仍然可以正确地将文件写入源磁盘位置。&nbsp;<BR><BR>w&nbsp;命令的限制&nbsp;<BR><BR>不能用该命令写入&nbsp;.exe&nbsp;或&nbsp;.hex&nbsp;文件。&nbsp;<BR><BR>警告&nbsp;<BR><BR>因为略过&nbsp;Windows&nbsp;2000&nbsp;文件句柄,所以写入特定的分区非常危险。如果键入错误的值,则磁盘文件结构很容易被损坏。&nbsp;<BR><BR>范例&nbsp;<BR><BR>假定要将起始地址为&nbsp;CS:100&nbsp;的内存内容写入到驱动器&nbsp;B&nbsp;的磁盘中。需要将数据从磁盘的逻辑扇区号&nbsp;37h&nbsp;开始并持续&nbsp;2Bh&nbsp;个扇区。为此,键入以下命令:&nbsp;<BR><BR>wcs:100&nbsp;1&nbsp;37&nbsp;2b&nbsp;<BR><BR>当写操作完成时,Debug&nbsp;再次显示&nbsp;Debug&nbsp;提示符。&nbsp;<BR><BR>Debug:XA(分配扩展内存)&nbsp;<BR><BR>分配扩展内存的指定页面数。&nbsp;<BR><BR>要使用扩展内存,必须安装符合&nbsp;4.0&nbsp;版的&nbsp;Lotus/Intel/Microsoft&nbsp;扩展内存规范&nbsp;(LIM&nbsp;EMS)&nbsp;的扩展内存设备驱动程序。&nbsp;<BR><BR><BR>xa&nbsp;[count]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>count&nbsp;<BR><BR>指定要分配的扩展内存的&nbsp;16KB&nbsp;页数。&nbsp;<BR><BR>有关使用扩展内存的其他&nbsp;Debug&nbsp;命令的信息,请单击“相关主题”列表中的&nbsp;XD(释放扩展内存)、XM(映射扩展内存页)或&nbsp;XS(显示扩展内存状态)。&nbsp;<BR><BR>说明&nbsp;<BR><BR>如果指定的页面数可用,则&nbsp;Debug&nbsp;将显示消息,此消息表明所创建的句柄的十六进制数;否则,Debug&nbsp;将显示错误消息。&nbsp;<BR><BR><BR><BR>Debug:XA&nbsp;<BR><BR>范例&nbsp;<BR><BR>要分配扩展内存的&nbsp;8&nbsp;个页面,请键入以下命令:&nbsp;<BR><BR>xa8&nbsp;<BR><BR>如果命令成功,Debug&nbsp;将显示类似的以下消息:&nbsp;<BR>Handle&nbsp;created=0003&nbsp;<BR><BR>Debug:XD(释放扩展内存)&nbsp;<BR><BR><BR>释放指向扩展内存的句柄。&nbsp;<BR><BR>要使用扩展内存,必须安装符合&nbsp;4.0&nbsp;版的&nbsp;Lotus/Intel/Microsoft&nbsp;扩展内存规范&nbsp;(LIM&nbsp;EMS)&nbsp;的扩展内存设备驱动程序。&nbsp;<BR><BR><BR>xd&nbsp;[handle]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>handle&nbsp;<BR><BR>指定要释放的句柄。&nbsp;<BR><BR>有关使用扩展内存的其他&nbsp;Debug&nbsp;命令的信息,请单击“相关主题”列表中&nbsp;XA(分配扩展内存)、XM(映射扩展内存页)&nbsp;或&nbsp;XS(显示扩展内存状态)。&nbsp;<BR><BR>范例&nbsp;<BR><BR>要释放句柄&nbsp;0003,请键入以下命令:&nbsp;<BR><BR>xd&nbsp;0003&nbsp;<BR><BR>如果命令成功,Debug&nbsp;将显示下列消息:&nbsp;<BR>Hdle&nbsp;0003&nbsp;deallocated&nbsp;<BR><BR>Debug:XM(映射扩展内存页)&nbsp;<BR><BR><BR>将属于指定句柄的扩展内存逻辑页映射到扩展内存的物理页。&nbsp;<BR><BR>要使用扩展内存,必须安装符合&nbsp;4.0&nbsp;版的&nbsp;Lotus/Intel/Microsoft&nbsp;扩展内存规范&nbsp;(LIM&nbsp;EMS)&nbsp;的扩展内存设备驱动程序。&nbsp;<BR><BR><BR>xm&nbsp;[lpage]&nbsp;[ppage]&nbsp;[handle]&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>lpage&nbsp;<BR><BR>指定要映射到物理页&nbsp;ppage&nbsp;的扩展内存的逻辑页面号。&nbsp;<BR><BR>ppage&nbsp;<BR><BR>指定将&nbsp;lpage&nbsp;映射到的物理页面号。&nbsp;<BR><BR>handle&nbsp;<BR><BR>指定句柄。&nbsp;<BR><BR>有关使用扩展内存的其他&nbsp;Debug&nbsp;命令的信息,请单击“相关主题”列表中的&nbsp;XA(分配扩展内存)、XD(释放扩展内存)或&nbsp;XS(显示扩展内存)。&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>要将句柄&nbsp;0003&nbsp;的逻辑页&nbsp;5&nbsp;映射到物理页&nbsp;2,请键入以下命令:&nbsp;<BR><BR>xm&nbsp;5&nbsp;2&nbsp;0003&nbsp;<BR><BR>如果命令成功,Debug&nbsp;将显示下列消息:&nbsp;<BR><BR>Logical&nbsp;page&nbsp;05&nbsp;mapped&nbsp;to&nbsp;physical&nbsp;page&nbsp;02&nbsp;<BR><BR>Debug:XS(显示扩展内存状态)&nbsp;<BR><BR><BR>显示有关扩展内存状态的信息。&nbsp;<BR><BR>要使用扩展内存,必须安装符合&nbsp;4.0&nbsp;版的&nbsp;Lotus/Intel/Microsoft&nbsp;扩展内存规范&nbsp;(LIM&nbsp;EMS)&nbsp;的扩展内存设备驱动程序。&nbsp;<BR><BR><BR>xs&nbsp;<BR><BR><BR>参数&nbsp;<BR><BR>该命令不带参数。&nbsp;<BR><BR>有关使用扩展内存的其他&nbsp;Debug&nbsp;命令的信息,请单击“相关主题”列表中的&nbsp;XA(分配扩展内存)、XD(释放扩展内存)或&nbsp;XM(映射扩展内存页)。&nbsp;<BR><BR><BR>说明&nbsp;<BR><BR>Debug&nbsp;显示的信息有如下格式:&nbsp;<BR><BR>Handle&nbsp;xx&nbsp;has&nbsp;xx&nbsp;pages&nbsp;allocated&nbsp;<BR>Physical&nbsp;page&nbsp;xx&nbsp;=&nbsp;Frame&nbsp;segment&nbsp;xx&nbsp;<BR>xx&nbsp;of&nbsp;a&nbsp;total&nbsp;xx&nbsp;EMS&nbsp;pages&nbsp;have&nbsp;been&nbsp;allocated&nbsp;<BR>xx&nbsp;of&nbsp;a&nbsp;total&nbsp;xx&nbsp;EMS&nbsp;handles&nbsp;have&nbsp;been&nbsp;allocated&nbsp;<BR><BR><BR>范例&nbsp;<BR><BR>要显示扩展内存信息,请键入以下命令:&nbsp;<BR><BR>xs&nbsp;<BR><BR>Debug&nbsp;显示与以下类似的信息:&nbsp;<BR><BR>Handle&nbsp;0000&nbsp;has&nbsp;0000&nbsp;pages&nbsp;allocated&nbsp;<BR>Handle&nbsp;0001&nbsp;has&nbsp;0002&nbsp;pages&nbsp;allocated&nbsp;<BR>Physical&nbsp;page&nbsp;00&nbsp;=&nbsp;Frame&nbsp;segment&nbsp;C000&nbsp;<BR>Physical&nbsp;page&nbsp;01&nbsp;=&nbsp;Frame&nbsp;segment&nbsp;C400&nbsp;<BR>Physical&nbsp;page&nbsp;02&nbsp;=&nbsp;Frame&nbsp;segment&nbsp;C800&nbsp;<BR>Physical&nbsp;page&nbsp;03&nbsp;=&nbsp;Frame&nbsp;segment&nbsp;CC00&nbsp;<BR>2&nbsp;of&nbsp;a&nbsp;total&nbsp;80&nbsp;EMS&nbsp;pages&nbsp;have&nbsp;been&nbsp;allocated&nbsp;<BR>2&nbsp;of&nbsp;a&nbsp;total&nbsp;FF&nbsp;EMS&nbsp;handles&nbsp;have&nbsp;been&nbsp;allocated&nbsp;<BR>(全文完)&nbsp;<BR>
      <P></P></TD>
  <TR>
    <TD align=left width="100%" bgColor=#ebebeb colSpan=2 height=15>
      <P align=center><FONT color=#0000ff>策 划 制 作 :jinesc 
      &nbsp;&nbsp;&nbsp;Copyright 2000 &copy; by 风帆小组, All rights reserved.</FONT> 
      </P></TD></TR></TBODY></TABLE></CENTER></CENTER></DIV></BODY></HTML>

⌨️ 快捷键说明

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