有图示的用DEBUG调试程序过程示例

合集下载

debug的使用方法和简单的例子

debug的使用方法和简单的例子

Debug调试工具的常用功能R(Register):查看,改变CPU寄存器的内容D(Dump):查看内存中的内容E(Enter):改写内存中的内容U(Unassemble):将内存中的机器指令翻译成汇编指令T(Trace):执行一条机器指令A(Assemble):一会变指令的格式在内存中写入一条机器指令启动debug:Windows系统中debug一般在C:\WINDOWS\system32文件加下,由于系统指定了搜索路径,所以在任何一个路径都可以运行:cmd中输入debug。

使用a命令以汇编语言向从1000:0开始的内存单元中写入几条指令-a 1000:01000:0000 mov ax,11000:0003 mov bx,21000:0006 mov cx,31000:0009 add ax,bx1000:000B add ax,cx1000:000D add ax,ax1000:000F-d命令查看内存的内容-d 1000:0 f1000:0000 B8 01 00 BB 02 00 B9 03-00 01 D8 01 C8 01 C0 00 ................r命令查看寄存器的内容-rAX=0001 BX=0000 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B7E ES=0B7E SS=0B7E CS=0B30 IP=1010 NV UP EI PL NZ NA PO NC0B30:1010 58 POP AX改变寄存器的内容-rcsCS 0B30:1000-ripIP 1010:0t命令执行CS:IP指向的指令-tAX=0001 BX=0000 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B7E ES=0B7E SS=0B7E CS=1000 IP=0003 NV UP EI PL NZ NA PO NC 1000:0003 BB0200 MOV BX,0002e命令改写内存中的内容-e 1000:0 b8 01 00 b9 02 00 01 c8u命令将从1000:0开始的内存单元中的内容翻译为汇编指令-u 1000:01000:0000 B80100 MOV AX,00011000:0003 B90200 MOV CX,00021000:0006 01C8 ADD AX,CX1000:0008 0001 ADD [BX+DI],AL1000:000A D801 FADD DWORD PTR [BX+DI] 1000:000C C8 DB C81000:000D 01C0 ADD AX,AX1000:000F 0019 ADD [BX+DI],BL1000:0011 0102 ADD [BP+SI],AX1000:0013 0304 ADD AX,[SI]1000:0015 050607 ADD AX,07061000:0018 0809 OR [BX+DI],CL1000:001A 0A00 OR AL,[BX+SI]1000:001C 0000 ADD [BX+SI],AL1000:001E 0000 ADD [BX+SI],AL。

实验一 DEBUG 的使用(课件上)

实验一 DEBUG  的使用(课件上)

实验一DEBUG 的使用
【实验环境】
PC, Dos系统下debug
【实验目的】
学习和掌握用DEBUG调试程序的方法.
【实验内容】
以微机原理p124页第19题为例,熟悉debug基本操作【完成情况】
1、打开debug界面
2、输入程序
3、开始调试程序,第一步AX变为2280h
程序进行至add cx,ax后,cx为2180H,进行至adc ax,08后,ax为000fH
程序进行至neg bx后,bx为0008H
程序进行至mul dl后,ax为0018H
程序运行至or ax,0ff00H后,ax为0ff18H
程序运行至idiv bx后,ax为0ffe3H
4、退出debug
【实验总结】
本次实验通过对第19题进行实验操作,以寄存器数值变化作为验证,因寄存器实验操作所得数据与对程序进行理论推导所得数据相同,由此完成了对debug工具操作的熟悉,达到了实验目的。

刚开始时由于对指令不熟悉造成了许多麻烦,还需要更进一步的熟悉基本指令。

此外,为了进一步的熟悉,我还做了ftp微机软件实验的第一个,熟悉的debug的使用。

一边对未来的汇编语言调试更加熟悉和得心应手。

实验一 利用 DEBUG 调试汇编语言程序段

