熟悉DEBUG调试环境实验.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
熟悉DEBUG调试环境实验

实验一、Debug调试 姓名:孙杨威 学号 班级:计科1202班 任课教师:李济生 一、实验目的 进一步学习汇编语言基本指令使用方法; 学习DEBUG调试工具的基本使用方法;掌握debug调试命令a、u、r、d、t、g 等逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。 二、实验题目 编写、输入一个32位二进制数相加程序,逐条执行指令,观察指令执行情况。 使用已经过汇编和连接的小程序(t3-2.exe),将其装入内存,逐条执行指令,观察执行过程和结果。在实验过程中,使用D命令修改XXX和YYY单元中的数据,再重新计算其结果。 三、实验过程 1. 启动计算机的WINDOWS操作系统,在开始菜单中找到“运行”,输入“cmd”后回车,启动ms-dos command程序,再在该程序内输入“DEBUG”并按回车,即启动DEBUG调试程序。 2. 开始编程 可以看到,对32位数的低16位操作时,存放地址是073F:0100,指令长度为3,即在寄存器类型的指令上增加1,在进行ADC加法指令时,考虑到了进位CF,所以指令长度为4。?使用r命令后,可以看到指令执行前各寄存器的内容,CS: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,还有一位进位1,即结果是107D64909,计算正确。 2. 打开t3-2.exe,并使用-u命令反汇编的将结果如下图: 执行指令结果如下图: 使用d命令查看程序运行过后的结果如下图,可以看到,内存单元的存放顺序是低地址放低字节,高地址放高字节,同时数据的存放是按顺序连续存放的,指令的存放与数据是同时的,都存放在连续的内存地址中, 使用e命令对内存单元的内容进行修改,再次运行程序,???见结果也有了相应的改变。 图表  SEQ 图表 \* ARABIC 10 实验体会 通过本次实验我学会了如何在64位系统中使用debug,并初步了解了debug的功能和作用,以及相关工具的运用。Debug基本指令a、u、r、d、t、g、e的用法使我收益匪浅。第一个实验是编写一个32位二进制数的加法,因为初步认识debug,不太熟悉,请教了同学才知道,的确费了很多力,有了一点经验,第二个实验做起来才得心应手了许多,这让我认识到万事开头难,只要不怕困难,最后一定能解决。 思考题: 1.程序中的指令、数据是如何在存储器中存储的? 答:程序中的数据和指令都是按顺序分别在不同的段内存地址中存放的,低地址放低字节,高地址放高字节。 2.如何理解程序执行过程的顺序性? 答:之所以说程序是按顺序执行的,是因为在程序执行时,指向代码段的内存偏移地址寄存器IP按照指令长度,从小到大,自动顺序跳跃。 3.如何理解标志位寄存器中的数据? 答:标志位寄存器中的数是用来指示当前指令执行之前各部分的状态,如从OF可以知道上次执行计算时有没有产生溢出,从ZF可以判断上条指令执行后是不是结果为0,同时,有的标志位寄存器还参与运算,如CF,AF,在算数运算中,标志位寄存器中的值是运算结果的一部分。

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档