文档详情

windows中Debug的使用.doc

发布:2017-06-21约2.19千字共7页下载文档
文本预览下载声明
【Windows XP】下【Debug】的使用 0、【Debug与MASM编译器对指令的不同处理】 [idata]的不同处理(idata表示常量):对于mov ax,[0]指令,Debug将其视为:“将ds:0处的数据送入ax”,而MASM则将其视为:“mov ax,0”。要想在汇编源程序中实现将ds:0处的数据送入ax,则需将其写为:mov ax,ds:[0](即,要显式指出段寄存器),但对于[]里用寄存器,比如bx,则默认段地址为ds,写为:mov ax,[bx]与mov ax,ds:[bx]一样。 1、Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的使用情况和在机器码级跟踪程序的运行。 2、【Windows XP】下进入【Debug】 【开始】(【运行】,输入“command”,点击【确定】,【Alt+Enter】为全屏切换键,然后输入“debug”,回车,即进入Debug。 3、Debug命令大全: R命令:查看、改变CPU寄存器的内容 D命令:查看内存中的内容 E命令:改写内存中的内容 U命令:将内存中的机器指令翻译成汇编指令 T命令:单步跟踪命令,进入子程序,执行一条机器指令 A命令:以汇编指令的格式在内存中写入一条机器指令 P命令:单步执行指令,不进入子程序,遇到循环则一次性执行,执行INT 21H后显示“Program terminated normally” G命令:从当前指令一直执行到指定指令,即,一次执行多个指令 【注】在带有内存单元地址的命令中,可以用【寄存器】代替【地址】。 4、R命令:查看、改变CPU寄存器的内容 R命令查看,如下图: Debug列出了CS:IP所指向的内存单元处存放的机器码0xD2968B36,并将它翻译为汇编指令RCL BYTE PTR[BP+368B],CL。 若要修改一个寄存器的值,可参见下图: 同样,也可以更改其他寄存器的内容,比如:CS、IP等。 5、D命令:查看内存中的内容 D命令查看,如下图: Debug将列出从指定内存单元开始的128个内存单元的内容。后面是中间数据的ASCII码,当没有可显示的ASCII码时,debug输出“.”来代替。 接着继续使用D命令,会显示后续的内存单元中的内容。 如果要查看指定一段内存中的内容,如下图所示: 6、E命令:改写内存中的内容 “e 起始地址 数据 数据 数据 ……”格式,如下图: 还可以采用提问的方式一个一个修改内容,如下图: 下内存中写入字符,如下图: 其中,写入a是写入了一个十六进制数,而不是字符,要写入字符需为:’a’ 写入字符串,如下图: 7、用E命令向内存写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码 机器码 对应的汇编指令 B80100 MOV AX,0001 B90200 MOV CX,0002 01C8 ADD AX,CX E、D、U命令,写入、查看内存内容、并查看机器码含义,如下图: 由此可以看出,内存中的数据和代码没有任何区别,关键在于如何解释。 用T命令执行指令,如下图: 8、A命令:以汇编指令的形式在内存中写入机器指令 机器码 对应的汇编指令 B80100 MOV AX,0001 B90200 MOV CX,0002 01C8 ADD AX,CX A命令写入指令,如下图: 9、P命令:单步执行指令,不进入子程序,遇到循环则一次性执行,执行INT 21H后显示“Program terminated normally” ①P命令执行INT 21H后显示“Program terminated normally” MOV AX,0123H MOV BX,0456H ADD AX,BX ADD AX,AX MOV AX,4C00H ;此行以及下行指令实现程序返回 INT 21H 使用P命令执行INT 21H,如下图: 此处,Program terminated normally-------即,程序正常退出 ②P命令一次性执行循环 assume cs:codes codes segment mov ax,0ffffh ;此处设置ds:bx指向ffff:6 mov ds,ax mov bx,6 mov al,[bx] ;此处使ax中的数值与ffff:6内存单元中的数值相同 mov ah,0 mov dx,0 ;累加器清0 mov cx,123 ;循环123次,累加计算(ax)*
显示全部
相似文档