实验一 利用 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的使用方法
进一步学习功能稍微复杂的程序设计及子程序设计方法
实验内容:编制程序
实现从键盘输入有符号十进制数子程序
子程序从键盘输入一个有符号十进制数
负数用"-"引导
正数直接输入或者用"+"引导
在主程序中给出输入的数的个数为10
输入的数存储到以array开始的10个字空间中
要求完成程序编制及调试
并用DEBUG观察运行结果
实验报告内容
实验题目:
实验目的:
实验内容:
程序清单
实验四 键盘控制发音程序
实验目的:通过编程对PC机中的8253和8255进行控制
db 100 dup(0)
stack ends
code segment 'code'
assume cs:code,ds:data,ss:stack
start proc far
push dx
mov ax,0
push ax
2):用D命令观察程序运行之前DS:0000处开始前20字节的内容并作记录
3: 用G命令从程序开始处运行到程序结束前一条指令
再用D命令观察DS:0000处开始的前20字节的内容
并作记录
并据此说明程序对数据段中的数据进行了哪些操作
改变按键后
计算机扬声器将按照新的频率发声
连续按不同的键
将一直能改变发音频率
直到按回车键退出该程序
实验报告内容
实验题目:
实验目的:
实验内容:
问题回答:所编制的汇编语言程序是如何对8253和8255进行控制的?各选择了什么工作方式?
并用DEBUG调试

实验二、DEBUG环境中编程调试1

实验二、DEBUG环境中编程调试1

实验二、DEBUG环境中编程调试1实验二、DEBUG环境中的编程调试一、主要仪器设备:微型计算机(装有DEBUG,MASM,link)软件二、实验目的:1、进一步熟悉DEBUG命令2、熟悉8088指令系统3、学习数据传送和算术运算指令的用法,熟悉压缩的BCD码调整指令4、进一步熟悉使用DEBUG的用法,并且用在DEBUG下编写、运行和调试查看其机器代码和各寄存器的内容是什么。

三、实验内容:a)在DEBUG中进行编程和调试,完成问题四、实验报告要求:实验目的,实验要求,程序流程图,资源分配,程序清单(附有注释),并带有DEBUG调试时的机器码,实验中遇到的问题及解决方案。

实验1、基本指令应用实验要求1、完成以下各种功能。

1)、将AX的第13位置1。

2)、将BX的第5位、第6位屏蔽。

3)、测试AX第0位是否为1。

4)、将AX第5位、第9位取反。

1、OR AX,20002、AND BX,FF9F3、TEST AX,0001 ;ZF=0则第0位为14、XOR AX,02202、上机并分析以下程序段执行之后,(AL)=?MOV AX,51MOV DL,10DIV DLMOV CL, 4SHL AL,CLOR AL,AH3、通过指令将AX中的内容乘以十:SHL AX, 1MOV BX,AXSHL AX, 1SHL AX, 1ADD AX,BX实验2、两个压缩的BCD码数相加/减实验实验内容:1.压缩的BCD码加法程序(BCD1)=1834,(BCD2)=2789BCD1和BCD2均为压缩的BCD码,每个数占有2个字节,,高位数占有高位字节,其存放方式为:(BCD1)=34,(BCD1+1)=18;(BCD2)=89,(BCD2+1)=27;编程实现(BCD3)=(BCD1)+(BCD2)BCD1存放在以0200H开始的存储单元,BCD2存放着以0210开始的存储单元,结果BCD3存放在以0220H开始的存储单元参考程序如下:MOV AL,[0200]ADD AL,[0210]DAAMOV [0220],ALMOV AL,[0201]ADC AL,[0211]DAAMOV [0221],AL2.压缩的BCD码减法程序(BCD1)=4612H,(BCD2)=3576H编程实现(BCD3)=(BCD1)-(BCD2)其存放方式为(BCD1)=12H,(BCD1+1)=46H,存储在以0230H开始的存储单元(BCD2)=76H,(BCD2+1)=35H,存储在以0240H开始的存储单元结果BCD3存储在以0250H开始的存储单元参考程序如下:MOV AL,[0230]SUB AL,[0240]DASMOV [0250],ALMOV AL,[0231]SBB AL, [0241]DASMOV [0251],AL实验3实验内容:将1000H:0200H地址开始的10个字节传送到2000H:1000H开始的存储单元中。

DEBUG调试程序实验及截图

DEBUG调试程序实验及截图

