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命令的使用
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使用方法简介
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命令的使用实验一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使用总结
一、DEBUG的主要命令A命令功能: 将助记符指令转换为机器指令码存储在指定的内存单元,即汇编过程格式1: Axxxx:0100 助记符指令1(ENTER)xxxx:xxxx 助记符指令2(ENTER)……xxxx:xxxx ENTER结束功能: 逐次将助记符指令对应的指令码存入从CS: 0100h起的连续的内存单元格式2:A 起始地址start-addrxxxx:0100 助记符指令1(ENTER)xxxx:xxxx 助记符指令2(ENTER)……xxxx:xxxx ENTER结束功能: 逐次将助记符指令对应的指令码存入从CS: star-addr起的连续的内存单元注: 指令中可以包含数据定义伪指令DB/DW等语句D命令功能: 查看指定内存单元的内容格式1: D [起始地址start-addr [L长度length]]功能: 显示从起始地址start-addr开始的length个字节,省略start-addr时从DS:0100h开始,省略长度length时默认值为80H(128)注: start-addr可以为偏移地址, 此时其默认的段基址为DS;也可以显式地按段地址:偏移地址格式指明完整的逻辑地址, 段地址不一定是段寄存器, 还可以是任意16位地址格式2: D[起始地址start-addr 终结地址end-addr]功能: 显示从起始地址start-addr开始到结束地址end-addr之间的字节注: start-addr和end-addr同时为偏移地址时默认的段基址为DS;start-addr采用段地址:偏移地址格式指明时, end-addr可以不必再指明段地址, 直接以偏移地址形式给出(start-addr和end-addr的段地址始终相同);当start-addr和end-addr的偏移地址相同时只显示该存储单元的字节.E命令功能: 修改指定内存单元的内容格式1: E 起始地址start-addr 字节数据1 字节数据2 … 字节数据n功能: 逐次用后面的字节数据修改从起始地址起的连续内存单元的内容格式2: E 起始地址start-addr(按ENTER)起始地址该内存单元的原值.待输入新值/空格键功能:在提示情况下逐个修改从起始地址start-addr开始的字节数据的值, 输入空格表示不做修改, 直至输入ENTER键结束G命令功能: 执行正在调试的汇编程序至指定的断点格式: G [start-addr] break-addr1[, break-addr2, …]功能:star-addr是指令码的起始偏移地址, break-addr是断点处的偏移地址, 段地址均为CS, 可以指定多个断点位置P命令功能: 执行INT, CALL, LOOP及重复串指令(REP等)直至下一条指令格式: P [start-addr] [n]功能:star-addr是待执行指令码的起始偏移地址, n是往下执行指令的条数Q命令功能: 退出debug格式: QR命令功能:显示和修改寄存器的内容格式1:R;显示所有寄存器的内容格式2: R 寄存器名;显示指定寄存器的值, 再按ENTER后键入数值可修改该寄存器的值格式3:R F;显示标志寄存器中各标志位的值标志位符号的意义如下:标志位符号意义标志位1标志位0OF 溢出(是/否) OV NVDF 方向(减/增) DN UPIF 中断(允许/关闭)EI DISF 符号(负/正) NG PLZF 零(是/否) ZR NZAF 辅助进位(是/否)AC NAPF 奇偶(偶/奇) PE POCF 进位(是/否) CY NCT命令功能: 以单步方式执行指定的指令代码格式1: T功能: 以单步方式执行从CS:IP开始的1条指令格式2: T 指令条数n功能: 以单步方式执行从CS:IP开始开始的n条指令U命令功能: 将内存单元的机器指令码转换为助记符指令,即反汇编过程格式1: U 起始地址start-addr功能: 将从start-addr开始的32个字节的指令码转换为助记符格式2: U 起始地址start-addr终结地址end-addr功能: 将从start-addr开始至终结地址end-addr之间的指令码转换为助记符二、DEBUG的相关说明1.debug默认所有的数值都是16进制的,且无需在最后添加后缀h;2.debug不区分字母的大小写;3.快捷键: F1键--逐个重复前一条命令的字符,F3键--重复前面整条命令;4.在dos系统中文件名的最大长度为8个字符,扩展名的最大长度为3个字符.在给asm文件命名时若超过8个字符,虽然可以编译生成obj文件但在连接时却生成不了exe文件,从而引发一些错误.注意文件名不要超过8个字符;5.对于32位指令,debug并不显示其助记符,而是会以DB开头显示,这与数据定义伪指令不同;6.在[EA](EA为常数)作操作数时(如MOV 寄存器,[EA]和MOV [EA],寄存器),若不在[EA]前加段前缀, 则debug会将其视为常数EA而非偏移地址,此时必须显式指明段前缀.三、用DEBUG调试程序1.顺序指令的调试调试程序的指令格式路径>debug filename.exe接着可用R指令查看各寄存器的值, 说明如下:1)CX的值为整个程序的指令码的字节总数;2)CS:IP指向第一条指令, (CS)=(DS)+10h, (IP)=0000h, 这是因为程序在内存中的起始地址是DS:0000h,但前256个字节单元用于PSP,所以从(CS+10h): 0000h才是程序的指令码.用U命令可以查看程序的助记符指令下面以程序test.asm为例说明, 其源代码如下:.model small.databuff db 2 dup(?).codestart:mov ax,@datamov ds,axmov ax,100mov bl,3div blmov buff,almov buff+1,ahmov ah,4chint 21hend start可知数据段的段基址为1450h, 而buff内存的偏移地址为0008h, 从144F:00~144F:16都是源程序的机器码, 共计17个字节再接着可用T命令单步调试每单步执行一条指令, 都会显示执行指令后的寄存器的内容注意IP的变化代表了上一条指令的机器码长度下面执行3条指令, 如下所示:可以看到进行除法运算后AL=21h=33(商), AH=1h(余数), 同时提示下一条指令为: MOV [0008H], AL这里偏移量0008h就是buff的偏移量, 同时右下角显示了该内存单元的当前内容为14h上面在执行完商和余数的MOV指令后, 用D指令查看buff及其后一个单元的内容, 分别是商21h及余数1h, 程序执行完全正确.最后在单步执行INT 21H指令时要用P指令, 此时会显示程序正常结束字样!2.循环结构的调试以testloop.asm为例:.model small.databuff dw ?.codestart:mov ax,@datamov ds,axmov cx,9mov ax,2again:add ax,axloop againmov buff,axmov ah,4chint 21hend start对循环结构的调试方法是:只需调试2~3次循环即可确定循环逻辑是否正确,接着可让程序直接执行到循环结束,然后再单步调试.让程序执行到某个断点位置: G命令断点偏移地址让程序执行到循环结束: 在调试LOOP指令时使用P命令。
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的使用方法和功能。
1.DEBUG的启动和退出:在DOS命令行下输入DEBUG命令,即可启动DEBUG。
DEBUG启动后,会显示一个短横线"-”,表示等待执行命令。
在DEBUG中输入"q"命令,即可退出DEBUG。
2.DEBUG的命令格式和常用命令:-a:将键盘输入的ASCII码写入指定地址-d:显示内存中的指定地址的内容-e:修改内存中的指定地址的内容-g:从指定地址开始执行程序-r:查看和修改寄存器的值-t:查看和修改标志寄存器的值-u:以汇编代码的格式显示内存中的指令-w:将内存中的内容写入指定文件-n:加载并执行指定文件-i:打印当前的执行指令-f:在段间切换3.DEBUG的常用调试操作:- 通过“d”命令查看内存中的指令和数据内容,可以使用不同的参数来控制显示格式,如"d 100"表示从100H地址处开始显示,"d cs:100"表示从CS:100H地址处开始显示。
-通过“e”命令修改内存中的指令和数据内容。
- 通过“r”命令查看和修改寄存器的值,如"r ax"表示查看和修改AX寄存器的值。
-通过“u”命令以汇编代码的格式显示内存中的指令。
-通过“g”命令从指定地址开始执行程序。
-通过“n”命令加载并执行指定的二进制文件。
4.示例:下面给出一个使用DEBUG调试的示例过程:-启动DEBUG,进入DEBUG命令行界面。
-使用“n”命令加载一个二进制文件。
-使用“d”命令查看内存中的指令和数据,以及寄存器的值。
-使用“e”命令修改内存中的指令和数据。
-使用“g”命令执行程序。
-使用“r”命令查看和修改寄存器的值。
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 模式 大全
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-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的使用方法
Debug的使用方法
在编程中,Debug(调试)是指在程序中寻找和修复错误(bug)的过程。
调试工具可以帮助程序员快速定位和解决问题。
下面是一些常用的调试技术和工具:
1. 打印调试信息:使用print语句或日志来输出程序中的变量
值和执行路径。
这可以帮助你理解程序的执行流程和变量的状态。
2. 断点调试:使用调试器(如Visual Studio Code或PyCharm 等)在代码中设置断点。
程序将在断点处停下来,使你可以逐行查看代码的执行情况,并在需要时检查变量的值。
3. 单步调试:使用调试器提供的单步执行功能,逐行执行代码。
这样可以逐步追踪程序的执行路径,并检查每个语句的结果。
4. 监视变量:在调试器中设置监视点,让程序在特定条件下停下来,以便检查变量的值和状态。
这对于查找引起问题的特定变量很有帮助。
5. 异常捕获:使用try-except块捕获异常,并在异常处理器中
打印或记录异常信息。
这样可以帮助你确定程序中可能导致错误的位置。
6. 单元测试:编写测试用例来验证代码的正确性。
如果测试用
例失败,它可以帮助你确定代码中的错误。
7. 查找错误信息:仔细阅读程序输出和错误信息,这些信息通常会指示问题所在的位置和原因。
请记住,调试是一个需要实践和经验的过程。
随着你的经验增长,你会变得更快地找出问题并解决它们。
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
Debug的使用方法
Debug的使用方法在软件开发过程中,经常会遇到各种bug和错误。
为了解决这些问题,开发人员需要使用debug工具进行调试。
本文将介绍debug 的使用方法,帮助读者快速定位和修复程序中的错误。
一、什么是debugDebug是一种用于查找和修复程序错误的技术。
通过使用debug 工具,开发人员可以跟踪程序的执行过程,查看变量的值和代码的执行路径,以及定位代码中的错误。
二、常用的debug工具1. IDE集成的debug工具:大多数集成开发环境(IDE)都提供了内置的debug工具,如Visual Studio、Eclipse等。
通过在IDE 中设置断点,开发人员可以逐步执行程序,并在每个断点处查看变量的值和代码的执行路径。
2. 命令行debug工具:除了IDE集成的debug工具,还有一些独立的命令行debug工具,如gdb、lldb等。
这些工具可以通过命令行参数设置断点、查看变量的值等。
三、使用debug工具的基本步骤1. 设置断点:在需要调试的代码行上设置断点。
断点可以是一个代码行,也可以是一个条件语句。
当程序执行到断点时,会暂停执行,并进入debug模式。
2. 执行程序:运行程序,并触发断点。
程序在执行到断点时会暂停,等待开发人员进行调试操作。
3. 查看变量的值:在debug模式中,开发人员可以查看变量的值。
可以逐步执行程序,每次执行一行代码,并在每个断点处查看变量的值。
如果发现变量的值与预期不符,就可以定位问题所在。
4. 跟踪代码的执行路径:在debug模式中,开发人员可以逐步执行程序,查看代码的执行路径。
通过观察代码的执行路径,可以发现代码中的逻辑错误。
5. 修复错误:当定位到错误时,开发人员需要修复错误。
可以通过修改代码、添加条件语句等方式来解决问题。
修复错误后,重新执行程序,验证修复效果。
四、debug技巧和注意事项1. 使用日志输出:在调试过程中,可以通过输出日志信息来跟踪程序的执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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显示指定地址及其内容,等待用户输入。
此时,用户可作如下操作:输入新值。