Debug使用说明

合集下载

实验一DEBUG的使用

实验一DEBUG的使用

实验一 DEBUG 的使用实验目的:1.学习使用.学习使用DEBUG DEBUG DEBUG程序的各种命令。

程序的各种命令。

程序的各种命令。

2.掌握.掌握8088/868088/868088/86指令系统指令系统指令系统---------算数指令。

算数指令。

算数指令。

3.掌握用.掌握用DEBUG DEBUG DEBUG调试自编程序的方法。

调试自编程序的方法。

调试自编程序的方法。

4.掌握.掌握8088/8086 CPU 8088/8086 CPU 寄存器的用途和存储器组织及它们之间的关系。

寄存器的用途和存储器组织及它们之间的关系。

寄存器的用途和存储器组织及它们之间的关系。

5.掌握内存操作数及寻址方法。

.掌握内存操作数及寻址方法。

6.掌握汇编语言伪操作.掌握汇编语言伪操作:BYTE PTR,WORD PTR :BYTE PTR,WORD PTR。

内容及步骤:一、一、DEBUG DEBUG 命令使用命令使用: :1、 敲 DEBUG 进入进入进入 DEBUG DEBUG 环境,显示提示符环境,显示提示符环境,显示提示符 '_ ' '_ '。

2、 用命令用命令 D100 10F D100 10F 观察内存中的观察内存中的161616进制码及屏幕右边的进制码及屏幕右边的进制码及屏幕右边的ASCII ASCII ASCII字符。

字符。

字符。

3、 用命令用命令 E100 30 31 32 E100 30 31 32 ………… 3F 3F 将30H 30H~~3FH 3FH写入地址为写入地址为写入地址为100H 100H 100H开始的内存单元中,开始的内存单元中,再用再用D D 命令观察结果,看键入的命令观察结果,看键入的161616进制数是什么字符的进制数是什么字符的进制数是什么字符的ASCII ASCII ASCII码码?4、 用命令用命令 F100 10F 'A' F100 10F 'A' 将'A''A'的的ASCII ASCII码填入内存,用码填入内存,用码填入内存,用D D 命令查看结果。

DEBUG的使用方法

DEBUG的使用方法

DEBUG程序的使用一、在DOS的提示符下,可如下键入Debug启动调试程序:DEBUG [路径\文件名] [参数1] [参数2]Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。

命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。

在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。

运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。

运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX 包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。

运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。

此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。

DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。

