Debug的使用
Debug是DOS,Windows都提供的实模式(8086方式)程序调试工具。它的功用:(1)可以直接查看,输入,更改CPU各种寄存器中的内容,内存的情况和在机器码级跟踪程序的运行。(2)观察操作系统的内容。(3)查看ROM.BIOS的内容。(4)观察更改RAM内部的设置值。(5)以扇区或文件的方式读写软盘数据。(6)Debug把所有数据都作字节序列处理,它可以读任何类型的数据。它可以识别两种类型的数据:十六进制和ASCII码字符。显示格式是各个字节的十六进制值以及值在32-126之间的字节相应的ASCII码字符。
Debug输入数据有两种方法:(1)提示法和(2)非提示法。按Enter或Ctrl+C返回短横线(-)提示符。在使用Debug时,一般都要地址的输入格式:段地址:偏移地址。如没有输入地址,默认当前内存段,从位于地址100H的字节开始。前100H字节保留给程序段前缀使用。这一专用区域用于建立DOS与程序之间的联系。Debug总是用四位十六进制数表示地址,用两位十六进制数表示数据。
(1).-R命令:查看,改变CPU寄存器的内容。格式-R,查看寄存器内容。-R AX(寄存器名),修改AX内容。
(2).-D命令:查看内存中的内容。以内存映象方式显示内存的信息。格式:-D,查看内容中内容。-D 段地址:偏移地址,列出指定内存单元内容。使用Debug的D命令,将输出三部分内容:(1)左边部分是每行的起始地址。(2)中间部分是指定地址开始的128个内存单元内容(128Byte),用十六进制表示。每行16个内存单元(16Byte)。每行中间有一个“-”,把每行分两部分,“-”左半部从0-7的8个单元,右半部从8-F的8个单元。(3)右边部分是每个内存单元中数据对应的可显示的ASCII码字符。没有可显示的字符用.代替。
(3).-E命令:改写内存中的内容。格式:(1)-e 起始地址,数据,数据,...(2)用提问方如:-e 1000:10 按Enter键,显示1000:10行0单元内容,光标停在.后面,如果输入数据,按空格键,则更改0单元的内容。不输入数据,直接按空格键,原内容不变。按空格键后光标显示下一个内存单元的内容,并提示进行修改,直到按Enter键,E命令操作结束。(3)用E命令可以向内存中写入数值,字符,字符串,机器码。
(4).-U命令:将内存中的机器指令翻译成汇编指令。格式:-U起始地址。U命令显示三部分:(1)左边部分:显示每一条机器指令的地址。(2)中间部分:显示机器指令。(3)右边部分:显示机器指令对应的汇编指令。
(5).-T命令:执行一条机器指令。格式:-T,可以执行一条或多条指令。
(6).-A命令:以汇编指机令格式在内存中写入一条机器指令。格式:-A起始地址(回车),输入汇编指令。
(7)-C命令:比较两内存区域中的内容是否相同,若不同则显示其地址和内容。格式(1):-C 段地址1起始地址 结束地址 段地址2起始地址。如:-C 1000:0 3F 100就是比较1000:0000-1000:003F区段与DS:0100-DS:013F区段的内容。格式(2):-C地址1 L长度 地址2。如:-C1000:0 L4 0
(8)-F命令:【地址范围】【字节或字节串】填写命令 格式:-F 1000:0 3F 61 62 63 64 65回车,用-D查看,在1000:0000-1000:3F区段,重复填写61,62,63,64,65,右侧显示区则重复显示abcde,如数据行超出指定的范围,填不下的数值被忽略。注意右侧显示区,只能显示ASCII码32-126区间的字符。
(9)-G命令:执行命令,执行正在调试的程序,当达到断点时停止执行。
(10)-H命令【数值】【数值】十六进制算术运算命令:功能:分别显示两个十六进制相加的和以及第一个数减去第二个数的差。格式:-H 35F9 2C34
(11)-I命令:从指定端口输入并显示(十六进制)的一个字节。可由x86的64K个端口取数据。格式:-I 80