DEBUG实验
debug实验报告
debug实验报告Debug实验报告引言:在软件开发和编程过程中,调试(Debug)是一项非常重要的任务。
通过调试,我们可以找到程序中的错误和问题,并进行修复。
本实验报告旨在探讨调试的重要性、调试的方法和技巧,以及调试过程中可能遇到的挑战和解决方案。
一、调试的重要性调试是软件开发过程中不可或缺的一环。
它有助于提高程序的质量和稳定性,确保程序能够按照预期的方式运行。
调试可以帮助开发人员快速定位和修复错误,提高开发效率。
同时,调试也是学习和提升编程技能的重要手段,通过调试,我们可以深入了解程序的运行机制和各种问题的解决方法。
二、调试的方法和技巧1. 使用调试器工具:调试器工具是程序员的得力助手,可以帮助我们逐行执行代码、查看变量的值和程序的执行流程。
常用的调试器工具有GDB(GNU Debugger)、Xcode等。
通过使用调试器工具,我们可以更加直观地观察程序的执行过程,快速定位错误所在。
2. 打印调试信息:在程序中适当地插入打印语句,输出关键变量的值和程序的执行状态,可以帮助我们了解程序的执行流程,找到错误的发生位置。
在调试完成后,记得删除或注释掉这些打印语句,以免影响程序的性能。
3. 缩小调试范围:当程序出现问题时,可以通过逐步缩小调试范围的方式,找出引发问题的具体代码。
可以先注释掉一部分代码,验证程序是否正常运行,然后逐步恢复注释,直到找到引发问题的代码段。
4. 使用断言和异常处理:在程序中合理地使用断言和异常处理机制,可以在错误发生时及时中断程序的执行,并输出相关的错误信息。
这样可以帮助我们快速定位错误,提高调试效率。
三、调试过程中的挑战和解决方案1. 复现问题:有时,程序在某些特定条件下才会出现问题。
在调试过程中,我们需要尽可能还原出问题的场景,以便更好地分析和解决问题。
可以通过调整输入数据、环境变量等方式,尽量复现问题。
2. 多线程调试:当程序涉及多线程时,调试过程会变得更加复杂。
由于多线程的并发执行,错误可能会难以复现和定位。
debug的使用实验报告
debug的使用实验报告
《Debug的使用实验报告》
在软件开发过程中,debug是一个非常重要的步骤,它可以帮助开发者找到并
修复代码中的错误。
在本次实验中,我们将探讨debug的使用方法以及其在软
件开发中的重要性。
首先,我们需要明确debug的定义。
Debug是一种通过检查、测试和纠正软件
中的错误来确保其正常运行的过程。
在实际应用中,debug通常涉及使用调试
器工具来逐步执行代码并观察其行为,以便找出问题所在。
在本次实验中,我们使用了一个简单的Java程序作为例子来演示debug的使用。
该程序包含了一些常见的错误,如语法错误、逻辑错误和运行时错误。
通过使
用调试器工具,我们逐步执行程序并观察其行为,以便找出并修复这些错误。
在实验过程中,我们发现debug的使用能够极大地提高代码的质量和稳定性。
通过逐步执行程序并观察其行为,我们可以更容易地找出并修复代码中的错误,从而减少了在后期测试阶段发现问题的可能性。
此外,debug还可以帮助我们
更好地理解程序的运行逻辑,从而提高了代码的可读性和可维护性。
总的来说,通过本次实验,我们深刻认识到了debug在软件开发中的重要性。
它不仅可以帮助我们找出并修复代码中的错误,还可以提高代码的质量和稳定性。
因此,在日常的软件开发过程中,我们应该充分利用debug工具,以确保
我们的程序能够正常运行并具有良好的性能。
熟悉、使用DEBUG调试工具实验报告
实验目的:借助DEBUG程序发现汇编语言程序的错误并加以改正实验过程:一,在debug环境下建立和汇编程序(1)进入debugC:\debug 回车(2)输入程序并汇编-A 100 回车0AF0:0100 mov dl,38 回车0AF0:0102 mov ah,2 回车0AF0:0104 int 21h 回车0AF0:0106 int 20h 回车0AF0:0108 回车(3)运行程序-g=1008Program terminated normally如果想分析该程序的指令,可使用反汇编命令U(4)反汇编-u 100,108 回车0AF0:0100 B238 MOV DL,30AF0:0102 B402 MOV AH,00AF0:0104 CD21 INT 210AF0:0106 CD20 INT 200AF0:0108 56 PUSH SI(5)将机器指令程序送到起始地址为200h的单元-e 200 b2,38,b4,02,cd,21,cd,20,56-g=2008Program terminated normally-二,常用debug命令(1)显示,修改寄存器内容显示所有寄存器内容格式:-r 回车功能:以十六进制形式显示cpu内部个寄存器的值;以符号形式显示标志寄存器的各标志位(除tf外)的值;并将CS:IP所指的内存内容反汇编成一条指令,可视为将要执行的指令。
如:-r 回车AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0AF0 ES=0AF0 SS=0AF0 CS=0AF0 IP=0200 NV UP EI PL NZ NA PO NC0AF0:0200 B238 MOV DL,38知:cs=0AF0h,IP=0100h修改寄存器格式:-r 寄存器名回车-r dsDS 0AF:0AE0-rds的内容由原来的0af0h修改为0ae0h修改标志值格式:-rf例:-rfNV UP EI PL NZ NA PO NC -ov ng 回车将of,sf的值分别修改为1。
实验一 利用 DEBUG 调试汇编语言程序段
实验名称实验一利用 DEBUG 调试汇编语言程序段一、实验目的1.熟悉 DEBUG 有关命令的使用方法;2.利用 DEBUG 掌握有关指令的功能;3.利用 DEBUG 运行简单的程序段。
二、实验要求1.仔细阅读有关 DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子;三、实验环境DOS 操作系统四、实验内容1.进入和退出 DEBUG 程序;1)开始—运行点确定进入DOS命令窗口图1进入DOS命令窗口2)在命令窗口中输入 dubug 进入 debug 程序图2进入 debug 程序3)进入 debug 窗口后,输入 q 命令退出 debug图3退出 debug2.学会 DEBUG 中的1)D 命令(显示内存数据 D 段地址:偏移地址)例 1:-D100 ;显示 DS 段, 0100 开始的 128 个字节内容-D ;默认段寄存器为 DS,当前偏移地址(刚进入 debug 程序偏移地址为 0100H)图4默认显示 DS 段内容-D DS:100 ;显示 DS 段, 0100H 开始的 128 个字节内容图5显示 DS 段内容-D CS:200 ;显示 CS 段, 0200H 开始的 128 个字节内容图6显示 CS 段内容-D 200:100 ;显示 DS 段, 0200:0100H 开始的 128 个字节内容图7显示 DS段0200:0100H内容-D 200 ;显示 DS 段, 0200H开始的128个字节内容图8显示 DS段0200H开始的内容-D 100 L 10 ;显示 DS 段, 100H 开始的 100H 个字节内容图9显示 DS段100H开始的100H字节内容2)E 命令(修改指定内存)例 1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:073F:0100 41 42 43 44 48 47 46 45-e 100 修改内存内容-d 100,L08 查看刚才修改的内存内容图10 修改和查看DS段100H开始的80H字节内容例 2: -E 100073F:0100 41. 42 : 42 是操作员键入此命令是将原 100 号内存内容 41 修改为 42,用 D 命令可察看。
DEBUG程序的使用
实验 DEBUG程序的使用一、实验目的1.学习使用DEBUG程序的各种命令。
2.利用DEBUG学习3.了解计算机取指令、执行指令的工作过程。
4.掌握用DEBUG调试自编程序的方法。
二、实验任务1.参照附录1,掌握DEBUG程序的各种命令,重点是命令R,D ,A,U,T,P,G命令的使用。
2.用命令A汇编下列指令,判断指令正误并说明原因。
(1) ROR AX,8(2) LEA DI,[AX](3) MOV DS,2010(4) PUSH AL(5) OUT 900,AL(6) MOV [BX],03.用命令查看8086/8088 CPU在开机后执行的第一条指令。
4.用命令D查看DS:200~22F和F000:200~22F两内存块内容,用命令F将字符“A”分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM 的区别。
5.用A命令汇编一条INT 1C指令,用命令T单步执行该指令,比较指令执行前后CS 和IP、堆栈指针SP及堆栈内容变化情况,了解什么是中断向量表,中断向量和中断子程,掌握中断指令的执行过程。
6.利用T,P,G命令,执行下列指令段,注意它们的不同之处。
(1) MOV DI,300MOV SI,400MOV CX,3CLDREP MOVSBINT 3(2) MOV AH,2MOV DL,41INT 21INT 3(3)先在CS:200处汇编一条RET指令,再在CS:100处汇编。
MOV BX,200CALL BXINT 3然后从MOV BX,200处开始执行。
7.用命令A汇编下列程序段,并将程序写到硬盘上,然后调试程序段,观察程序段能否完成指定功能,若不能,说明原因,并修改程序。
(1)完成将DS:2000开始的5个字节内存内容相加,并把相加的结果存放在DS2005内存单元中。
MOV CX,5MOV AL,0MOV BX,2000nest: ADD AL,[BX]INC BXDEC CXLOOP nestMOV [BX],ALINT 3(2)以双重循环来实现延时,然后再给AX赋值。
实验一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的使用
源程序: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的常用指令(R,D,E,A,U,T 指令)的使用方法,理解不同寻址方式的特点实验内容:在DEBUG中利用A命令输入以下汇编指令,并用U命令显示,利用T 命令单步跟踪指令的执行过程,利用R或者D命令观察相关寄存器或者内存单元内容的变化(相关过程和结果要体现在实验报告上)。
(1)立即寻址MOV AX,1MOV BL,02HMOV BH,34H-a13AE:0100 mov ax,113AE:0103 mov bl,0213AE:0105 mov bh,3413AE:0107-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0100 NV UP EI PL NZ NA PO NC13AE:0100 B80100 MOV AX,0001-tAX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0103 NV UP EI PL NZ NA PO NC13AE:0103 B302 MOV BL,02-tAX=0001 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0105 NV UP EI PL NZ NA PO NC13AE:0105 B734 MOV BH,34-tAX=0001 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0107 NV UP EI PL NZ NA PO NC13AE:0107 0000 ADD [BX+SI],AL DS:3402=00(2)寄存器寻址在验证完(1)后,执行mov ax,bx-a13AE:0107 mov ax,bx13AE:0109-tAX=3402 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0109 NV UP EI PL NZ NA PO NC13AE:0109 0000 ADD [BX+SI],AL DS:3402=00 -rAX=3402 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0109 NV UP EI PL NZ NA PO NC13AE:0109 0000 ADD [BX+SI],AL DS:3402=00(3)直接寻址用e命令向DS:1000处写入1234H,用D命令DS:1000处内容,然后执行mov AX,[1000H]-e 13a8:1000 34 12-d 13a8:1000 100113A8:1000 34 12 4.-a13AE:0109 mov ax,[1000]13AE:010C-tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010C NV UP EI PL NZ NA PO NC13AE:010C 0000 ADD [BX+SI],AL DS:3402=00 -rAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010C NV UP EI PL NZ NA PO NC13AE:010C 0000 ADD [BX+SI],AL DS:3402=00(4)寄存器间接寻址用E命令向DS:1000处改写5678H,用D命令观察DS:1000处内容,然后执行-e13a8:1000 78 56-d 13a8:1000 100113A8:1000 78 56 xV-a13AE:010C mov si,100013AE:010F mov ax,[si]13AE:0111-tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010F NV UP EI PL NZ NA PO NC13AE:010F 8B04 MOV AX,[SI] DS:1000=0000 -tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0111 NV UP EI PL NZ NA PO NC13AE:0111 0000 ADD [BX+SI],AL DS:4402=00 -rAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0111 NV UP EI PL NZ NA PO NC13AE:0111 0000 ADD [BX+SI],AL DS:4402=00(5)变址寻址执行Mov BX,1000hMov AX,[BX+1]观察指令执行后AX,BX内容,以及[BX+1]内存单元处数据-a13AE:0111 mov bx,100013AE:0114 mov ax,[bx+1]13AE:0117-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0114 NV UP EI PL NZ NA PO NC13AE:0114 8B4701 MOV AX,[BX+01] DS:1001=0000 -tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0117 NV UP EI PL NZ NA PO NC13AE:0117 0000 ADD [BX+SI],AL DS:2000=00 -rAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0117 NV UP EI PL NZ NA PO NC13AE:0117 0000 ADD [BX+SI],AL DS:2000=00 -d 1001 100213AE:1000 00 00 ..(6)变址加基址寻址用E命令向DS:1000~1004处写入0AB90H,03412H,然后执行Mov BX,1000hMov SI,1Mov AX,[BX+SI]Mov CX,[BX+SI+1]-e 1000 12-e 1001 34-e 1002 90-e 1003 ab-a13AE:0117 mov bx,100013AE:011A mov si,113AE:011D mov ax,[bx+si]13AE:011F mov cx,[bx+si+1]13AE:0122-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011A NV UP EI PL NZ NA PO NC13AE:011A BE0100 MOV SI,0001-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011D NV UP EI PL NZ NA PO NC13AE:011D 8B00 MOV AX,[BX+SI] DS:1001=9034 -tAX=9034 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011F NV UP EI PL NZ NA PO NC13AE:011F 8B4801 MOV CX,[BX+SI+01] DS:1002=AB90 -rAX=9034 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011F NV UP EI PL NZ NA PO NC13AE:011F 8B4801 MOV CX,[BX+SI+01] DS:1002=AB90。
实验一 用DEBUG熟悉指令功能和寻址方式
实验一用DEBUG熟悉指令功能和寻址方式一、实验性质:验证型二、实验目的:掌握debug的使用,能建立和运行汇编语言程序掌握寻址方式DEBUG的命令DEBUG的命令都用单个字母表示,其后可以跟一个或多个参数,参数之间用空格或逗号分隔。
DEBUG的命令参数大多数是地址或地址范围,其地址书写格式为:[段地址:]偏移地址其中的段地址可以用段寄存器名表示,也可以用一个十六进制数表示。
如:ES:10043A5:200地址范围的书写格式为:Ⅰ.[段地址:]起始偏移地址终止偏移地址Ⅱ.[段地址:]起始领衔地址L长度如:CS:10010F和CS:100L10所指的地址范围是一致的。
当输入的命令不正确时,DEBUG将在该行底下指出错误所在。
注意:在DEBUG下,输入的数据和显示的数据都是十六进制数,不用在数据后加“H”A汇编与反汇编命令1.汇编命令A格式:A[地址]功能:从键盘输入汇编程序,并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。
说明:如果不指定汇编地址,则以CS:IP为地址。
例:0BB6:0000-0005写入三条指令。
2.反汇编命令U格式:U[地址]/[地址范围]功能:将指定地址范围内的机器代码翻译成汇编源程序指令显示出来,并同时显示地址及代码。
注意:反汇编时一定确认指令的起始地址,否则得不到正确的结果。
例:反汇编看CS:0005-0011单元的指令。
B显示与修改内存单元内容的命令1.显示内存单元内容命令D格式1:D[地址]格式2:D地址范围只写一个D,表示显示从当前地址单元开始的128个单元中的字节数据说明:D命令在屏幕上显示的内容分为三部分,左边是每一行存储单元的起始地址,中间是各字节单元的内容,右边是各单元内容对应的ASCII码字符(不可显示的字符用"."代替)。
指定要显示的单元的逻辑地址,即写出完整的段地址和偏移地址。
指定要显示数据区起始单元的地址和最后一个单元的地址。
实验一DEBUG的使用
实验一DEBUG的使用实验1 DEBUG的使用一、实验目的:通过实验掌握下列知识:1、DEBUG命令的使用;2、8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。
二、实验类型:验证三、实验内容和步骤1、将AX,BX,CX,DX的值分别改为100H,200H,300H,400H2、将标志位CF,SF,ZF值改为13、将2000H:1000H开始的连续3个字节单元的值分别改为12H,34H,56H4、将3000H:1000H开始的连续20H个字节单元的内容全部改写55H5、写一段程序,求2000H:1000H开始的连续3个字节单元的和,将结果保存到2000H:2000H 字节单元中(设不会溢出)6、设2000H:1000H,2000H:1004H两个字单元的内容分别为1234H,5678H,写一段程序实现将两个字单元的值进行交换7、内存操作数及各种寻址方式使用程序内容:MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE PTR[BX],20MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DLMOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],2846操作步骤1)用A命令键入上述程序,并用T命令逐条运行。
2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及字数据的存放方法。
8、求累加和程序:程序内容:MOV BX,1000MOV CX,10SUB AX,AXLOP: ADD AL,[BX]ADC AH,0INC BXJ: LOOP LOPINT3操作步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。
2)用命令N AA将此程序命名为文件AA(文件名可任取)。
debug指令实验报告
成绩评定教师签名嘉应学院计算机学院实验报告课程名称:汇编语言程序设计开课学期:2017-2018学年第1学期班级:指导老师:实验题目:Debug常用命令及80x86指令的使用学号:姓名:一、实验目的:通过实验掌握下列知识:1、DEBUG常用命令: A,U,D,E,R,T,G,Q。
2、80x86寄存器: AX/EAX,BX/EBX,CX/ECX,DX/EDX,FLAG,IP/EIP3、80x86常用指令: MOV/MOVSX/MOVZX,ADD/ADC,SUB/SBB,DAA 等。
二.实验内容1、DEBUG 命令使用2、808x86常用指令练习三、实验过程描述(一)、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。
2、用命令 E 18E4:100 'A' 将'A'的ASCII码填入内存。
3、用命令 D 18E4:100 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 E 18E4:100 41 重复上二项实验,观察结果并比较。
5、用命令 E 18E4:100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?6、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
7、用R命令将AX,BX内容改写为1050H及23A8H。
(二)、808x86常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
实验1debug的使用
实验1debug的使⽤实验1 DEBUG的使⽤⼀、实验⽬的:1. 熟悉DEBUG的功能,运⾏并掌握其常⽤命令。
2. 使⽤DEBUG,观察PC机执⾏汇编指令的过程,掌握寄存器的名称与内存单元地址的形成。
⼆、实验要求:1. 遵守规章制度,爱护实验室设备。
2、熟悉Debug各个命令的⽤法。
3、熟悉寄存器的名称以及物理地址的形成。
4、写出实验报告。
三、实验内容:实验1、进⼊Debug环境,完成下列步骤,熟悉DEBUG指令。
1、⽤R命令查看寄存器的值,将AX的值修改为1,BX的值修改为10。
2、⽤D命令查看内存0:0200处的内容。
3、⽤E命令将”I am a student!!”写⼊内存0:0200处。
⽤D命令查看是否写⼊成功。
4、⽤A 命令向内存0:0210处写⼊汇编指令MOV AX,1234MOV BX,0158ADD AX, BX(注意:在⼀般的PC机中,DOS⽅式下,DOS和其他合法的程序⼀般都不会使⽤0:200~0:2FF(0:200h~0:2FFh)的256 个字节的空间。
所以,我们使⽤这段空间是安全的。
)5、使⽤U命令反汇编,并⽤T命令执⾏指令,查看执⾏后的结果,3条指令执⾏后AX的值为多少?实验2、使⽤Debug命令设置下列寄存器及存储器的内容(DS)=2000H, (BX)=0100H, (SI)=0002H, (20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H.,⽤汇编(A)、单步执⾏(T)等命令求解下列7个问题的答案,记录每条指令执⾏后AX的值并分析每条指令中源操作数使⽤的是何种寻址⽅式。
(1)MOV AX,1200H(2) MOV AX,BX(3) MOV AX,[1200H](4) MOV AX,[BX](5) MOV AX,1100[BX](6) MOV AX,[BX][SI](7) MOV AX,1100[BX][SI]实验3、⽤A命令写⼊汇编指令,使⽤寄存器、段寄存器、存储器和⽴即数等作为操作数,验证mov、add等指令的格式并得出结论。
DEBUG的启动及其基本命令的使用
实验一DEBUG的启动及其基本命令的使用一.实验目的:掌握DEBUG 的基本命令及其功能二.实验内容:DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动在DOS提示符下,可键入命令:C>DEBUG[d:][path][文件名][ 参数1][参数2]其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。
2、DEBUG的主要命令(1)汇编命令A,格式为:-A[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2)反汇编命令U,有两种格式:1)-U[地址]该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108或–U 04BA:0100 L9此二命令是等效的。
(3)运行命令G,格式为:-G [=地址1][地址2[地址3。
]]其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址]该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:-T[=地址][值]该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围](6)修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址内容表例如:-E 2000:0100 F3 “XYZ” 8D其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
实验一--掌握DEBUG-的基本命令及其功能
实验一--掌握DEBUG-的基本命令及其功能实验一掌握DEBUG 基本命令及其功能【上篇】查看CPU和内存,用机器指令和汇编指令编程一.实验目的:掌握DEBUG 的基本命令及其功能掌握win7 win8 使用DEBUG功能二.实验内容:1. 预备知识:Debug的使用(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
(3) 进入DebugDebug是在DOS方式下使用的程序。
我们在进入Debug前,应先进入到DOS方式。
用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。
②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。
三.实验任务解决方案1. 从网上下载Dosbox和debug.exe(文件夹中有)。
2. d ebug.exe放在D:根目录,然后安装,安装完成以后,点击快捷方式进入Dos界面:3.输入mount c d:\ 接着输入c:01 d8 add ax,bx89 c3 mov bx,ax01 d8 add ax,bxb8 1a 00 mov ax,001AH bb 26 00 mov bx,0026H 00 d8 add al,bl00 dc add ah,bl00 c7 add bh,alb4 00 mov ah,000 d8 add al,bl04 9c add al,9CH提示:可用E命令和A命令以两种方式将指令写入内存。
调试工具debug的使用及基本指令的用法 (实验2)
10DD:0100 7C0A JL 010C(标志寄存器的各个标志位)
(当前CS:IP所指向的指令)
标志寄存器各标志位的含义:
溢出标志OF: OV/NV(1溢出/0不溢出)
方向标志DF: DN/UP(1减/0增)
《微机原理与接口技术》实验报告
实验序号:实验2实验项目名称:调试工具debug的使用及基本指令的用法
学 号
姓 名
专业、班
实验地点
指导教师
实验时间
一、实验目的及要求
1、掌握debug的基本命令和8086的各种基本指令的用法。
2、掌握DEBUG下的主要命令及在DEBUG下编写简单程序、调试程序的方法;
3、理解CPU各种寄存器的作用:
10DD:2010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
4、观察和修改内存单元的内容
-e 2000修改从地址DS:2000H开始内存单元的内容
10DD:2000 00.01 00.02
汇编语言实验报告(DEBUG命令)
西安财经学院信息学院《汇编语言程序设计》 实验报告实验名 DEBUG 命令,指令练习 实验 403 实验日期 2013.4.16 一、实验目的及要求熟悉和掌握汇编语言的数据传送类指令、算术指令、逻辑指令、串处理指令、控制转移指令以及处理机控制与杂项操作指令,达到准确有效地运用。
二、实验环境硬件环境:一台微型计算机;软件环境:windows 7,debug 环境,masm 三、实验内容练习dos 环境下debug 命令;指令练习 四、实验过程: 1. 进入debug 环境姓名学号 10051704 班级 计本1004班 指导教师 张娟2.R命令查看寄存器内容的命令。
可以看出,数据寄存器的内容都为0,CS代码段寄存器内容为13BB,IP为0100。
3.RF命令查看标志位寄存器内容并可以进行修改,其中不包含TF,陷阱标志位。
4.D命令查看内存单元内容,此处从内存的13BB段的第0100个单元开始显示。
5.A命令写指令,此处未写。
6.U命令将内存单元的内容以汇编指令的形式表示出来。
7.E命令修改内存单元的内容命令。
这里修改1000的内容为12,并用D命令显示修改后的结果,为12。
8.数据传送类指令(1)MOV指令将1234赋值给累加器AX:指令写在0100开始的内存单元,占用3个字节,IP指向下一条指令的地址0103。
(2)POP指令将累加器AX中的值弹出AX中的值弹出,变为0000,SP堆栈指针由原来的FFEE自动加2后变为FFF0,IP指向下一条指令的内存单元0104。
9.算数指令(以下内容在实验室操作,地址与之前做的有差别)10.算数指令(1)加法指令ADD给累加器AX 的值加上1234h在0100地址写加法指令,执行单步操作,查看到AX的值由0000h变为1234h,IP 指向下一条指令的地址0103h。
(2)减法指令SUB将累加器AX 的值减去0200h,将结果保存到AX中执行单步操作,查看AX的值为1034h,IP指向下一条指令地址0106。
实验报告一:DEBUG命令的使用
DEBUG命令的使用
一、实验目的
1.练习简单的DOS命令(DIR, CD,MD ,CLS)
2.学习使用DEBUG程序的常用命令。
(R,D,E, A,U,T, G,Q)
3.了解8086内存地址空间分配
二、实验任务
1.用DIR命令查看当前工作目录的文件。
2.用命令 CD进入下一级子目录,用命令 MD建立子目录。
3.用命令 CLS清屏。
4.用R命令查看8086/8088 CPU在开机后执行的第一条指令。
(8086/8088 CPU在开机后
执行的第一条指令在内存FFFF:0H开始处。
)
实验步骤:
5.用命令D查看DS:200~22F和F000:200~22F两内存块内容,用命令F将字符“A”
分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM 的区别。
实验步骤及实验现象:
6.PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某个单元中,
请找到这个生产日期并试图改变它。
实验步骤:
三、实验报告
1.记录CPU在开机后执行的第一条指令。
2.说明可读写内存RAM和只读内存ROM的区别。
3.记录任务4、5、6的产生的现象,说明原因。
4.针对实验目的认真做小结。
DEBUG实验报告
DEBUG实验报告篇一:汇编debug实验报告一、实验目的、学习查看CPU和内存命令II。
实验设备与环境主流pcwin7_x64dosboxstatuswindowdebug.exe三、实验内容和步骤(截图和必要的图表文字说明)(1)使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,cpu中相关寄存器中内容的变化。
机器代码组装说明b8204emovax、4e20h051614addax、1416hbb0020movbx、2000h01d8addax、bx89c3movbx、ax01d8addax、bxb81a0movax、001ahbb2600movbx、0026h00d8addal、bl00dcaddah、bl00c7addbh、alb400movah、000d8addal、bl049caddal、9ch-1--命令:功能:结果:movax,4e20addax,1416movbx,2000addax,bx将4e20h存入ax,将ax+1416h存入ax,a将2000h存如bx,将ax+bx的值存入ax,ax=4e20hx=6236hbx=2000hax=8236h-3-movbx,ax将ax的值存入bx,bx=8236haddax,bx将ax+bx的值存入ax,ax溢出,ax=046chmovax,001a将001ah存入ax,ax=001ahmovbx,0026将0026h存入bx,bx=0026haddal,bl将al+bl的值存入al,ah=00h,al=40h,ax=0040haddah,bl将ah+bl的值存入ah,ah=26h,al=40h,ax=2640haddbh,al将bh+al的值存入bh,bh=40h,bl=26h,bx=4026hmovah,0将0000h存入ah,ah=00h,al=40h,ax=0040h,addal,bl将al+bl的值存入al,ah=00h,al=66h,ax=0066haddal,9ch将al+9ch的值存入al,ah=00h,al=02h,ax=0002h,(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
实验一利用Debug_命令调试小汇编程序
实验一:利用Debug 命令调试小汇编程序一。
实验目的:1。
学习使用debug 程序调试小汇编程序2。
熟悉各种Debug 命令的使用。
二。
实验器材:PC 机, DEBUG程序 DOS系统三。
实验原理(DEBUG程序的使用命令)(一)DEBUG程序的调用与命令格式1.调用在DOS提示符下,键入命令:C>DEBUG [d:][path][filename[.exe]]例:E:MASM>DEBUG或 E:MASM>DEBUG AA.EXEDEBUG下的提示符”-”2.命令格式:命令 [参数]•命令DEBUG的所有命令动词均由一个字母(大小写均可)构成!DEBUG下的所有数字均为十六进制数!•参数地址表示方法:段地址:偏移量[addresss] 段寄存器:偏移量如:1419:000或:DS:0000地址范围表示方法:段地址:始偏移量末偏移量[rang] 或:段地址:起始偏移量 L长度(字节数) 如: 1419:100 1FF或: 1419:100 L100(二).DEBUG的主要命令1.显示存储单元命令D(Dump)D[address]或[rang]例如:-D1417:00或:-DDS:00 1F-DDS:00 L202.修改存储单元命令E(Erase)或F(Fill)•E address [list]LIST可以是字节串或字符串(单引号括起)例如:-E13F7:00 41 42 ‘xyz’ 43或-EDS:00 41 42 ‘xyz’ 43也可以用逐个单元相继修改的方法:-E address 如:-E13F7不需要修改单元内容直接在“.”后面直接按空格键表示本单元修改结束;进入下一个内存单元不需要修改单元内容直接在“.”后面输入新的值后,按空格键表示本单元修改结束;进入下一个内存单元按回车键表示整个命令结束•填充命令-F rang list如: -f 13f7:00 1F 41 ‘BCD’ 88-f13f7:00 1f 003.检查和修改寄存器内容命令R (Register ) 有三种格式•显示所有寄存器内容 -R•显示和修改某个寄存器内容NV UP DI PL NZ NA PO NCOV DN EI NG ZR AC PE CY OF 溢出(是/否)DF 方向(减量/增量)IF 中断(允许/关闭)SF 符号(负/正)ZF 零(是/否)AF 辅助进位(是/否)PF 奇偶(偶/奇)CF 进位(是否)标志为标志为标志名-R register name如:-RAX-RBX不需要修改寄存器内容直接在“:”后面按回车结束;需要修改标志在“:”后面输入新的内容,按回车结束;•显示和修改标志位状态-RF不需要修改标志直接在“-”后面按回车结束;需要修改标志在“-”后面输入新的标志,按回车结束4.汇编命令A(Assemble)-A[address]如:-A100在当前地址后面直接输入小汇编指令(标准汇编指令,不能输入宏汇编指令)5.反汇编命令U(Unassemble),有两种格式•从指定地址开始,反汇编32字节-U[address]如:-U1006.运行命令G(Go)-G[=address1] [address2 [address3…]}从指定地址1开始运行,后面为断点地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学微机实验实验一顺序程序设计与DEBUG使用一、实验题目1.利用串操作传送指今将0FFH送入数据段的0180H开始的128个字节存储单元中,编写一段程序。
2.将数据段中0200H字节存储单元中的二位BCD码转换为二个ASCII码送0201H开始的二个字节单元中,编写—段程序。
3.编写一段程序,在内存中自SQTAB(0200H)地址开始的连续十个单元中存放0~9的平方值。
要求利用计算法查表求NUM(0210H)单元中指定数(0~9中的任意一数)的平方值,并将所求平方值存入RESULT(0211H)单元中。
[注]:题目二和题目三可选做一个,题目一必做。
二、实验设备硬件环境 IBM/PC及其兼容机软件环境操作系统DOS6.22调试程序三、实验要求1、利用DEBUG程序中的A命令,对编写好的源程序进行编辑和汇编。
2、利用U命令对汇编后的目标程序进行反汇编,可检查编辑的程序是否正确,也可知道每条指令的IP值。
3、利用T、G命令对程序进行单步、没断点和连续执行。
4、利用R、D、E命令可对程序运行前预置数据,运行中检查中间结果和远行后检查最终结果。
5、利用Q命令退出DEBUG程序,返回DOS。
四、预习要求1、复习DOS启动及DOS的有关命令的使用。
2、阅读本指导书的附录一,了解和掌握DCBUG程序中的 A、U、R、D、E、T、G和Q的书规定和功能。
3、预先编写好题目中的源程序。
(第一题已有源程序,见实验步骤)五、实验步骤题目一:1、启动DOS操作系统。
2、运行程序D:>DEBUG— (此即处于DEBUG等待命令状态的提示符)3、用A命令编辑和汇编源程序(黑体字部分为键盘输入部分)_A16C0:0100 MOV DI,01800103 MOV CX,800106 MOV AL,FF0108 REP STOSB010A HLT010B-4、用U命令反汇编验证源程序_U CS:010016C0:0100 BF8001 MOV DI,018016C0:0103 B97F00 MOV CX,008016C0:0106 BOFF MOV AL,FF16C0:0108 F3 REPZ16C0:0109 AA STOSB16C0:010A F4 HLT5、源程序若有错,可返回第3步用A命令进行修改,再进行3—4。
无错误,可运行程序。
6、用R命令观察程序末执行前,程序中各有关寄存器内容,并填人括号中。
_RAL=( ),DI=( ),CX=( ),DS=( ),CS=( ),IP=( ) 7、用D命令观察程序未执行前,存放结果的存储区中内容。
_D ES:01808、用T命令执行一条指令,观察DI寄存器内容的变化,并填入此值:_TDI=( ) IP=( ) CS=( )9、用T命令一条条执行程序,并观察相应的寄存器内容或存储单元内容,一直执行到最后一条指令为止。
10、用D命令观察最终结果_D ES:0180此时可观察到ES:0180~ES:01FF单元中内容已全部改变为FF。
11、用R命令改变1P值,使它回到程序的第一条指令处_R IP_010012、用R命令以观察IP值,已改变为0100_R13、用A命令对存储数据的缓冲区改变位置_A CS:010016C0:0100 MOV DI,020016C0:0103-14、用D命令观察程序执行前,存储区的内容_D ES:020015.用G命令设置断点为HLT指令处_G 10A16.再用D命令观察执行结果_D ES:0200将会观察到,ES:0200--ES:027F的内容全改变为FF。
题目二1.用A命令将已编写好的源程序进行编辑和汇编。
2.用E命令对DS:0200单元设置二位BCD码数据。
3.参照题目一的实验步骤,对上述程序进行调试和运行。
4.查看每一条指令执行的中间结果和最终结果,验证是否满足题目设计要求,若不满足,再用A命令对程序进行修改。
重新对程序进行调试和运行,直到结果正确为止。
题目三1.用A命令将已编写好的源程序进行编辑和汇编。
2.用E命令对DS:0200开始的平方表置0~9的平方值。
对DS:0210单元置0~9中的任一数。
3.参照题目一的实验步骤,对上述程序进行调试和运行。
4.查看每一条指令执行的中间结果和最终结果,验证是否满足题目设计要求,若不满足,再用A命令对程序进行修改,重新对程序进行调试和运行,直到结果正确为止。
附录一、调试程序DEBUG的使用DEBUG是专为汇编语言设计的一种调试工具,是汇编语言程序员必须掌握的调试手段。
一、如何调用DEBUG程序在PC DOS的提示符D:>下,可以打人如下命令:D:>DEBUGG[d:][path][filename[ext]][parm1][parm2]其中DEBUG是调试程序的文件名;后面是要调试的程序的文件标识符。
若在命令中规定了文件标识符,则在DOS把DEBUG程序调入内存后,DEBUG程序把要调试的程序(根据文件标识符)调入内存。
若在命令中没有规定文件标识符,则DEBUG程序或者与正在内存中的内容打交道;或可以用Name和Load命令,从盘上输入要调试的程序。
命令行中的[parm1(参数1)][parm2(参数2)]。
我们在后面结合具体的命令加以介绍。
在DEBUG程序调入后,出现提示符“—”。
说明现在系统在DEBUG程序的管理之下,所有DEBUG命令,也只有在出现此提示符后才有效。
二、DEBUG程序对寄存器和标志位的初始化在DEBUG程序启动后,它把各个寄存器和标志位,置成以下状态:1.段寄存器(GS DS ES 和SS)置于自由存贮空间的底部,也就是DEBUG 程序结束以后的第一个段。
2.指令指针(IP)置为0100H。
3.堆栈指针置到段的结尾处,或者是装入程序的临时底部,取决于哪一个更低。
4.余下的寄存器(AX BX CX DX BP SI和 DI)置为0。
但是,若调用DEBUG时包含一个要调试的程序文件标识符,则CX中包含以字节表示的文字长度,若文件大于64K,则文件长度包含在BX和CX中(高位部分在BX中)。
5.标志位都置为清除状态。
6.default的磁盘缓冲区置于代码段的80H。
注:若由 DEBUG调入的程序,具有扩展名.EXE,则DEBUG必须进行再分配。
把段寄存器、维栈指针置为程序中所规定的值。
三、有关DEBUG命令的一些共同信息:1。
DEBUG命令都是—个字母,后面跟有一个或多个参政。
2.命令和参数可以用大写或小写或混合方式输入。
3. 命令和参数间可以用定界符分隔。
然而定界符只是在两个邻接的16进制之间是必需的。
因此,下列命令是等效的;d cs:100 110d cs:100,1104.可以用按Ctrl Break键来停止一个命令的执行,返回DEBUG提示符。
5.每一个命令,只有按了ENTER键以后才有效,才开始执行。
6.若一个命令产生相当多的输出行,为了能在屏幕上当一行卷走以前读清楚它,可以在显示过程中,按Ctrl NumLock键,以暂停上卷;可以按任何一个字符来重新启动。
7.若DEBUG检查出一个语法错误,则显示具有错误的行和指示错误所在。
例如:d cs:100 cs:110error四、DEBUG的主要命令1.显示内存单元内容的命令(Dump Command)为了了解程序执行的结果,检查内存单元的内容是十分重要的。
此命令能检查指定范围的存贮单元的内容。
命令的格式为:D[地址] 或 D[范围]其中,D是命令字母,[地址]或[范围]都是为了指定要显示的存贮单元的范围。
存贮单元的内容用两种方式显示:一种是每一个存贮单元的内容(每一字节)用两位16进制数显示;另一种是用相应的ASCII字符显示,句号(.)表示不可显示的字符。
显示有两种格式,若是40列系统显示格式,每—行显示8个字节,若是80列显示格式,每一行显示16字节。
第8、9字节间有一连字符(—)。
显示命令有两种常用的格式:(1)格式为:D地址或 D若命令中有指定地址,则从指定地址开始,显示40H个字节(相应于系统的40列显示格),或80H个字节(相应于80列显示格式)。
若命令中没有指定起始地址,则从上一个D命令所显示的最后一个单元的下一个单元开始。
若以前没有使用过D命令,则从由 DEBUG初始化的段寄存器的内容,加上地址偏移量0100H作为起始地址。
若在命令中所打人的地址中,只包含起始地址的偏移量,则D命令认为段地址包含在DS中。
例如:对于80列的显示格式—D 100显示的起始地址由 DS内容(作为段地址)与100H(作为偏移量)组成。
共显示80H个单元的内容。
(2)显示指定范围的内容:D 范围在范围中包含起始地址和结束地址。
若输入的起始地址中,未包含段地址部分,则D命令认为段地址在DS中;而输入的结尾地址中,只允许有地址偏移量。
例如:-D DS:100 02002、修改存贮单元内容的命令此命令用于修改存贮单元的内容,它有两种基本格式:(1)用命令的内容表去代替指定范围的内存单元的内容E 地址内容表例如:E DS:100 F3”XYZ”8D内存单元DS:100到DS:104这5个单元的内容由表中给定的5个字节的内容(其中2个字节用16进制数表示,即F3、3D;另三个用字符表示,就是“XYZ”,用它们的ASCII码值代入)所代替。
(2)一个单元一个单元地连续修改方式E 地址在输入了上述命令,屏幕上显示指定单元的地址和原有的内容之后,可以采用以下几种操作中的一种:1、再输入一个字节的16进制数,以代替原单元中的内容,然后可以采取下面三种操作之一。
2、按空格键,则上一个替换要求完成,且显示下一个单元的地址和原有的内容,要修改的话,则输入两位16进制数,再按空格键盘······这样就可以连续地进行修改。
若某一单元的内容不需要修改而操作要进行下去,则可直接按空格键。
3、输入一个连接号(-),则又显示前一单元的地址和内容,若要修改的话,就输入一个字节的内容,然后再按“-”,则又显示前一个单元的地址和内容······这样,就可以连续地进行反向修改。
若所示的前一单元的内容不需要修改,可直接按“-”键。
4、按回车键结束此命令。
3、检查和修改寄存器内容的命令(Register Command)为了了解程序运行是否正确,检查寄存器内容的操作是十分重要的。
R命令有三种功能:(1)能显示CPU内部的所有寄存器的内容和全部标志。
(2)能显示和修改一个指定的寄存器的内容。
(3)能显示和修改所有标志位的状态。
下面分别予以介绍:1、命令格式:R则系统的响应为:A>DEBUG EXAMPLE4.EXE-rAS=0000 BX=0000 CX=004A DX=0000 SP=0064 BP=0000 SI=0000 DI=0000 DS=07B5 ES=07B5 SS=07C6 IP=0000 NV UP DI PL NZ NA PO NC 07C6:0000 BSC507 MOV AX,07C5前两行显示格式显示了所有CPU内部寄存器内容和全部标志的状态(其含意在下面介绍),第三行显示了现行CS:IP所指的指令的机器码以及汇编符号,这就是下条即将要执行的指令。