二、DEBUG命令的格式Debug的命令都是一个字母,后跟一个或多个参数:字母[参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。

许多命令的参数是主存逻辑地址,形式是“段基地址: 偏移地址”。

其中,段基地址可以是段寄存器或数值;偏移地址是数值。

如果不输入段地址,则采用默认值,可以是缺省段寄存器值。

debug命令的使用

debug命令的使用

1.打开Windows命令窗口在Windows 95/98的环境中,打开命令窗口的步骤为:点击“开始”→“运行”,输入“command”命令;在WindowsXP及WIN7的环境中,打开命令窗口的步骤为:点击“开始”→“运行”,输入“cmd”命令;2.启动DEBUG在命令窗口中启动DEBUG,启动命令一般为:DEBUG [文件名] [参数表]。

其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。

被调试的文件可以是系统中的任何文件,但通常它们的后缀为.EXE或.COM。

当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。

DEBUG中所有命令及其含义如DEBUG各命令功能说明表所示。

关于使用命令的几点说明:在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行命令是单个字母,命令和参数的大小写可混合输入可用F1、F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令当命令出现语法错误时,将在出错位置显示“^ Error”可用Ctrl+C或Ctrl+Break来终止当前命令的执行,还可用Ctrl+S或Ctrl+Num Lock来暂停屏幕显示(当连续不断地显示信息时)以下通过实现十九个示例来熟悉DEBUG的命令集和基本的汇编指令。

R命令的使用R命令作用:观看和修改寄存器的值。

在提示符“-”下输入以下命令:R。

DEBUG将会显示出当前所有寄存器和标志位的状态。

接下来再输入命令RCX。

在提示符“:”后输入100。

该命令的作用是将寄存器CX的值设置为100(注意:DEBUG使用的是十六进制,这里的100相当于十进制的256。

)最后再执行R命令,观看修改后的寄存器值。

H命令的使用H命令作用:计算两个十六进制数的和与差。

在提示符“-”下输入以下命令:H 10 1。

观看命令执行结果。

运行结果的前一个数是计算出来的和,后一个数是计算出来的差。

DEBUG使用方法简介

DEBUG使用方法简介

2.3 DEBUG使用方法简介:DEBUG是DOS命令,必须在DOS环境下运行。

由于目前都使用WINDOWS操作系统,应设法进入实地址模式的DOS环境,才能可靠地运行DEBUG。

一般可用DOS启动盘启动系统,或在WINDOWS-98系统退出时选择“切换到MSDOS”操作,进入到实地址模式的DOS环境。

由于DEBUG是DOS外部命令,因此,须把DEBUG.EXE文件拷贝到当前目录下来运行DEBUG,DOS启动盘中应事先拷贝有DEBUG.EXE文件,在WINDOWS98系统中,“C:\WINDOWS\COMMAND\”目录下有DEBUG.EXE文件。

后面的操作,假设DEBUG.EXE文件都已事先拷贝到当前目录下。

在WINDOWS操作系统中(包括WINDOWS98、2K、XP等),系统提供了V86模式的“命令提示符”窗口,在此窗口中也能运行DEBUG,但DEBUG的某些功能会受到WINDOWS系统的限制。

1.启动与退出DEBUG:启动DEBUG,在DOS提示符下输入:DEBUG[回车]屏幕显示“-”,表示已启动了DEBUG。

“-”是DEBUG子命令等待状态,后面所有的DEBUG操作(包括运行调试自编的汇编语言程序)都是在此“-”提示符下所进行的DEBUG 子命令执行。

退出DEBUG,在“-”提示符下输入:Q[回车]屏幕显示DOS命令提示符:C:\> 或A:\> 。

2.进入与退出输入汇编指令:在“-”提示符下输入:A [偏移地址] [回车]屏幕显示“<段地址>:<偏移地址> |”,此处将等待你输入汇编语言程序或实验指令。

当一条指令输入完毕[回车]后,又将自动出现下一对“<段地址>:<偏移地址> |”等待你输入下条指令,如此重复,将帮助你把整段汇编语言程序输入完毕。

注意:如果输入汇编指令时手误,屏幕上将当场提示错误“ERROE”,自动地址不进步,还在原地址上等待你重新输入正确的汇编指令。

DEBUG使用方法

DEBUG使用方法

DEBUG使用方法DEBUG使用方法格式:DEBUG[[drive:][path]filename[testfile-para meters]]参数:[drive:][path]filename指定待调试可执行文件的所在位置及文件名。

testfile-parameters指定待设计可执行文件需要的命令参数。

相关命令-A (汇编,Assemble)-C (比较,Compare)-D (卸出,Dump)-E (输入数据,Enter))-F (填充,Fill)-G (执行,Go)-H (十六进行运算,Hex)-I (读输入口,Input)的所在位置及名子,DEBUG执行时将显示符(-)。

这时,用户可输入任何一个DEBUG调试命令。

DEBUG命令以下为DEBUG使用的调试命令及其简介:?显示所有的调试命令A汇编8086/8087/8088汇编语言源程序。

C比较两块内存的内容。

D显示部分内存的内容。

E人指定的地址开始把数据送入内存。

F将指一值填进某一范围的内存。

G运行内存中的程序。

H执行十六进制算术运算。

I从指定输入口输入一道字节值。

L把文件或磁盘扇区内容装入内存。

M拷贝某块内存的内容。

N指定文件名,以便L或W命令读写该文件;指定正调试文件所需的参数。

O发送一字节值至指定输出口。

P执行循环程序,重复字符串指令,软中断,或子程序。

Q结束DEBUG命令执行。

R显示或修改一个或数个寄存器内容。

S在内存指定范围内找寻指定的值。

T执行一条指令,然后显示所有寄存器的内容,所有标志状态,以及下一条要执行的指令(汇编语言格式)。

U反汇编某一范围内的字节,显示其相应汇编语言源语名。

W把正调试文件写入磁盘。

XA分配扩充内存XD释放分配的扩充内存。

XM作扩充内存页的影像。

XS显示扩充内存的状态。

命令参数间的隔离除命令Q外,所有的调试命令都可使用参数。

参数间可用逗号或空格隔开,但只是在十六进制数之间才要求必须隔开。

