欢迎来到天天文库
浏览记录
ID:1245916
大小:157.78 KB
页数:7页
时间:2017-11-09
《熟悉debug调试环境实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一、Debug调试姓名:孙杨威学号:12281201班级:计科1202班任课教师:李济生一、实验目的1.进一步学习汇编语言基本指令使用方法;2.学习DEBUG调试工具的基本使用方法;掌握debug调试命令a、u、r、d、t、g3.等逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。二、实验题目1.编写、输入一个32位二进制数相加程序,逐条执行指令,观察指令执行情况。2.使用已经过汇编和连接的小程序(t3-2.exe),将其装入内存,逐条执行指令,观察执行过程和结果
2、。在实验过程中,使用D命令修改XXX和YYY单元中的数据,再重新计算其结果。三、实验过程1.启动计算机的WINDOWS操作系统,在开始菜单中找到“运行”,输入“cmd”后回车,启动ms-doscommand程序,再在该程序内输入“DEBUG”并按回车,即启动DEBUG调试程序。2.开始编程可以看到,对32位数的低16位操作时,存放地址是073F:0100,指令长度为3,即在寄存器类型的指令上增加1,在进行ADC加法指令时,考虑到了进位CF,所以指令长度为4。 使用r命令后,可以看到指令执行前各寄存器的内容,CS:
3、IP的内容为0100,执行的指令为MOV AX,F271,操作数寻址为立即数寻址,内存单元的值为0F271。使用t命令单步执行指令后,所得结果如图执行过程中,CS:IP的内容随指令长度的变化依次增加,标志位寄存器只有AF,PF,CF的值在计算过程中有变化,最后AF=AC,说明低4位向高4位有进位,而CF=CY,说明最高位有进位,OF=NV,表明计算结果没有溢出。对程序使用r命令查看寄存器AX,DX的值,如下图可知,AX=4909,DX=07D6,CF=1,说明运算结果低16位为4909,高16位为07D6,还有一
4、位进位1,即结果是107D64909,计算正确。2.打开t3-2.exe,并使用-u命令反汇编的将结果如下图:执行指令结果如下图:使用d命令查看程序运行过后的结果如下图,可以看到,内存单元的存放顺序是低地址放低字节,高地址放高字节,同时数据的存放是按顺序连续存放的,指令的存放与数据是同时的,都存放在连续的内存地址中,使用e命令对内存单元的内容进行修改,再次运行程序,可见结果也有了相应的改变。图表1四.实验体会通过本次实验我学会了如何在64位系统中使用debug,并初步了解了debug的功能和作用,以及相关工具的运
5、用。Debug基本指令a、u、r、d、t、g、e的用法使我收益匪浅。第一个实验是编写一个32位二进制数的加法,因为初步认识debug,不太熟悉,请教了同学才知道,的确费了很多力,有了一点经验,第二个实验做起来才得心应手了许多,这让我认识到万事开头难,只要不怕困难,最后一定能解决。思考题:1.程序中的指令、数据是如何在存储器中存储的?答:程序中的数据和指令都是按顺序分别在不同的段内存地址中存放的,低地址放低字节,高地址放高字节。2.如何理解程序执行过程的顺序性?答:之所以说程序是按顺序执行的,是因为在程序执行时,指
6、向代码段的内存偏移地址寄存器IP按照指令长度,从小到大,自动顺序跳跃。3.如何理解标志位寄存器中的数据?答:标志位寄存器中的数是用来指示当前指令执行之前各部分的状态,如从OF可以知道上次执行计算时有没有产生溢出,从ZF可以判断上条指令执行后是不是结果为0,同时,有的标志位寄存器还参与运算,如CF,AF,在算数运算中,标志位寄存器中的值是运算结果的一部分。
此文档下载收益归作者所有