您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 建筑材料 > 调试程序DEBUG的使用[1]
调试程序DEBUG1封面调试程序DEBUG2整个汇编语言课程过程中我们主要用到edit,masm,link,debug四个命令其中edit和debug在c:\windows\command内masm和link在c:\turbo\masm内由于机房软件安装情况的限制,以后在编写汇编语言程序之前首先要在DOS提示符下打通路径c:\pathc:\windows\command;c\turbo\masm打通以上路径后,在DOS任何路径下都可以使用上述命令调试程序DEBUG3调试程序DEBUG的使用调试程序DEBUG的使用DEBUG.EXE是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。在DEBUG环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。调试程序DEBUG4启动DEBUG程序§1.启动DEBUG程序①在DOS提示符下键入:DEBUG↙(表示回车)Debug执行,屏幕显示提示符“-”,说明计算机当前处于DEBUG的管理之下,可接受、并执行DEBUG命令。②在DOS提示符下键入:DEBUG[路径\]文件名↙DEBUG执行,并将指定文件装入内存,供调试。如不指定被调试程序,DEBUG设置所有段寄存器的值相同,并指向最低的、可用的段地址;SP指向本段的尾部;IP指向本段的0100H单元;其它通用寄存器和所有状态标志清0。调试程序DEBUG5启动DEBUG2如带入的被调试程序扩展名不是.EXE,则BX、CX包含被调试文件长度(字节数,BX为高位),其他同上。(带入.COM程序同此)如带入的被调试程序扩展名是.EXE,则需要重新定位。DS=ES指向当前最低的、可用的段地址(PSP的首字节);CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段;BX.CX为文件长度,其它通用寄存器和状态标志清0。演示:DEBUG的两种启动方法调试程序DEBUG6命令格式§2DEBUG命令和参数的格式1.命令格式命令字母[参数]字母不分大小写;只使用16进制数,不加H;分割符只在两个数值之间是必须的,命令和参数之间可有可无;键入回车键执行命令,Ctrl+Break或Ctrl+C中止命令的执行;如命令不符合DEBUG的规则,则提示“error”并使用“^”指示错误位置。调试程序DEBUG7参数格式12.参数格式①表示地址(逻辑地址):段地址:偏移地址D0400:2500D10ac:0Dds:04Dcs:100偏移地址D2505D100;DEBUG认为输入的是偏移地址,段地址采用默认的段寄存器,不同的命令默认不同的段寄存器,例如汇编命令默认CS,显示数据命令默认DS。既不送段地址,也不送偏移地址,段地址采用默认的段寄存器,偏移地址采用当前值。只送段地址,省略偏移地址,非法。如DDS:或D0400:调试程序DEBUG8参数格式2②表示范围开始地址结束地址如“DDS:050”,“D2AC0:100200”,“D100120”注意:结束地址不能带段地址开始地址L字节长度如“DDS:0L10”,“D100L20”调试程序DEBUG9命令索引命令索引D命令E命令F命令R命令A命令U命令G命令T命令P命令Q命令N命令L命令W命令C命令H命令S命令I命令O命令M命令调试程序DEBUG10D命令§3.DEBUG命令1.显示命令D①D[地址]②D[范围];如不指定范围,一次显示8行×16个字节。-D;默认段寄存器为DS,当前偏移地址-DDS:100/-DCS:200-D200:100-D200;200为偏移地址,默认段寄存器DS-DDS:100110/-D100L10调试程序DEBUG11E命令2.修改命令E①E地址;从指定地址开始,修改(或连续修改)存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。②E地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。-EDS:100F3‘AB’8D。调试程序DEBUG12F命令3.添充命令FF范围数据表;将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。-FDS:0L501,02,03,04,05-FDS:0L50102030405(空格分隔)-FDS:0L5FF;5个字节重复使用FF注意和E命令的区别:E地址数据表起始地址,不是范围调试程序DEBUG13R命令4.显示修改寄存器命令R①R;★显示所有寄存器和标志位状态;★显示当前CS:IP指向的指令。显示标志时使用的符号:标志标志=1标志=0OFOVNVDFDNUPIFEIDISFNGPLZFZRNZAFACNAPFPEPOCFCYNC调试程序DEBUG14A命令②R寄存器名;显示并修改指定的寄存器。RAX;RIP;RF等5.汇编命令AA[地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP开始(通常是CS:100)。注释:①在DEBUG下编写简单程序即使用A命令。②每条指令后要按回车。③不输入指令按回车,或按Ctrl+C结束汇编。④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。调试程序DEBUG15U命令6.反汇编命令U①U[地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。②U范围;对指定范围的单元进行反汇编。-U-U100-U100L10调试程序DEBUG16G命令7.运行程序命令G①G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT3。②G=地址;从指定地址开始执行程序,直到程序结束或遇到INT3。③G断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。④G=地址断点1[,断点2,…断点10]-G;从CS:IP指向的指令开始执行程序。-G=100;从指定地址开始执行程序。-G=100105110120调试程序DEBUG17G命令2注释:1)最多可设置10个断点。2)断点必须设置在一条指令的首字节。3)如设置了多个断点,程序在第一个断点停下后,显示寄存器、标志及下一条要执行的指令,再次输入G命令,程序继续往下执行,直到下一个断点或程序结束。4)程序如有错误,执行时可能造成死机。调试程序DEBUG18T命令8.跟踪命令(单步执行命令)T①T;从当前IP开始执行一条指令。②T数值;从当前IP开始执行多条指令。②T=地址;③T=地址数值;-T-T5/-T=1005必须用分割符调试程序DEBUG19P、Q命令9.跟踪执行并跳过子程序命令PP[=地址][数值];类似T命令,但跳过子程序和中断服务程序。10.退出DEBUG命令QQ;返回DOS环境。-Q调试程序DEBUG20N命令11.命名命令NN文件标示符;指定文件,以便用W命令在磁盘上生成该文件,或者用L命令从磁盘装入该文件。-NMY_PRO.COM写盘:在当前盘当前目录生成指定文件。读盘:在当前盘当前目录读取指定文件。-NA:\USER\MY_PRO.COM调试程序DEBUG21L命令12.装入命令L①L[地址];装入N命令指定的文件,默认的内存地址为CS:100。-NMY_PRO.COM-L②L地址驱动器号扇区号扇区数;将某驱动器的若干扇区(最多80H个)装入内存;0=A,1=B,2=C……;默认的段地址为CS。-LDS:200201调试程序DEBUG22W命令13.写盘命令W①W[地址];将指定地址开始的内存数据写入磁盘,生成N命令指定的文件;默认的内存地址为CS:100;写盘的字节数由BX(高位字)和CX(低位字)决定,可执行程序写盘时,文件扩展名应指定.COM。-NMY_PRO.COM-W②W地址驱动器号扇区号扇区数;将内存数据写入磁盘的若干扇区(最多80H);默认的段地址为CS。-WDS:0201注释:写磁盘扇区要慎用。调试程序DEBUG23其他命令114.其他命令*比较命令CC范围地址;将指定范围内的内容与以指定地址为起点的内容相比较。*16进制数计算命令HH数1,数2(H数1数2);同时计算两个数字的和与差。*查找命令SS范围数据;在指定范围内查找指定数据。调试程序DEBUG24其它命令2*输入命令II端口地址;输入一个字节并显示。*输出命令OO端口地址字节数据;输出到指定的端口。*传送命令MM范围地址;将指定范围的内容传送到以指定地址为起点的存储单元。
本文标题:调试程序DEBUG的使用[1]
链接地址:https://www.777doc.com/doc-3911378 .html