因此,下列命令是等价的:dcs: 100 110D CS: 100 110D,CS:100,110指定有效地址调试命令中的addres(地址)参数指定内存中的地址。

debug 的使用

debug 的使用

Debug是一种程序调试工具,主要用于帮助程序员检查和修复程序中的错误。

以下是如何使用Debug的基本步骤:
设置断点:断点是一种标记,告诉Debug从标记的地方开始查看。

在要设置断点的代码行上单击鼠标左键即可。

运行程序:在代码区域右击,选择Debug执行。

单步执行:点击Step Into(F7)这个箭头,或者直接按F7,以一行一行地操纵代码,从而判断程序的执行流程是否与预期一致。

查看变量值:在执行过程中,可以查看变量的当前值,以了解程序状态。

删除或禁用断点:选择要删除的断点,单击鼠标左键即可。

如果是多个断点,可以每一个再点击一次。

也可以一次性全部删除。

以上是使用Debug的基本步骤,但请注意,具体使用方式可能会根据Debug的具体版本和配置有所不同。

DEBUG 使用教程 查错 排错 debug 模式 大全

DEBUG 使用教程  查错 排错 debug 模式 大全

1.项目报错,即eclipse里面项目工程有红叉eclipse中打开Problems视图,window->show view->other->General->Problems通过Problems视图中的错误信息,找到错误源(有可能是java文件,或者(xml,有可能是 1.xml有错;2.含有错误字符(比如从word复制过来);3.假报)buildpath -> eclipse中工程,右键->Build Path-> Configure Build path -> Libraries选项卡察看JRE System Library(引入jdk自带包0),Server Runtime(引入jsp/servlet实现包,比如Apache Tomcat V6.0(这个是window->preferences->server下定义的Runtime Environment对应))Web App Libraries(包含了eclipse中项目工程自带的WEB-INF/lib 下引入的jar包)junit(调试用,不一定需要)User Library(一般eclipse使用者把自己引入的jar包放在一起,定义一个library,在eclipse中引用)2.项目启动,控制台报错察看控制台错误信息可能错误信息包括:1.session factory(可能是hibernate的实体类定义错误), 控制台一般看到dao,sessionFactory,hibernate的关键字eg.Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for name1 in class demo.ssh2.model.Roleatorg.hibernate.property.BasicPropertyAccessor.createGetter(BasicProperty Accessor.java:306)atorg.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAc cessor.java:299)atorg.hibernate.mapping.Property.getGetter(Property.java:294)atorg.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEnt ityTuplizer.java:300)atorg.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTu plizer.java:141)atorg.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.ja va:78)... 55 more2.bean定义错误,dao,service,action,1.<property name="" ref=""/>中的ref找不到对应的bean的id从sessionfactory->dao->service->action,前面的错误总能导致出后面的错误eg.比如定义了如下spring配置信息<bean id="sessionFactory" ..../><bean id="baseDao" abstract="true" class="demo.ssh2.dao.BaseHibernateDao"><property name="sessionFactory" ref="sessionFactory1" /></bean>控制台报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in file...(备注:此处省略多少字)Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory1' is definedatorg.springframework.beans.factory.support.DefaultListableBeanFactory.g etBeanDefinition(DefaultListableBeanFactory.java:527)atorg.springframework.beans.factory.support.AbstractBeanFactory.getMerg edLocalBeanDefinition(AbstractBeanFactory.java:1083)atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetB ean(AbstractBeanFactory.java:274)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190)atorg.springframework.beans.factory.support.BeanDefinitionValueResolver .resolveReference(BeanDefinitionValueResolver.java:322)... 30 more2.setter方法名和spring配置文件中的<property name="" ref=""/>中的name 不匹配eg.比如定义如下:<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>RoleService中roleDao的setter方法如下public void setRoleDao1(RoleDao roleDao) {this.roleDao = roleDao;}方法setRoleDao1和<property name="roleDao" 不匹配控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class[demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Did you mean 'roleDao1'?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.缺少setter方法比如配置<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>在类RoleService中没有定义roleDao的setter方法控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class [demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Does the parameter type of the setter match the return type of the getter?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.eclipse缓存问题,更改了文件,部署到web server中的文件仍然旧的servers视图中,先停止server,然后删除servereclipse中点击项目工程,Project->clean->最上面选中Clean Projects selected below->点击ok3.项目运行,控制台报错察看控制台错误信息可能错误信息包括:1.jdbc配置错误(数据库url,用户名,密码)比如jdbc配置文件错误,将ername=root修改为ername=root1页面报错如下:org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection 控制台报错如下:2013-11-20 09:39:25,441 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] Cannot create PoolableConnectionFactory (Access denied for user 'root1'@'localhost' (using password: YES))2.页面访问不到404或页面有异常信息根据访问的url里面的action,找到Action类对应的方法,打个断点(打在方法体内的代码块的第一行)如果不能进入debug视图,表示struts.xml配置文件有问题,页面输入url中的action找不到对应的Action类eg.比如将strus.xml配置名为<action name="role/list",页面访问role/list1.acito页面报错:ng.NoSuchMethodException:demo.ssh2.action.RoleAction.list1()ng.Class.getMethod(Class.java:1605)如果能进入debug视图,表示struts.xml配置文件没有问题,1.一般控制台会有异常栈错误信息eg.比如RoleAction有如下方法public String list(){List<?> list = roleService.getList();ActionContext.getContext().put("roles", list);return "list";}RoleService中getList方法如下public List<?> getList(){throw new RuntimeException();}页面报错:ng.RuntimeExceptiondemo.ssh2.service.RoleService.getList(RoleService.java:13)2.struts2标签或jstl标签使用错误3.页面不能显示出数据,1.action中私有实体类属性没有gettter/setter方法,或者没有使用request.setAttribute,或者使用ActionContext.getContext().put,传值2.struts2标签或jstl标签使用不对,但页面不报错。

