当前位置:文档之家› DEBUG使用方法

DEBUG使用方法

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

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

相关命令-A (汇编,Assemble)-C (比较,Compare)-D (卸出,Dump)-E (输入数据,Enter))-F (填充,Fill)-G (执行,Go)-H (十六进行运算,Hex)-I (读输入口,Input)-L (装入,Load)-M (移动,MOVE)-N (命令,NAME)-O (写输出口,OUTPUT)-P (调试循环程序,PROCEED)-Q (退出,QUIT)-R (寄存器,REGISTER)-S (找寻,SEARCH)-T (跟踪,TRACE)-U (反汇编,UNASSEMBLE)-W (写盘,WRITE)-XA (分配扩充内存,ALLOCATE EM)-XD (释放分配的扩充内存,DEALLOCATE EM)-XM (扩展内存页影像,MAP EXM PAGES)-XS (显示扩充内存状态,DISPLAY EM STATUS)二、注意事项不指定调试文件名时DEBUG命令的使用。

使用DEBUG命令时,如果未指定调试文件的所在位置及名子,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(地址)参数指定内存中的地址。

地址分两部分,一部分是段寄存器字母或4位的段地址,另一部分为偏移地址。

其中,段寄存器或段地址可以省略。

对命令A,G,L,T,U,W,默认段为CS,对所有其余命令,默认段为DS。

所有数值都为十六进制。

以下为有效地址:CS:010004BA:0100注意,在段名和偏移值之间要加冒号。

指定有效地址范围。

调试命令中的range(范围)参数指定内存中的地址范围。

地址范围有两种格式:开始地址和结束地址;开始地址和范围长度(由L指定)。

例如:从CS:100开始,到10F结束,共16字节范围,可使用两种格式说明:CS:100 10FCS:100 1 10DEBUG:A (汇编)一、概述直接汇编8086/80878088汇编语言源程序,汇编结果放内存。

本命令将汇编语言语句转换成执行的机器码,语句中所有操作数据均为16进制,由1到4个字符组成。

格式:A[address]参数address指定输入汇编语言语句的地址。

地址为16进制数但实际输入时结尾不必加字符“h”,如果不指定地址,命令A将从上一次汇编结束地的地址开始。

相关命令有关在指定地址输入数据的具体说明,参阅DEBUG E命令有关反汇编的具体说明,参阅DEBUG U命令。

二、注意事项使用助记符地址段名助记符为CS:,DS:,ES:,SS:。

远程返回助记符为RETF。

字符串处理助记符必须根据其处理的字符串的长度选择使用。

例如,移动字串(16bits)使用MOVSW,移动字节串(8bits)使用MOVSB。

转移语句和子程序调用的汇编汇编命令将根据语句中地址字节移动自动汇编短,近,远转移或调用,生成目标地址。

用户也可以使用前缀NEAR或FAR直接说明这类转移或调用。

例如:-a0100:05000100:0500 jmp 502 ;2字节短转移,生成2字节目标地址。

0100:0502 jmp near 505 ;3字节近转移,生成4字节目标地址。

0100:0505 jmp for 50a ;5字节远转移,生成8(段+偏移)字节目标地址。

前缀NEAR可以省略为NE。

字内存地址和字节内存地址的区分当仅从操作数本身不能区分究竟是字内存地址还是字节内存地址是地,必须用前缀WORD PRT(字)或BYTE PTR(字节)指字其类型。

两者可省略为WO和BY,例如:dec wo[si]neg byte ptr[128]指定操作数DEBUG按常规认方括号内的操作为内存地址。

否则,为立即数。

例如:mov ax ,21 ;把数值21装入AXmov ax,[21] ;把内存21H单元的内容装入AX使用伪指令A命令使用常用的两个伪指令:DB和DW。

DB汇编字节,DW汇编字。

汇编后生成的值存入内存(分别以字节和字为单位存放)。