实验二用DEBUG调试程序一、实验目的学习利用DEBUG调试程序的基本思想及方法二、实验环境:1.硬件:PC微机2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE三、实验内容1.被调试程序:DATA SEGMENTSTR DB 'Hello,World!$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START在编译器中输入上述程序,经汇编、连接生成可执行文件,然后DOS环境下输入DEBUG+可执行文件名,进入DEBUG调试阶段,1、反汇编命令U,-U↘:从当前IP处开始,对连续约32字节内容反汇编–U 0123↘:从指定的IP=0123处开始,对连续约32字节内容反汇编。

–U 0123 0143↘:从指定的IP=0123处开始反汇编,直至指定的0143处结束。

2、显示寄存器命令R:显示或修改寄存器的内容。

-R↘:显示所有寄存器当前的内容及当前将执行的指令。

3、运行命令G:使程序在DEBUG控制下运行4、单步命令T:控制程序运行一条指令后暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。

5、显示内存命令D:以十六进制及ASCII两种方式显示内存区的二进制数据,通常用来观察数据段内的缓冲区内容。

6、汇编命令A:用于在DEBUG环境下直接键入汇编语言语句、生成较简单的可执行代码而不必经过完整的汇编语言编程步骤,或者用来在调试过程中临时修改某条指令。

7、用来将被调试程序重新装载进内存中,一般用于程序运行结束后需继续调试程序时,或需从头开始调试程序时。

8、退出命令Q:键入此命令,即退出DEBUG状态,返回DOS。

DEBUG调试程序 (2)

DEBUG调试程序 (2)

一、实验目的1、掌握DEBUG的常用命令,学会使用DEBUG。

2、深入了解数据在存储器中的存取方法,及堆栈中数据的压入和弹出。

3、掌握各种寻址方法以及简单指令的执行过程。

二、实验设备及环境1.安装Windows 7操作系统的计算机三、实验内容及步骤(截图并对图示进行必要的文字说明)1、练习debug的命令1、汇编命令A(Assemble Command)将汇编语言程序直接会变进入内存2、反汇编命令U(Unassemble Command)将制定地址范围内的代码以汇编语言形式显示,同时显示该代码位于内存的地址和机器码3.显示内存单元内容命令D(Dump Command)显示制定内存范围的内容显示偏移地址为100-115的内容:4. 修改存储单元内容命令E(Enter Command)a. 用命令所给定的内容表去代替指定地址范围的内存单元内容。

b. 一个单元一个单元地连续修改单元内容。

例:往200H为起始地址的单元存放一串16进制数。

查看这些数据是否替换了原来单元的内容5、检查和修改寄存器内容命令R(Register Command)格式:a. R b. R [寄存器名]功能:a. 显示CPU所有寄存器的内容和全部标志位状态。

b. 显示和修改一个指定寄存器内容和标志位的状态。

例如:显示所有寄存器的内容和全部标志位状态例如:修改寄存器BX的内容为3000例如:修改标志位零ZF为ZR,方向标志DF为DN6、单步执行命令T(Trace Command)格式:a. T[=地址] b. T[=地址] [条数]例:用T命令格式b执行以上程序:若单步执行3条指令,可采用b格式。

7、运行命令G(Go Command)执行用户正在调试的程序8、退出命令Q (Quit Command)二.在DEBUG状态下,输入以下程序:1.a命令输入程序2.用检查和修改寄存器内容命令R设定BX=0300,SI=00023. 用修改存储单元命令E将数据0A,0B,0C,0D,0E,0F顺序地存入到偏移地址为300H开始的内存单元中4.用单步命令执行程序,并记录下每条指令执行结束后AX的内容。

debug调试

debug调试

DEBUG调试DEBUG.EXE是Windows自带的用于调试可执行程序的一个工具软件,可在命令提示符下计入,同时也是进行汇编语言程序设计的一种最有效的调试工具。

由于DEBUG调试程序可以对单条指令或几条指令组成指令序列进行汇编、执行,并可以观察到指令执行前后在寄存器或内存中的结果,并对指令中错误的使用予以拒绝汇编,对于初学指令的读者,通过DEBUG调试程序对指令的调试,不但对指令的功能,格式,影响FLAGS寄存器的状况有个直观的了解,还可以进一步了解数据在计算机中存放的格式、使用指令时应该注意的问题乃至计算机的工作原理。

