对用户堆栈指针的要求
用户堆栈指针必须有效且必须有6个字节可用于g命令。该命令使用iret指令跳转到正在被测试的程序。Debug设置用户堆栈指针并将用户标志、代码段寄存器和指令指针压入用户堆栈。(如果用户堆栈无效或太小,操作系统可能会失败。)Debug在指定的断点处设置中断代码(0CCh)。
重新启动程序
不要在Windows2000显示以下消息后尝试重新启动程序;
Program terminated normally
要正确地运行程序,必须通过使用Debugn(名称)和l(加载)命令重新加载该程序。
++++
Debug:H(十六进制)
对指定的两个参数执行十六进制运算。
hvalue1value2
参数
value1
代表从0到FFFFh范围内的任何十六进制数字。
value2
代表从0到FFFFh范围内第二个十六进制数字。
范例
假定键入以下命令:
h39f10a
Debug执行运算并显示以下结果。
02A90095
说明
Debug首先将指定的两个参数相加,然后从第一个参数中减去第二个参数。这些计算的结果显示在一行中:先计算和,然后计算差。
++++
Debug:I(输入)
从指定的端口读取并显示一个字节值。
iport
参数
port
按地址指定输入端口。地址可以是16位的值。
有关将字节值发送到输出端口的信息,请单击“相关主题”列表中的DebugO(输出)。
范例
假定键入以下命令:
i2f8
同时假定端口的字节值是42h。Debug读取该字节,并将其值显示如下:
42
Debug:L(加载)
将某个文件或特定磁盘扇区的内容加载到内存。
要从磁盘文件加载BX:CX寄存器中指定的字节数内容,请使用以下语法:
l[address]
要略过Windows2000文件系统并直接加载特定的扇区,请使用以下语法:
l address drivestart number
参数
address
指定要在其中加载文件或扇区内容的内存位置。如果不指定address,Debug将使用CS寄存器中的当前地址。
drive
指定包含读取指定扇区的磁盘的驱动器。该值是数值型:0=A,1=B,2=C等。
start
指定要加载其内容的第一个扇区的十六进制数。
number
指定要加载其内容的连续扇区的十六进制数。只有要加载特定扇区的内容而不是加载debug命令行或最近的Debugn(名称)命令中指定的文件时,才能使用drive、start和number参数。
有关指定用于l命令的文件的信息,请单击“相关主题”列表中的Debugn(名称)。
有关写入调试到磁盘的文件的信息,请单击“相关主题”列表中的Debugw(写入)。
范例
假定启动Debug并键入以下命令:
现在可以键入l命令以加载File。com。Debug将加载文件并显示Debug提示符。
假定需要从驱动器C将起始逻辑扇区为15(0Fh)的109(6Dh)个扇区的内容加载到起始地址为04BA:0100的内存中。为此,请键入以下命令:
l04ba:10020f6d
注意
使用不带参数的l命令
当使用不带参数的l命令时,在debug命令行上指定的文件将加载到内存中,从地址CS:100开始。Debug同时将BX和CX寄存器设置为加载的字节数。如果不在debug命令行指定文件,所装入的文件将是最近使用n命令经常指定的文件。
使用具有address参数的1命令
如果使用带address参数的l命令,Debug将从内存位置address开始加载文件或指定扇区的内容。
使用带全部参数的l命令
如果使用带所有参数的l命令,Debug将加载指定磁盘扇区的内容而不是加载文件。
加载特定扇区的内容
指定范围内的每个扇区均从drive读取。Debug从start开始加载,直到在number中指定的扇区数中的内容全部被加载。
领取专属 10元无门槛券
私享最新 技术干货