DEBUG的使用方法

DEBUG的使用方法

DEBUG的使用方法1.设置断点:断点是在代码中设置的一个位置,程序在运行到这个位置时会暂停执行。

可以在关键的代码行上设置断点,以便在程序运行到这些位置时进行观察和调试。

在DEBUG工具中,我们可以在代码行上单击左侧的空白区域来设置断点。

2.执行步进:步进是一种按步执行程序的方法,可以逐行或逐过程执行代码。

通过逐行执行代码,可以观察每一行代码的执行情况,以便找出程序中的错误。

可以使用DEBUG工具提供的步进功能,一次执行一行代码或一个过程。

3.观察变量:在程序运行过程中,可以观察和监视变量的值,以便了解程序的状态。

可以使用DEBUG工具来查看变量的值,并在程序执行过程中跟踪变量的变化。

这对于发现变量值的改变和问题的根源非常有帮助。

4.输出调试信息:在调试过程中,可以通过在代码中插入输出语句来输出调试信息。

可以使用DEBUG工具提供的输出窗口或控制台来查看这些调试信息。

输出调试信息有助于了解程序的执行流程,找到错误发生的原因。

5.检查堆栈:堆栈是保存程序执行状态的一种数据结构,可以在DEBUG工具中查看和跟踪堆栈的状态。

堆栈信息可以告诉我们程序的执行路径,以及代码是如何调用和返回的。

通过检查堆栈,我们可以找到错误发生的上下文和调用链。

6.使用断言:断言是一种在代码中插入的条件,用于检查程序执行过程中的假设和要求。

可以使用DEBUG工具中的断言功能,在关键的代码位置插入断言条件。

当断言条件不满足时,程序会执行中断操作,从而帮助我们快速定位错误。

7.进行追踪:追踪是一种记录程序执行过程的方法,可以在DEBUG工具中查看程序的执行轨迹。

追踪记录了程序的每一步操作,包括函数调用、条件语句的执行和变量的修改等。

通过追踪,我们可以逐步了解程序的执行情况,并找到错误所在。

8.使用条件断点:条件断点是一种在特定条件下触发断点的方法。

可以在DEBUG工具中设置条件断点,当满足特定条件时,程序会在断点处暂停执行。

条件断点可以帮助我们找出特定情况下的错误,提高调试的效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录DEBUG调试程序的应用1.直接启动DEBUG程序如在C盘的根目录下,启动的方法是:C:\>DEBUG_这时屏幕上会出现“_”提示符,等待键入DEBUG命令。

