四川大学网络教育学院实践课程报告实践课程使用DEBUG调试工具校外学习中心阿拉善奥鹏专业电气工程及其自动化层次专升本年级0803学生姓名郭岩峰学号2008020368282011年2月25日1.实验目的(1)熟悉DEBUG有关命令的使用方法。(2)利用DEBUG掌握有关指令的功能。(3)利用DEBUG运行简单的程序段。2.实验内容(1)进入和退出DEBUG程序。进入DEBUG程序,Windows中在命令提示符下进入DEBUG如图:退出DEBUG如图:(2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下。R命令:1)显示所有寄存器内容:格式:-R↙功能:以十六进制形式显示CPU内部各寄存器的值:以符号形式标志寄存器各标志位(除TF外)的值,并将CS:IP所指的内存内容反汇编成一条指令,可视为将要执行的指令。从显示可知,CS=10C1H,IP=0100H.2)修改寄存器格式:-R寄存器名↙功能:DEBUG首先显示指定寄存器的当前值,并在下一行首给出提示“:”,等待用户输入新值,若直接回车相当于不个忙寄存器的值。3)修改标志值格式:-RF↙功能:先用符号显示当前各标志位的值,并在末尾给出提示符“-”,然后等待用户以符号形式输入新的标志值,对输入的次序没有要求,各标志值之间也可没有空格;若直接在“-”之后回车,则保留原标志值。A命令格式:-A内存地址↙U命令格式:-U内存块↙N命令W命令T命令1)单步执行格式:-T=内存地址↙-P=内存地址↙(好像不好使)2)多步执行格式:-T=内存地址执行指令条数↙-P=内存地址执行指令条数↙(好像也不好使)G命令格式:-G=内存地址断点地址↙D命令格式:-D内存块↙E命令格式1:-E内存地址字符或数值串↙格式2:-E内存地址(3)利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。1)乘法2)除法3)加法4)减法5)带进位加6)带借位减7)堆栈操作指令8)串操作指令3.实验准备(1)仔细设计有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。(2)作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。(3)阅读将AX左移9位的程序段。4.实验步骤(1)在DOS提示符下,进入DEBUG程序。在DOS子目录下启动DEBUG。(2)详细记录每一步所用的命令,以及查看结果的方法和具体结果。例:显示S例:ABC实验程序如下:DATASEGMENTARRAYDB80,250,200,100,50COUNTEQU$-ARRAYSUMDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,0MOVDI,OFFSETSUMMOVBX,OFFSETARRAYMOVCX,COUNTLOP:ADDAL,[BX]ADCAH,0INCBXLOOPLOPMOV[DI],AXMOVAH,4CHINT21HCODEENDSENDSTART内容:编辑习题3-2,3-3的程序并对其进行连接和执行还要单步查看每一语句执行后相关寄存器的内容,并且调试附录B.3的例子,熟悉DEBUG的执行程序3-2源程序:DATASEGMENTBUFDB'HOWAREYOU$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETBUFMOVAH,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTART结果:将所编写的程序进行连接运行后,通过DEBUG指令进行反汇编.首先,进入调试环境后用-r指令可以看到CS=1541,IP=0000,即程序是从1451:0000处开始执行的.用-u指令对原程序进行了反汇编,可以看到在实际的计算机内部的具体执行情况,通过该指令我们可以对源程序进行检查来查找错误加以修改.用-DB49:0指令可以显示出逻辑数据段的值可以看到具体数据与其所对应的字符.用-G14指令可看到本例中在1451:0014设置了断点.用-DDS:0指令可以查看数据传递的执行情况.收获:通过这次上机实验我熟悉了汇编语言源程序的书写格式.编辑,汇编,连接,运行等过程.对汇编程序有了初步的了解.并且发现了一些比较容易出错的地方,例如,当自己编写的程序忘了在名称后加上其扩展名是,连接时就会提示:UNABLETOOPENTHISFILE另外当在连接时把其文件名写错时也会出现这种情况.还有就是在编辑文件时一定要在MASM文件夹下进行,否则就会出现文件路径不对的问题.再者就是我按附录进行操作时得到的结果并不完全和课本上的一样,这主要是使用的机子的类型不一样的原因.我还对反汇编指令DEBUG有了一定的认识,知道可以通过它来对源程序进行检查(当运行结果与预想的不一样时).总之,我在上机实验当中学到了一些在课本上不易掌握的知识,对汇编语言也有了更进一步的了解,学会了汇编的大致流程.