1 DEBUG命令格式1.1 DEBUG调试程序的启动在命令提示符下,可键入如下命令启动DEBUG调试程序:DEBUG [路径\文件名] [参数1] [参数2][路径\文件名]是供DEBUG调试程序调试的程序名称及路径。

若Debug后不带文件名,仅运行Debug程序,在需要时,再用N和L命令调入被调试程序;若命令中带有被调试程序名,则运行Debug的同时,还将指定的程序调入主存;[参数1][参数2]被调试程序所需要的参数。

“DEBUG 文件名”方式的调试方式只启动DEBUG的调试方式在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符,此时就可用Debug来调试程序。

若启动DEBUG调试程序时,被调试程序扩展名是.EXE,则需要重新定位。

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

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

如上图所示,被调试的程序名是XIANSHI.EXE,在DEBUG调试程序提示符“-”下键入R命令,是显示当前CPU中所有寄存器的值,可见,CS:IP=0B60H:0000H(DEBUG调试程序中所有的数据均为十六进制,但不加尾标H),SS:SP=0B4BH:0000H,是由被调试的程序XIANSHI.EXE决定的,分别指向代码段和堆栈段。

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

用DEBUG调试程序示例
例如:编程实现两个字类型的数相加,把和存在存储单元中,并且用debug查看程序的运行结果,检查程序运行结果的正确性。

参考源程序如下:
DATA SEGMENT
NUM1 DW 1234H
NUM2 DW 5678H
SUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,NUM1
ADD AX,NUM2
MOV SUM,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
假设把源程序命名为jiafa.asm,输入源程序后,完成汇编、连接的过程,则生成了可执行文件jiafa.exe。

运行此可执行文件时在屏幕上无显示结果。

在debug下调试程序的步骤示例如下:
一、进入debug,同时把被调试程序调入内存。

回车后即进入了debug程序,结果如下图所示:
注意:被调试的是可执行文件,而且文件必须写全名,不能只写主文件名。

二、用u命令反汇编(输入u后回车),以便查找需要设置断点的地址。

三、设置断点运行
断点可以设置在程序中的任意一条指令的首地址处,但为了能够查看到程序的运行结果,一般把断点设置在主程序运行完并且程序退出之前,例如程序的最后两条指令是
MOV AH, 4CH
INT 21H
则把断点设置在MOV AH, 4CH处,(如果程序较长,一次反汇编没有找到上述指令,再次输入u命令后回车,直到显示上述指令为止,),对于本例,显示如下图所示的结果。

如上图示例中的指令mov ah,4ch的偏移地址是0000F,指令int 21h(debug下默认为16进制,不显示h)的偏移地址是0011,则用G命令设置断点运行时输入g0F(g是debug下的程序运行命令,后面的数字0F是刚才选定的断点地址)回车后结果如下图:
为了能够查看你的程序在内存单元中存放的数据,必须设置断点运行不能只用G命令,并且断点必须是你程序中的某条指令,一般设置在MOV AH, 4CH处。

四、查看内存单元中的数据
查看内存单元的内容用D命令,格式之一如下:
D段地址:偏移地址
查看数据段的内容则段地址处写上DS寄存器中的值,偏移地址一般写上0
查看附加段的内容则段地址处写上ES寄存器中的值,偏移地址一般写上0
例如查看数据段的值,输入D DS:0后回车,结果如下图所示:
对着源程序比较,数据段中偏移地址0000的单元中存的是源程序数据段中的第一个数1234H的低字节34H,偏移地址0001的单元中存的是源程序数据段中的第一个数1234H的高字节12H,偏移地址0002的单元中存的是源程序数据段中的第二个数5678H的低字节78H,偏移地址0003的单元中存的是源程序数据段中的第二个数5678H的高字节56H,接下来是和的低字节ACH,和的高字节68H。

(debug下默认为16进制数)如果需要查看附加段的值,输入D ES:0后回车,结果分析类似数据段的情况。

五、退出DEBUG
退出DEBUG状态用Q命令,输入Q后回车,回到dos提示符状态。

相关文档
最新文档