有图示的用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 的使用
【实验环境】
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 调试汇编语言程序段一、实验目的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的使用方法
实验内容:编制程序
实现从键盘输入有符号十进制数子程序
子程序从键盘输入一个有符号十进制数
负数用"-"引导
正数直接输入或者用"+"引导
在主程序中给出输入的数的个数为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环境中的编程调试一、主要仪器设备:微型计算机(装有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调试程序的基本思想及方法二、实验环境: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)
一、实验目的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.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程序的使用一﹑实验目的: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 的使用
(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手册(带画面)
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课件
例如,
- 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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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提示符状态。