2.启动DEBUG程序的同时装入被调试文件命令格式如下:C:\>DEBUG [d:][PA TH]filename[.EXT][d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。

例如:BCDSUM.EXE可执行文件在A盘,用DEBUG对其进行调试的操作命令如下。

C:\>DEBUG A:\BCDSUN.EXE↙DOS在调用DEBUG程序后,再由DEBUG把被调试文件装入内存,当被调试文件的扩展名为COM时,装入偏移量为100H的位置,当扩展名为EXE时,装入偏移量为0的位置,并建立程序段前缀PSP,为CPU寄存器设置初始值。

3.退出DEBUG在DEBUG命令提示符“_”下键入Q命令,即可结束DEBUG的运行,返回DOS操作系统。

4.在DEBUG环境下建立和汇编程序在DEBUG环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。

比如,在DEBUG下运行如下程序:MOV DL,33H ;字符3的ASCII码送DLMOV AH,2 ;使用DOS的2号功能调用INT 21H ;进入功能调用,输出‘3’INT 20H ;BIOS中断服务,程序正常结束。

该程序运行结果是在显示器上输出一个字符‘3’。

如果要输出其它字符,请改变程序中‘33H’为相应字符的ASCII码。

其中涉及DOS和BIOS功能调用。

因为我们是在DOS的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入/输出指令直接通过端口输入/输出,而必须使用DOS内部提供的子程序完成输入/输出。

DOS功能调用就是为诸如此类的目的设置的。

DOS功能调用要求在进入INT 21H调用前,首先将功能调用号送AH寄存器,并根据功能调用号准备初始数据。

也就是说INT 21H 的2号功能调用是输出DL寄存器中的字符。

INT 20H是BIOS中断服务,这一软中断用来正常结束程序。

运行步骤:(1)进入DEBUG设C盘上有程序,进入DOS环境后键人DEBUG<ENTER>,即C:\>DEBUG随后屏幕显示:_“_”号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。

现在用A 命令输入程序如下:(2)输入程序并汇编_A 100169C:0100 MOV DL,33169C:0102 MOV AH,2169C:0104 INT 2l169C:0106 INT 20169C:0108至此程序已输入完毕,并汇编成机器指令。

现在用G命令运行程序如下:(3)运行程序_G3Program terminated normally如果现在想分析一下该程序的指令,可以用反汇编命令U作如下操作:(4)反汇编_U 100,108169C:0100 B233 MOV DL,33169C:0102 B402 MOV AH,02169C:0104 CD21 INT 21169C:0106 CD20 INT 20169C:0108(5)将机器指令程序送到起始地址为200H的若干单元_E 200 B2,33,B4,02,CD,21,CD,20(6)执行机器指令程序_G=2003Program terminated normally二、常用DEBUG命令DEBUG命令是在命令提示符“_”下由键盘键入的。

每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键(ENTER)。

命令及参数的输入可以是大小写的结合。

Crtl+Break键可中止命令的执行。

Crtl+NumLock键可暂停屏幕卷动,按任一键继续。

所用的操作数均为十六进制数,不必写H。

1.汇编命令A格式:(1)A <段寄存器名>:<偏移地址>(2)A <段地址>:<偏移地址>(3)A <偏移地址>(4)A功能:汇编命令是将用户输入的汇编语言指令,汇编为可执行的机器指令。

键人该命令后显示段地址和偏移地址并等待用户从键盘逐条键入汇编语言指令。

每当输入一行语句后按“ENTER”键,输入的语句有效。

若输入的语句中有错,DEBUG会显示“^ Error”,要求用户重新输入,直到显示下一地址时用户直接键入回车键返回到提示符“_”。

其中(1)用指定段寄存器内容作段地址;(3)用CS内容作段地址;(4)以CS:100作地址。

以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A命令后的地址形式。

2.比较命令C格式:C <源地址范围>,<目标地址>其中<范围>是由<起始地址><终止地址>指出的一片连续单元,或由<起始地址> L <长度>指定的。

功能:从<源地址范围>的起始地址单元起逐个与目标起始地址以后的单元顺序比较单元的内容,直至源终止地址为止。

遇有不一致时,以<源地址><源内容><目标内容><目标地址>的形式显示失配单元及内容。

3.显示内存单元命令D格式:(1)D <地址>(2)D <地址范围>(3)D其中(1)以CS为段寄存器;(3)显示CS:100为起始地址的一片内存单元内容。

功能:该命令将显示一片内存单元的内容,左边显示行首字节的段地址:偏移地址,中间是以十六进制形式显示的指定范围的内存单元内容,右边是与十六进制数相对应字节的ASCII码字符,对不可见字符以‘·’代替。

4.修改内存单元命令E格式:(1)E <地址><单元内容>(2)E <地址><单元内容表>其中<单元内容>是一个十六进制数,或是用引号’(或”)括起来的字符串;<单元内容表>是以逗号分隔的十六进制数,或是用’或”括起来的字符串,或者是二者的组合。

功能:(1)将指定内容写入指定单元后显示下一地址,以代替原来内容。

可连续键入修改内容,直至新地址出现后键入回车<ENTER>为止;(2)将<单元内容表>逐一写入由<地址>开始的一片单元中,该功能可以将由指定地址开始的连续内存单元中的内容,修改为单元内容表中的内容。

例如:_E DS:30 F8,AB,”AB”该命令执行后,从DS:30到DS:33的连续4个存储单元底内容将被修改为F8H,ABH,41H,42H。

5.填充内存命令F格式:F <范围><单元内容表>功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。

例如:F 05BC:200 L 10 B2,‘XYZ’,3C该命令将由地址05BC:200开始的10H(16)个存储单元顺序填充“B2,58,59,5A,3C,B2,58,59,5A,3C,B2,58,59,5A,3C,B2”6.连续执行命令G格式:(1)G(2)G=<地址>(3)G=<地址>,<断点>其中(2)、(3)中的“=”是不可缺省的。

功能:●默认程序从CS:IP开始执行。

●程序从当前的指定偏移地址开始执行。

●从指定地址开始执行,到断点自动停止并显示当前所有寄存器、状态标志位的内容和下一条要执行的指令。

DEBUG调试程序最多允许设置10个断点。

7.跟踪命令T格式:T [=<地址>][<条数>]功能:如果键入T命令后直接按“ENTER”键,则默认从CS:IP开始执行程序,且每执行一条指令后要停下来,显示所有寄存器、状态标志位的内容和下一条要执行的指令。

用户也可以指定程序开始执行的起始地址。

<条数>的缺省值是一条,也可以由<条数>指定执行若干条命令后停下来。

例如:T该命令执行当前指令并显示所有寄存器、状态标志位的内容和下一条要执行的指令。

又例如:T 10该命令从当前指令开始执行10H条指令后停下来,所有寄存器、状态标志位的内容和下一条要执行的指令。

8.反汇编命令U格式:(1)U <地址>(2)U <地址范围>功能:反汇编命令是将机器指令翻译成符号形式的汇编语言指令。

该命令将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。

注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。

地址及范围的缺省值是上次U指令后下一地址的值。

这样可以连续反汇编。

9.执行过程命令P格式:P功能:执行一条指令或一个过程(子程序),然后显示各寄存器的状态。

说明:该命令主要用于调试程序。

它与跟踪命令T的作用类似,T命令是跟踪一条或多条指令,而P命令是执行一条指令(包括带重复前缀的数据串操作指令)或一个完整的过程(子程序)。

例如:设有如下指令序列:MOV AH,02HINT 21H:当要执行INT 21H这条指令时,若用T命令进行跟踪,则进入INT 21H程序(DOS 功能调用)后,需要数十次T命令才能返回当前程序;若采用P命令进行调试,则只执行INT 20H一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。

因此,当读者以后遇到CALL、INT n指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用P命令。

10.定义待装入文件命令N格式:N [d:][PA TH]filename[.EXT]功能:N命令一般和L命令联合使用,为L命令定义指定路径的待装入文件。

11.装入文件命令L格式:L <地址><盘号><起始逻辑扇区><所读扇区个数n>其中<地址>的缺省值为CS:100。

逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:物理扇区是按0面0道1区,0面0道2区,…….0面0道9区,0面1道1区,……0面39道9区,1面0道1区,……l面39道9区排列。

而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道1扇区至9扇区,逻辑扇区号为0~8;物理扇区1面0道1扇区至9扇区,逻辑扇区号为9~11H;物理扇区0面1道l扇区至9扇区,逻辑扇区号为12~1AH……这样每道先0面后1面一直排下去。

其中<盘号>为0、1或2,0表示A盘,1表示B盘,2表示硬盘。

功能:将<盘号>指定的盘上,从<起始逻辑扇区>起,共n个逻辑扇区上的所有字节顺序读入指定内存地址的一片连续单元。

相关文档
最新文档