《调试程序DEBUG.ppt》由会员分享,可在线阅读,更多相关《调试程序DEBUG.ppt(22页珍藏版)》请在三一办公上搜索。
1、1,调试程序,DEBUG,介绍,封面,2,调试程序DEBUG的使用,调 试 程 序 D E B U G 的 使 用DEBUG.EXE是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。在DEBUG环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。,3,启动DEBUG程序,1.启动DEBUG程序 在DOS提示符下键入:DEBUG(表示回车)Debug执行,屏幕显示提示符“”,说明计算机当前处于DEBUG的管理之下,可接受、并执行DEBUG命令。在DOS提示符下键入:DEBUG 路径文件名DEBUG执行,并将指定文件装入内存,供调试。如不指定被调
2、试程序,DEBUG设置所有段寄存器的值相同,并指向最低的、可用的段地址;SP指向本段的尾部;IP指向本段的0100H单元;其它通用寄存器和所有状态标志清0。,4,启动DEBUG2,如带入的被调试程序扩展名不是.EXE,则BX、CX包含被调试文件长度(字节数,BX为高位),其他同上。(带入.COM程序同此)如带入的被调试程序扩展名是.EXE,则需要重新定位。DS=ES指向当前最低的、可用的段地址(PSP的首字节);CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段;BX.CX为文件长度,其它通用寄存器和状态标志清0。演示:DEBUG的两种启动方法,5,命令格式,2 DEBUG命令和
3、参数的格式1.命令格式 命令字母参数 字母不分大小写;只使用16进制数,不加H;分割符只在两个数值之间是必须的,命令和参数之间可有可无;键入回车键执行命令,Ctrl+Break或Ctrl+C中止命令的执行;如命令不符合DEBUG的规则,则提示“error”并使用“”指示错误位置。,6,参数格式1,2.参数格式表示地址(逻辑地址):段地址:偏移地址 D0400:2500 D10ac:0 Dds:04 Dcs:100偏移地址 D2505 D100;DEBUG认为输入的是偏移地址,段地址采用默认的段寄存器,不同的命令默认不同的段寄存器,例如汇编命令默认CS,显示数据命令默认DS。既不送段地址,也不送
4、偏移地址,段地址采用默认的段寄存器,偏移地址采用当前值。只送段地址,省略偏移地址,非法。如DDS:或 D0400:,7,参数格式2,表示范围 开始地址 结束地址如“D DS:0 50”,“D2AC0:100 200”,“D100 120”注意:结束地址不能带段地址 开始地址 L 字节长度如“D DS:0 L 10”,“D100L20”,8,命令索引,命 令 索 引D命令 E命令 F命令 R命令 A命令U命令 G命令 T命令 P命令 Q命令N命令 L命令 W命令 C命令 H命令S命令 I命令 O命令 M命令,9,D命令,3.DEBUG命令1.显示命令D D 地址 D 范围;如不指定范围,一次显示
5、8行16个字节。D;默认段寄存器为DS,当前偏移地址 D DS:100/D CS:200 D 200:100 D 200;200为偏移地址,默认段寄存器DS D DS:100 110/D 100 L 10,10,E命令,2.修改命令E E 地址;从指定地址开始,修改(或连续修改)存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。E 地址 数据表;从指定的地址开始用数据表给定的数据修改存储单元。E DS:100 F3 AB 8D。,11,F命令,3.添充命令F
6、F 范围 数据表;将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。F DS:0 L5 01,02,03,04,05 F DS:0 L5 01 02 03 04 05(空格分隔)F DS:0 L5 FF;5个字节重复使用FF 注意和E命令的区别:E 地址 数据表,起始地址,不是范围,12,R命令,4.显示修改寄存器命令R R;显示所有寄存器和标志位状态;显示当前CS:IP指向的指令。显示标志时使用的符号:标志 标志=1 标志=0 OFOVNV DFDNUP IFEIDI SFNGPL ZFZRNZ AFACNA PFPEPO CFCYNC,13,A命令,R
7、寄存器名;显示并修改指定的寄存器。RAX;RIP;RF等5.汇编命令AA 地址;从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP开始(通常是CS:100)。注释:在DEBUG下编写简单程序即使用A命令。每条指令后要按回车。不输入指令按回车,或按Ctrl+C结束汇编。支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。,14,U命令,6.反汇编命令U U 地址;从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始
8、(通常是CS:100)。U 范围;对指定范围的单元进行反汇编。U U100 U100L10,15,G命令,7.运行程序命令G G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。G 断点1,断点2,断点10;从CS:IP指向的指令开始执行程序,直到遇到断点。G=地址 断点1,断点2,断点10 G;从CS:IP指向的指令开始执行程序。G=100;从指定地址开始执行程序。G=100 105 110 120,16,G命令2,注 释:1)最多可设置10个断点。2)断点必须设置在一条指令的首字节。3)如设置了多个断点,程序
9、在第一个断点停下后,显示寄存器、标志及下一条要执行的指令,再次输入G命令,程序继续往下执行,直到下一个断点或程序结束。4)程序如有错误,执行时可能造成死机。,17,T命令,8.跟踪命令(单步执行命令)T T;从当前IP开始执行一条指令。T 数值;从当前IP开始执行多条指令。T=地址;T=地址 数值;T T5/T=100 5,必须用分割符,18,P、Q命令,9.跟踪执行并跳过子程序命令PP=地址 数值;类似T命令,但跳过子程序和中断服务程序。10.退出DEBUG命令QQ;返回DOS环境。Q,19,N命令,11.命名命令NN 文件标示符;指定文件,以便用W命令在磁盘上生成该文件,或者用L命令从磁盘
10、装入该文件。N MY_PRO.COM 写盘:在当前盘当前目录生成指定文件。读盘:在当前盘当前目录读取指定文件。N A:USER MY_PRO.COM,20,L命令,12.装入命令L L 地址;装入N命令指定的文件,默认的内存地址为CS:100。N MY_PRO.COM L L 地址 驱动器号 扇区号 扇区数;将某驱动器的若干扇区(最多80H个)装入内存;0=A,1=B,2=C;默认的段地址为CS。L DS:200 2 0 1,21,其他命令1,14.其他命令比较命令C C 范围 地址;将指定范围内的内容与以指定地址为起点的内容相比较。16进制数计算命令H H 数1,数2(H 数1 数2);同时计算两个数字的和与差。查找命令S S 范围 数据;在指定范围内查找指定数据。,22,其它命令2,输入命令I I 端口地址;输入一个字节并显示。输出命令O O 端口地址 字节数据;输出到指定的端口。传送命令M M 范围 地址;将指定范围的内容传送到以指定地址为起点的存储单元。,完,