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使用方法简介
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[[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执行。
单步执行:点击Step Into(F7)这个箭头,或者直接按F7,以一行一行地操纵代码,从而判断程序的执行流程是否与预期一致。
查看变量值:在执行过程中,可以查看变量的当前值,以了解程序状态。
删除或禁用断点:选择要删除的断点,单击鼠标左键即可。
如果是多个断点,可以每一个再点击一次。
也可以一次性全部删除。
以上是使用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简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。
在汇编语言程序调试中很常用。
DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。
DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。
DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。
(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。
2、 Debug的调入和退出以Windows环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态,如:C:\Documents and Settings\mjy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。
退出Debug的命令:Q3、 Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。
若不指定地址,则系统从默认的地址开始存放。
按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。
(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。
若未指定寄存器,则默认为显示所有寄存器的内容。
应用:常用于通过寄存器的值查看指令的执行结果。
(3)内存单元内容的命令E,格式为:- E 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。
DEBUG的使用方法
DEBUG的使用方法1.设置断点:断点是在代码中设置的一个位置,程序在运行到这个位置时会暂停执行。
可以在关键的代码行上设置断点,以便在程序运行到这些位置时进行观察和调试。
在DEBUG工具中,我们可以在代码行上单击左侧的空白区域来设置断点。
2.执行步进:步进是一种按步执行程序的方法,可以逐行或逐过程执行代码。
通过逐行执行代码,可以观察每一行代码的执行情况,以便找出程序中的错误。
可以使用DEBUG工具提供的步进功能,一次执行一行代码或一个过程。
3.观察变量:在程序运行过程中,可以观察和监视变量的值,以便了解程序的状态。
可以使用DEBUG工具来查看变量的值,并在程序执行过程中跟踪变量的变化。
这对于发现变量值的改变和问题的根源非常有帮助。
4.输出调试信息:在调试过程中,可以通过在代码中插入输出语句来输出调试信息。
可以使用DEBUG工具提供的输出窗口或控制台来查看这些调试信息。
输出调试信息有助于了解程序的执行流程,找到错误发生的原因。
5.检查堆栈:堆栈是保存程序执行状态的一种数据结构,可以在DEBUG工具中查看和跟踪堆栈的状态。
堆栈信息可以告诉我们程序的执行路径,以及代码是如何调用和返回的。
通过检查堆栈,我们可以找到错误发生的上下文和调用链。
6.使用断言:断言是一种在代码中插入的条件,用于检查程序执行过程中的假设和要求。
可以使用DEBUG工具中的断言功能,在关键的代码位置插入断言条件。
当断言条件不满足时,程序会执行中断操作,从而帮助我们快速定位错误。
7.进行追踪:追踪是一种记录程序执行过程的方法,可以在DEBUG工具中查看程序的执行轨迹。
追踪记录了程序的每一步操作,包括函数调用、条件语句的执行和变量的修改等。
通过追踪,我们可以逐步了解程序的执行情况,并找到错误所在。
8.使用条件断点:条件断点是一种在特定条件下触发断点的方法。
可以在DEBUG工具中设置条件断点,当满足特定条件时,程序会在断点处暂停执行。
条件断点可以帮助我们找出特定情况下的错误,提高调试的效率。
《Debug常用命令的使用方法》
一、熟悉和掌握如下Debug常用命令的使用方法:R,D,E,A,U,T,P,G,QR 显示和修改寄存器的内容D 显示寄存器单元的内容E 显示和修改存储单元的内容A 汇编命令U 反汇编命令T 执行一条或多条指令P 逐条执行指令G 设置断点并启动运行被调试程序Q 结束并推出DEBUG程序二、熟悉和掌握在Debug中运用MOV、AND、OR、XOR、NOT指令进行二进制数实验题目一: 已知 a = 00111000B, b= 11000111B, 试求(1) a AND b(2) a OR b(3) a XOR b(4) NOT a实验内容: a AND b-A18AE:0100 MOV AL,3818AE:0102 MOV BL,C718AE:0104 AND AL,BL18AE:0106实验步骤:-RAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=18AE ES=18AE SS=18AE CS=18AE IP=0100 NV UP EI PL NZ NA PO NC 18AE:0100 B038 MOV AL,38-PAX=0038 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=18AE ES=18AE SS=18AE CS=18AE IP=0102 NV UP EI PL NZ NA PO NC 18AE:0102 B3C7 MOV BL,C7-PAX=0038 BX=00C7 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=18AE ES=18AE SS=18AE CS=18AE IP=0104 NV UP EI PL NZ NA PO NC 18AE:0104 20D8 AND AL,BL-PAX=0000 BX=00C7 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=18AE ES=18AE SS=18AE CS=18AE IP=0106 NV UP EI PL ZR NA PE NC 18AE:0106 0000 ADD [BX+SI],AL DS:00C7=0D实验小结:最终结果AL=0000即a AND b=0000三、熟悉和掌握在Debug中运用MOV、ADD、SUB、DAA、DAA指令进行二进制数(补码)、BCD数的加减运算,并注意观察记录标志位的变化情况。
debug+的使用
如果想知道内存10000H处的内容,可以用"d 段地址:偏移 地址"的格式来查看,如输入 -d 1000:0 使用 d 1000:9查看1000:9处的内容。 使用 d 1000:0 9查看1000:0-1000:9的内容 一进入Debug,可直接使用D命令直接查看,将列出Debug预设 的地址处开始128个字节单元的内容
汇汇编编语语言言程程序序设设计计实验
四、Debug常用命令
? 显示 Debug 命令列表。
T 执行一条指令,然后显示
R 显示或改变一个或多个寄 所有寄存器的内容
存器的内容
P 执行循环、重复的字符串
D 显示查看内存中的内容。 指令、软件中断或子例程。
E 从指定地址开始,将数据输 不跟踪内部。
入到内存,即改写内存的内容。
汇汇编编语语言言程程序序设设计计实验
3、E命令
格式: E <地址> [<单元内容表>] (1) E <地址>
功能: 不断显示地址,可连续键入修改内容,直至新地址出现后 键入回车Enter为止。 (2) E <地址> <单元内容表> 其中<单元内容表>是以空格分隔的十六进制数,或用’或” 括起来的字符串,或者是二者的组合。
功能:将<单元内容表>逐一写入由<地址>开始的一片单元。 如将内存1000:0-1000:9单元中的内容分别写为0、1、2、3、
实验一 DEBUG的使用
源程序:MOV AL,30H
MOV BL,26H
ADD AL,BL
PUSH AX
POP DX
MOV AH,02H
INT常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
0AF4:0108 int 21
0AF4:010Amov dl,43
0AF4:010Cint 21
0AF4:010E int 20
0AF4:0110
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF4 ES=0AF4 SS=0AF4 CS=0AF4 IP=0100 NV UP EI PL NZ NA PO NC
:0206 CD20 INT 20H ;结束
步骤:a.用E命令将目标代码写入内存CS:0200H~0207H
—E DS:200 B2,33,B4,02,CD,21,CD,20
b.用G命令从200H开始执行。
—G=CS:200
屏幕显示:
3
Program terminated normally.
—
c.用U命令反汇编
(2)用键盘,将AX,BX,CX,DX及DS,ES清0。
2.简单程序的执行:
(1)用E命令输入一段程序并执行,其源程序,目标代码及地址分配如下:
CS:0200 B233 MOV DL,33H ;将十六进制数‘33’存入DL中
:0202 B402 MOV AH,02H ;DOS2号功能调用
:0204 CD21 INT 21H ;屏幕显示DL内容
debug命令的使用
实验 DEBUG命令的应用一实验要求熟悉DEBUG的应用,利用DEBUG观察寄存器的值,掌握直接汇编指令,单步调试,编辑数据等指令,为学习指令系统打好基础。
二实验步骤DEBUG程序是DOS操作系统为汇编语言程序设计者和系统管理员提供的一个通用调试工具,使用DEBUG可以直接深入到计算机系统内部,读写CPU各寄存器或存储器单元内容,并可以直接访问接口和外设的寄存器。
DEBUG的功能可分为下面几类:(1)读写、比较和显示存储器单元内容;(2)在存储器之间,存储器与磁盘之间传送数据和程序;(3)在指定存储单元中添充数据或字符串,在指定范围内查找数据或字符串;(4)设置程序起始执行地址或断点,执行程序或分段执行程序;(5)跟踪程序执行,显示处理器状态;(6)汇编或反汇编源程序;DEBUG只使用十六进制表示数据(十六进制数后不能加H),但所有数据在内存中均以二进制形式存放和运算。
DEBUG只有几十条单字母命令,功能强且易掌握,下面介绍DEBUG命令的使用方法。
(说明:下面的”< >”表示命令的一项参数,“[ ]”表示该选项为可选项。
)1、DEBUG 的进入和退出:(1)进入DEBUG的两种方法:方法一:在DOS提示符下直接键入:C> DEBUG↙(回车符)DEBUG即被调入内存并启动运行,显示DEBUG的提示符“—”。
方法二:在DOS提示符下,键入:C> DEBUG 文件名(回车符)DEBUG即被调入内存并启动运行,然后将指定的文件调入内存,并显示DEBUG 提示符“—”。
由于DEBUG可以将任一文件调入内存,所以“文件名”必须写全称,若有扩展名一定要输入扩展名。
(2)退出DEBUG时,键入命令:—Q↙就可从DEBUG状态返回DOS。
2、汇编与反汇编命令:汇编命令A和反汇编命令U是DEBUG下常使用的命令。
(1)汇编命令A格式:A [<起始地址>]功能:逐行汇编程序,主要用于小段汇编程序。
debug的基本使用
debug的基本使用
Debug是一种在软件开发过程中用于调试程序的工具。
它可以帮助开发人员找到程序中的错误并进行修复,从而提高程序的质量和稳定性。
下面将介绍Debug的基本使用方法。
1. 设置断点
断点是Debug中最常用的功能之一。
它可以让开发人员在程序执行到指定位置时暂停程序,以便进行调试。
设置断点非常简单,只需要在
代码行号左侧单击鼠标即可。
2. 运行程序
设置好断点后,就可以运行程序了。
在运行过程中,程序会执行到第
一个断点处停止。
此时可以查看变量值、函数调用栈等信息来分析问题。
3. 单步执行
单步执行是指逐条执行代码,并查看每个语句的效果。
这个功能非常
有用,因为它能够帮助开发人员深入了解代码的执行过程,并找出可
能存在的错误。
4. 监视变量
监视变量可以让开发人员实时查看变量值的变化情况。
当某个变量值发生改变时,Debug会自动提示开发人员,并显示新值和旧值之间的差异。
5. 调试崩溃
当程序崩溃或出现异常时,Debug可以帮助开发人员快速定位问题。
在这种情况下,开发人员可以使用Debug来查看程序的状态、变量值等信息,并找出导致程序崩溃的原因。
总之,Debug是一种非常有用的工具,它可以帮助开发人员快速定位问题并进行修复。
掌握Debug的基本使用方法对于提高软件质量和稳定性非常重要。
数字电子技术:汇编_DEBUG的使用
3.连接
所谓连接是用连接程序LINK.EXE把若干个经汇编后产生的.OBJ文件及 指定的库文件连接起来,产生可执行的.EXE文件。
4.调试
返回
4C号功能调用
功能:退回到DOS(操作系统)状态
入口参数:无 出口参数:无
该号功能调用等价于INT 20H中断
4C号功能调用举例
-A mov ah,4c;退出DEBUG,回到DOS int 21 -G;执行程序命令
该程序什么也不做,直接退回到DOS状态。
1号功能调用
功能:从键盘上读入一个字符,并将该
9号功能调用举例 -A mov dx,10B;dx=字符串的首地址
mov ah,09 ;调用9号显示字符串的功能号
int 21h
mov ah,4c ;退出DEBUG,回到DOS int 21
10B:db ‘hello’,’$’ ;注意需要以‘$’为结 束符 -G ;连续执行程序命令
例题
要求:
常用的DOS功能调用
书本的第8章专门讲述中断程序设计 而在讲第 8 章以前,我们需要用到几个常用
的DOS功能调用,所以这里先简单介绍几个 使用方法:
1.设置入口参数(有些不需要设置的就不设置) 2.功能调用号送AH寄存器 3.发软中断指令“INT 21H”
段寄存器CS、DS、ES和SS置为DEBUG程序后
的第一个段。 指令指针寄存器IP置为100H(程序段前缀 PSP后的第一个语句) 堆栈指针SP置为堆栈段的段末 其余通用寄存器均置为0 ,标志寄存器置为 下述状态:NV UP EI PL NE NA PO NC 如果 DEBUG 命令行含有文件名,段寄存器 DS 和ES指向程序段前缀PSP(Program Segment Prefix) ,寄存器BX和CX含有程序长度
Debug的使用(1)
实验二Debug的使用(一)一、实验要求和目的1.熟悉Debug环境。
2.掌握常用Debug命令的基本操作。
二、软硬件环境1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。
三、实验涉及的主要知识单元在以后所有的实验中,都将用到Debug程序,首先学习一下它的主要用法。
(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
Debug的命令比较多,共有20多个,但上述6个命令是和汇编语言学习密切相关的。
在以后的实验中,我们还会用到一个P命令。
(3) 进入DebugDebug是在DOS方式下使用的程序。
我们在进入Debug前,应先进入到DOS方式。
用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。
②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。
下面说明在Windows XP中进入Debug的一种方法,在Windows 98中进入的方法与此类似。
单击【开始】菜单中的【运行】命令,打开【运行】对话框,在文本框中输入“command”后,单击【确定】按钮。
图2-1 选择【运行】命令图2-2 在文本框中输入“command”进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变为全屏方式。
Java中debug的使用
Java中debug的使⽤
debug的好处:
1.跟踪变量,可以查看变量的值的变化
2.迅速找到错误的原因,节省时间,找错⼩帮⼿
在错误信息提⽰的java页⾯或者你认为有问题的java页⾯,的左侧显⽰⾏的地⽅,⽤⿏标点击⼀下,出现⼀个点,这个就是打断点;
这个断点可以打多个,这个断点的意义就是,当你启动程序的时候(记住是debug启动),程序执⾏到这⼀步的时候,就会停在这⾥,⽽且程序没有关闭;
点击debug server启动程序以后,回到页⾯上,重复刚才点击出现错误信息的操作,这样才能知道哪⾥有问题,进⼊调试
这⾥有⼏个快捷键 f6 f8 f5
1.表⽰当前实现继续运⾏直到下⼀个断点,快捷键为F8。
2.表⽰打断整个进程
3.表⽰进⼊当前⽅法,快捷键为F5。
4.表⽰运⾏下⼀⾏代码,快捷键为F6。
5.表⽰退出当前⽅法,返回到调⽤层,快捷键为F7。
6.表⽰当前线程的堆栈,从中可以看出在运⾏哪些代码,并且整个调⽤过程,以及代码⾏号。
DEBUG命令的功能及使用
实验一DEBUG命令的功能及使用DEBUG的主要命令功能与格式1. 汇编命令A格式:A [[<段寄存器名>/<段地址>:] <段内偏移>]上式等价于:(1)A <段寄存器名>:<段内偏移>(2)A <段地址>:<段内偏移>(3)A <段内偏移>(4)A功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。
注:其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。
以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。
2. 显示内存命令D格式:D [<地址>/<范围>]上式等价于:(1)D <地址>(2)D <范围>(3)D功能:以两种形式显示指定范围的内存内容。
一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以‘.’代替。
注:其中(1)以CS为段寄存器。
(3)显示CS:100起始的一片内容。
3. 修改内存命令E格式:E <地址> [<单元内容表>]上式等价于:(1)E <地址>(2)E <地址> <单元内容表>其中<单元内容表>是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。
功能:(1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter为止。
(2)将<单元内容表>逐一写入由<地址>开始的一片单元。
4. 填充内存命令F格式:F <范围> <单元内容表>功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。
Debug 的使用方法 及个别汇编指令的含义
Debug-PC之开山老祖Debug 原意是杀虫子。
这里是机器调试工具。
其实,Debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。
同时,许多台大型的计算机也在不停的运行着。
大概是由于,机器过热,引来许的小虫子,以至于,计算机无法正常运行。
科学们,只好停下来,捉虫子...虫子捉完了,计算机运行也正常了,后来,这个名词就沿用至今了....虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!接下来,我们就一起学习Debug在各方面的运用吧!(在杀毒、加解密、系统...)下面我和大家一起学习一些,Debug 的用法,虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!Debug常用命令集名称解释格式a (Assemble) 逐行汇编a [address]c (Compare) 比较两内存块c range addressd (Dump) 内存16进制显示d [address]或d [range]e (Enter) 修改内存字节e address [list]f (fin) 预置一段内存f range listg (Go) 执行程序g [=address][address...]h (Hexavithmetic) 制算术运算h value valuei (Input) 从指定端口地址输入i pataddressl (Load) 读盘l [address [driver seetor]]m (Move) 内存块传送m range addressn (Name) 置文件名n filespec [filespec...]o (Output) 从指定端口地址输出o portadress byteq (Quit) 结束qr (Register) 显示和修改寄存器r [register name]s (Search) 查找字节串s range listt (Trace) 跟踪执行t [=address] [value]u (Unassemble) 反汇编u [address ]或rangew (Write) 存盘w [address[driver sector secnum]]? 联机帮助?debug小汇编a命令debug小汇编a命令是一个很有用的功能,许多的小程序都要他来做。
实验二 DEBUG使用方法
实验二DEBUG使用方法一、实验目的1.熟悉DEBUG提供的调试环境。
2.学习使用Debug的常用命令,汇编、运行小段程序。
3.学习8088/8086的寻址方式、指令功能。
观察计算机执行简单程序的工作过程。
二、实验内容与操作指导Debug子命令的功能与使用格式见上章的列表介绍。
下面通过8个程序小段实例,学习其用法。
(一)由DOS进入DEBUG调试环境1.点击”开始”→程序→附件→命令提示符→DEBUG ↵将调试程序装入内存注意:当机器控制权由DOS成功地转移给调试程序后,将显示“—”号,它是debug的状态提示符,表示可以接受调试子命令了。
2. —R↵显示CPU中各寄存器当前初始内容。
请记录于下列各项,后面实验将用到。
AX= BX= CX= DX= BP= SI= DI=DS= ES= SS= SP= CS= IP=(1)此时,调试工作区的4个段值相同,指向同一起点。
表明共用一个64KB空间。
(2)SS:SP指向堆栈顶单元。
SP为FFFE或FFEE,正好是本段的最高可用地址。
表明堆栈自动使用最高地址,栈区由底往上(低址方向)生长。
(3)CS:IP为约定的调试工作区地点(IP=0100),可由此装入待调试程序代码,或汇编键入的程序小段。
工作区由(低址)往下使用。
(4)Debug用符号给出寄存器中8个标志位的当前状态。
其含义如下表所示。
(5)当运行程序至断点处停下时,或单步多步跟踪执行指令时,Debug均显示各寄存器的当时内容,便于及时观察结果。
(二)汇编运行小段程序1.1求和运算给程序1.1人工直接给寄存器赋初值(1) 给AX、BX赋值—RAX ↵AX 显示AX当前内容:FDAA 键入被加数—RBX ↵BX 显示BX当前内容:FBCE 键入加数(2) 汇编小段程序。
注意:每行指令后用回车结束,机器即进行汇编,出错将有提示。
调试状态下操作数的输入和显示均为HEX十六进制,故不必加后缀H。
—ACS:100 ↵:0100 ADD AX,BX ;求和:0102 MOV CX,AX ;转存和数:0104 INT 20 ;结束程序(软中断调用):0106 ↵;结束汇编—R ↵查看各寄存器内容。
Debug的使用方法
显示存储单元的命令D(DEBUG)
格式为: - D[address] 或 - D[range] 例如,按指定范围显示存储单元内容的方法为:
-D 100 120 067C:0100 067C:0110 067C:0120 ( 或 D 100 L21 ) C7 D7 0D 0A 32 33 33 34 - D5 C5 B4 C6 30 10 42 0C 03 41 42 43 44 45 46 47 - 48 49 4A 4B 4C 4D 4E 4F 8B ....2334....0.B. .ABCDEFGHIJKLMNO
装入命令L(Load)
1. 把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中
格式: -L[address [drive sector sector]] 2. 装入指定文件 格式: -L[address] 此命令装入已在CS:5CH中格式化了的文件控制块所指定的文件。 如未指定地址,则装入CS:0100开始的存储区中。
运行命令G(Go)
格式: -G [=address1][address2[address3 ...]] 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。 后面的地址均为断点地址,当指令执行到断点时,就停止执行 并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
检查和修改寄存器内容的命令R(Register)
2. 显示和修改某个寄存器内容
格式: -R register_name
例如,
- r ax
系统将响应如下:
AX F1F4 :
即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,键入欲修改的内容如:
- r bx BX 0369 :059F
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址: 偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
如果没有提供偏移地址,则通常就是当前偏移地址。
对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址结束地址”(结束地址不能具有段地址),或者是:“开始地址L字节长度”。
三、DEBUG子命令1、显示命令DD(Dump)命令显示主存单元的内容,它的格式如下(注意分号后的部分用于解释命令功能,不是命令本身):D [地址];显示当前或指定开始地址的主存内容D [范围];显示指定范围的主存内容例如,显示当前(接着上一个D命令显示的最后一个地址)主存内容:左边部分是主存逻辑地址,中间是连续16个字节的主存内容(16进制数,以字节为单位),右边部分是这16个字节内容的ASCII字符显示,不可显示字符用点“.”表示。
一个D命令仅显示“8行×16个字节”(80列显示模式)内容。
再如:-d 100 ;显示数据段100h开始的主存单元-d cs:0 ;显示代码段的主存内容-d 2f0 L 20 ;显示ds:2f0h开始的20h个主存数据2、修改命令EE(Enter)命令用于修改主存内容,它有两种格式:E 地址;格式1,修改指定地址的内容E 地址数据表;格式2,用数据表的数据修改指定地址的内容格式1是逐个单元相继修改的方法。
例如,键入“e ds:100”,Debug显示原来内容,用户可以直接输入新数据,然后按空格键显示下一个单元的内容,或者按“-”键显示上一个单元的内容;不需要修改可以直接按空格或“-”键;这样,用户可以不断修改相继单元的内容,直到用回车键结束该命令为止。
格式2可以一次修改多个单元,例如:-e ds:100 F3`XYZ`8D ;用F3/`X`/`Y`/`Z`/8D这5个数据替代DS:0100 ~ 0104的原来内容3、填充命令FF(Fill)命令用于对一个主存区域填写内容,同时改写原来的内容,其格式为:F 范围数据表该命令用数据表的数据写入指定范围的主存。
如果数据个数超过指定的范围,则忽略多出的项;如果数据个数小于指定的范围,则重复使用这些数据,直到填满指定范围。
4、寄存器命令RR(Register)命令用于显示和修改处理器的寄存器,它有三种格式。
R;格式1,显示所有寄存器内容和标志位状态例如,当我们刚进入Debug时,就可以执行该命令,显示示例如下:其中,前两行给出所有寄存器的值,包括各个标志状态。
最后一行给出了当前CS : IP 处的指令;由于这是一个涉及数据的指令,这一行的最后还给出相应单元的内容。
R 寄存器名;格式2,显示和修改指定寄存器例如,键入“r ax”,Debug给出当前AX内容,冒号后用于输入新数据,如不修改则按Enter键。
RF;格式3,显示和修改标志位Debug将显示当前各个标志位的状态。
显示的符号及其状态如表F1.1所示,用户只要输入这些符号就可以修改对应的标志状态,键入的顺序可以任意。
5、汇编命令A汇编命令A(Assemble)用于将输入的汇编指令汇编成为机器代码保存于主存。
A [地址];从指定地址开始汇编指令A命令中如果没有指定地址,则接着上一个A命令的最后一个单元开始;若还没有使用过A命令,则从当前CS : IP开始。
输入A命令后,就可以输入8086指令,Debug将它们汇编成机器代码,相继地存放在指定地址开始的存储区中,记住最后要输入一个回车结束A命令。
进行汇编的步骤如下:①输入汇编命令A [地址],按回车。
Debug提示地址,等待你输入新指令;②输入汇编指令,按回车;③如上继续输入汇编指令,直到输入所有指令;④不输入内容就按回车,结束汇编,返回Debug的提示符状态。
A命令支持标准的8086(和8087浮点)指令系统以及汇编语言语句格式,但要注意以下一些规则:•所有输入的数值都是16进制数;•段超越指令需要在相应指令前,单独一行输入;•段间(远)返回的助记符要使用RETF;•A命令也支持最常用的两个伪指令DB和DW。
6、反汇编命令U反汇编命令U(Unassemble)将主存内容按照机器代码形成汇编指令显示:U [地址];从指定地址开始,反汇编32个字节(80列显示模式)U 范围;对指定范围的主存内容进行反汇编U命令中如果没有指定地址,则接着上一个U命令的最后一个单元开始;若还没有使用过U命令,则从当前CS : IP开始。
屏幕显示的左边是主存逻辑地址,中间是该指令的机器代码,而右边则是对应的指令汇编格式。
7、运行命令G运行命令G(Go)从指定地址处开始运行程序,直到遇到断点或者程序正常结束。
G [=地址] [断点地址1,断点地址2,...,断点地址10]G命令等号后的地址指定程序段运行的起始地址,如不指定则从当前的CS : IP开始运行。
断点地址如果只有偏移地址,则默认是代码段CS;断点可以没有,但最多只能有10个。
程序遇到断点(实际上就是断点中断指令INT 3),停止执行,并显示当前所有寄存器和标志位的内容、以及下一条将要执行的指令(显示内容同R命令),以便观察程序运行到此的情况。
程序正常结束,将显示“Program terminated normally”。
注意,G命令以及后面的T和P命令要指向正确的指令代码,否则会出现不可预测的结果,例如“死机”。
8、跟踪命令T跟踪命令T(Trace),也称为单步命令,每执行一条指令就显示运行结果,使程序员可以细致地观察程序的执行情况。
T [=地址];逐条指令跟踪T [=地址] [数值];多条指令跟踪从指定地址起执行一条或数值参数指定条数的指令后停下来,每条指令执行后都要显示所有寄存器和标志位的值以及下一条指令。
如未指定地址则从当前的CS : IP开始执行。
注意给出的执行地址前有一个等号,否则会被认为是被跟踪指令的条数(数值)。
T命令逐条指令执行程序,遇到子程序(CALL)或中断调用(INT n)指令也不例外,也会进入到子程序或中断服务程序当中执行。
9、继续命令P继续命令P(Proceed)类似T命令,逐条执行指令、显示结果。
但是当遇到子程序调用、中断功能调用和循环指令等时,不在子程序、中断服务程序或循环体中单步执行,而是直接执行完成子程序、中断服务程序或循环体,然后显示结果。
当不需要调试子程序、中断服务程序或循环程序段时,要应用P命令,而不是T命令。
P [=地址] [数值]10、退出命令Q退出命令Q(Quit)使Debug程序退出,返回DOS。
Q命令并无存盘功能,可使用W命令存盘。
11、命名命令N命名命令N(Name)把一个或两个可以包含路径的文件全名存入Debug中,以便在其后用L或W命令把文件装入或存盘。
N 文件名1[,文件名2]12、装入命令L装入命令L(Load)将磁盘中的文件或扇区内容装载到主存中。
L [地址];格式1:装入由N命令指定的文件格式1的L命令装载一个文件到给定的主存地址处。
L 地址驱动器扇区号扇区数;格式2:装入指定磁盘扇区范围的内容格式2的L命令装载磁盘的若干扇区(最多80h)到给定的主存地址处;缺省段地址是CS。
其中,0表示A盘,1表示B盘,2表示C盘,……。
13、写盘命令W写盘命令W(Write)主存内容写入磁盘的文件或扇区中,与L命令相反。
W [地址];格式1:将由N命令指定的文件写入磁盘格式1的W命令将指定开始地址的数据写入一个文件(这个文件应该已经用N命令命名);如未指定地址则从CS : 100开始。
要写入文件的字节数应先放入BX(高字)和CX(低字)中。
如果采用这个W命令保存你的可执行程序,它的扩展名应是COM;它不能写入具有EXE和HEX扩展名的文件。
W 地址驱动器扇区号扇区数;格式2:把数据写入指定磁盘扇区范围格式2的W命令将指定地址的数据写入磁盘的若干扇区(最多80H);如果没有给出段地址,则缺省是CS。
其他说明同L命令。
由于格式2的W命令直接对磁盘写入,没有经过DOS文件系统管理,所以一定要小心,否则可能无法利用DOS文件系统读写14、其它命令①比较命令C(Compare)C 范围地址;将指定范围的内容与指定地址内容比较②16进制数计算命令H(Hex)H 数字1,数字2 ;同时计算两个16进制数字的和与差③输入命令I(Input)I 端口地址;从指定I/O端口输入一个字节,并显示④输出命令O(Output)O 端口地址字节数据;将数据输出到指定的I/O端口⑤传送命令M(Move)M 范围地址;将指定范围的内容传送到指定地址处⑥查找命令S(Search)S 范围数据;在指定范围内查找指定的数据⑦帮助命令??;显示各命令的简要说明。