有图示的用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决定的,分别指向代码段和堆栈段。

实验一DEBUG程序调试实验

实验一DEBUG程序调试实验

实验一 DEBUG程序的使用一﹑实验目的:1.学习使用DEBUG程序的各种命令,熟悉宏汇编编程环境。

2.掌握用DEBUG调试自编程序的方法,为以后实验打下基础。

3.通过实验掌握下列知识:①8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG②BCD码,ASCII码及用16进制数表示二进制码的方法。

③8088寄存器: AX,BX,CX,DX,标志寄存器F,IP。

二、微机原理上机步骤:1.进入系统C:\>CD MASM (回车)2.编辑汇编语言源程序C:\MASM>edit 文件名.asm(回车)3.汇编源程序:C:\MASM>masm 文件名.asm(回车)4.连接目标程序:C:\MASM>link 文件名.obj(回车)5.运行可执行程序:C:\MASM>文件名(回车)注意:红色字符为系统提示符。

若C盘没有MASM文件夹,则建立该文件夹。

6.重复以上2~5步,直至显示正确结果为止,记录下正确程序,做实验报告。

三﹑实验内容:1.掌握DEBUG程序的各种命令,重点是A,R,D,E,U,T,P,G,F,H命令的使用。

2.DEBUG 命令使用:①打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。

②用命令 F100 10F 'A' 将'A'的ASCII码填入内存。

③用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。

④用命令 F110 11F 41 重复上二项实验,观察结果并比较。

⑤用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?⑥用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH⑦用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。

实验二 调试程序 DEBUG 的使用

实验二 调试程序 DEBUG 的使用

(7)用 R 命令检查各寄存器内容,特别注意 AX,BX,CX,DX,IP 及标 志位中 ZF,CF 和AF 的内容。 (8)用 R 命令将 AX,BX 内容改写为 1050H 及 23A8H。 (9)比较下面指令的区别: ・ MOV AX,2000H ・ MOV BX,[2000H] 一 D 2000 2001;显示字存储 单元 DS:2000 的内容 3ADC:2000 5A 58 一 R;显示指令执行前 AX,BX的内容 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=3ADC ES=3ADC SS=3ADC CS=3ADC IP=0100 NV UP EI PL NZ NA PO NC 3ADC:0100 858CFFF3 TEST CX,[SI+F3FF] DS:F3FF=74C0 一 A ;利用 A命令输入汇编 指令 3ADC:0100 MOV AX,2000 3ADC:0103 MOV BX,[2000] 3ADC:0107 INT 3 ;此中断为断点中断,使程序执行暂停 3ADC:0108 一 G;不指定地址,从当前 CS:IP 处执行 AX=2000 BX=585A CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=3ADC ES=3ADC SS=3ADC CS=3ADC IP=0107 NV UP EI PL NZ NA PO NC 3ADC:0107 CC INT 3;指令执行后,AX=2000H,BX=585AH 2.以寄存器 BX 作为地址指针,从 BX 所指的存储单元开始起,连 续存放着两个无符号数(字操作数),编程求它们的和,并将结果存 放在这两个数之后。

程式DEBUG手册(带画面)

程式DEBUG手册(带画面)
verfy或是pins這個指令會再找一次被選到的pin並告訴你它是被drivehigh或是drivelow或是放在高阻阬或是這個接收器只會測到高的部分當你想知道你的測詴是否完全可以利用這個功能
Agiletn 3070 ICT
பைடு நூலகம்
Analog Debug 操作指導
Debu完成save之后,一定要執行compile and go, 將debug的文字檔轉換成執行檔
* 執行(Execute) 這部分的選單是在執行目前己載入的測詴,一般而言,在特定 的類比測詴中,第一個錯誤訊息會中止測詴的其它部分。但是若使 用這些debug選項時,就可以強迫這個測詴做更多其它的部分。 EXCUTE TO END:執行所有的測詴並忽略錯誤訊息。 EXCUTE TO FAIL:執行測詴程式到第一個錯誤訊息即中止 EXCUTE TO VECTOR。。。:可以允許你對一個特定的vector執行程式, 並在此停住。在debug的圖示視窗中,你會看見數字應用在每個vector 上,而這些數字在這個模式中是被當做輸入。 RECYCLE TO END:從最前面的部分開始,重覆執行這個測詴 直到結束,在遇到第一個錯誤訊息亦不會中止,除非按下Break Command,否則不會停止。
DISPLAY GRAPHICS:設定所有之信號以波形顯示。
DISPLAY HEX:這會在螢幕上以十六進位的方式顯示出輸入和 輸出的資料,這個工具在處理不容易以圖解方式表示的address 或是data時,是非常有用的。 DISPLAY STATES:顯示出邏輯式的狀態,以二進位,八進位 或十六進位的模式顯示。 MARKER START AT。。。:可以允許你在螢幕上設定標記。
DISPLAY DEFAULT:這個圖解式的視窗會顯示出在接收處的節點之實際狀 態及在雙向節點上所量得的實際狀態以及在driver的節點上所期望的drive標 準。在先前debug的成果中可能會有重覆定義,這個選項可以讓你回歸到系 統內定值(default值)。 DISPLAY ACTUAL:執行這個測詴時,所選擇的輸出在被系統測量後,會 顯示出來。因為在drive-only的節點上,並沒有接收的電路系統。你必須在 drive節點上以手動的探針取代探針,顯示實際的訊號。 DISPLAY EXPECTED:這個測詴執行時,所有選到的pin,都會顯示出它們 應該產生的期望訊號。使用Failure,Acture及Expected時,可以看出那裏發生 錯誤,它原本的期望值以及它接收了什麼。 注意:drivers只能以Expect顯示出來,硬體(如driver)在驅動時是 不能被測量的,如果要看實際的driver訊號,必須使用手動探棒。

Debug的使用方法PPT课件

Debug的使用方法PPT课件

例如,
- r ax
系统将响应如下:
AX F1F4 :
即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,键入欲修改的内容如:
- r bx BX 0369 :059F
则把BX寄存器的当前内容修改为059F。
其中: drive: 是指定DEBUG文件的磁盘驱动器标识符,DEBUG是外部DOS命 令,所以必须把它从磁盘读入内存。若未指定,DOS将使用当前默认磁 盘驱动器。 path: 是DOS查找DEBUG文件的一个子目录串表示的路径。若未指定, DOS将使用当前工作目录。 d: 是DEBUG将要调试的文件所在的磁盘驱动器。 p: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS 使用当前目录。 [.ext] 是DEBUG将要调试的文件名。 param 是将被调试的程序(或文件)的命令行参数。
2020/10/13
6
修改存储单元内容的命令
1. 输入命令E(Enter)
有两种格式:
1) 第一种格式可以用给定的内容表来替代指定范围的存储单元内容。 命令格式为: -E address [list]
例如,-E DS:100 F3'XYZ'8D 其中F3,‘X’,‘Y’,‘Z’和8D各占一个字节,该命令可以用这五个字节来替代 存储单元DS:0100到0104的原先的内容。
直到填满指定的所有单元为止。
2020/10/13
8
检查和修改寄存器内容的命令R(Register)
1. 显示CPU内所有寄存器内容和标志位状态
格式: -R 例如,
-r AX=0000 BX=0000 CX=010A DS=18E4 ES=18E4 SS=18E4 18E4:0100 C70604023801
  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提示符状态。

相关文档
最新文档