例如:db 1,2,3,4, "this is an example"db 'this ia a quotation mark:"db "this is a quoutation mark:'"dw 1000,2000,3000,"BACH"三、应用举例A命令支持所有各种形式的寄存器间接寻址指令,例如:add bx, 34[pb+2].[si-1]pop[bp+di]push[si]A命令支持同义操作代码,例如:loopz 100loope 100ja 200jnbe 200使用8087操作代码时,应加前缀WAIT或FWAIT,例如:fwait fadd st,st(3) ;this line assembles;ar fwait prefixDEBUG: C (比较)一、概述比较丙块内存的内容格式C range address参数range指定待比较的第一块内存的起始和结束地址,或其起始地址和长度。

有关本参数有效值的说明,参阅DEBUG命令。

address指定待比较的第二块内存的起始和结束地址,或其起始地址和长度。

有关本参数有效值的说明,参阅DEBUG命令。

二、注意事项如果比较的两块内存内容相同,DEBUG不显示任何信息,只返回DEBUG提示符,如果比较的内容有差别,将以下格式显示这些差别。

address1 byte1 btye2 address2三、应用举例以下两条命令的执行结果相同:cl100,10f 300c100L10 300两条命令都比较从100h到10Fh和从300h到30Fh的两块内存的内容。

DEBUG执行这两条命令时将显示与下面相似的信息(假定DS=197F):197F: 1000 4D E4 194F:0300197F: 0101 67 99 197F:0301197F: 0102 A3 27 194F:0302197F: 0103 35 F3 194F:0303197F: 0104 97 BD 197F:0304197f: 0105 04 35 197F:0305197F: 0107 76 71 197F:0307197F: 0108 E6 11 197F:0308197F: 0109 19 2C 197f:0309197F: 010A 80 0A 197F:030A197F: 010B 36 7F 197F:030B197F: 010C BE 22 197F:030C197F: 010D 83 93 197F:030D197F: 010E 49 77 197F:030E197F: 010F 4F 8A 197F:030F注意上表中缺地址197F:0106和197F:0306,这表示两个地址存放的数值相同。

DEBUG:D (卸出)一、概述显示指定范围内存的内容格式D[range]range指定要显示其内容的内存的起始地址和结束地址,或起始地址和长度。

有关范围有效值的说明,参阅DEBUG命令。

如未指定范围,将从上一次D命令显示的结束地址开始,显示128字节的内容。

相关命令有关寄存器内容的显示,参阅DEBUG R命令。

有关反汇编的说明,参阅DEBUG U命令。

二、注意事项D命令显示的内存内容分为两部分:十六进制值部分(字节值都显示十六进制的格式)和ASCII字符部分(显示与字节值对应的ASCII字符),无法显示的字符用圆点(.)表示每一行显示行显示16字节的内容,第8和第9字节间用短横线(-)隔开,每一显示行都从16字节边界处开始显示。

三、应用举例假设打入如下命令:dcs:100 10fDEGUG将显示类似如下格式的内容:04BA: 0100 54 4F04D000F53 41 57 59-52 00 00 00 00 00 00 TOM.SAWYERM......如随后再打入D命令但不指定范围,DEGUG将紧接着上次显示的最后地址(110)开始显示内存内容,格式同上;每一显示行显示的起始地址都比上一行的大16字节(如显示器屏幕为40列,则大8字节)。

如输入如下命令,DEGUG将从cs:100开始,显示20H字节内容:dcs:100 L 20(命令中L可为小写)如输入如下命令,DEGUG将显示CS段内从100H开始到115H为止的内容:dcs:100 115DEGUG: E (输入数据)一、概述输入数据到指定内存。

输入的数据可为16进制数,也可为ASCII字符。

指定内存在输入新数据后,原先的内容丢失。

E address[list]参数address指定要输入数据的第一个内存单元。

list指定要输入到内存连续单元的数据。

可以是一串16进制数或字符。

相关命令有关汇编命令的说明,参阅DEGUG A命令。

有关内存内容显示的说明,参阅DEGUG D命令。

二、注意事项使用address参数如果指定了地址但未指定LIST,DEGUG显示指定地址及其内容,等待用户输入。

此时,用户可作如下操作:输入新值。

相关主题