实验8EXE文件装载实现分解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验8 EXE文件装载实现 实验类型及目的 综合型实验; 学会分析exe文件头; 理解并掌握文件重定位; 掌握操作系统如何调入可执行文件来运行; 体会操作系统部分核心功能的实现。 实验内容 本实验主要完成DOS下的EXE文件装载过程,通过分析EXE文件头,确定文件的数据区、代码区和堆栈区,对EXE文件的各个部分进行装载和重定位。 在DOS环境下编写一个可显示本人姓名的程序并生成可执行文件; 编写装载程序,把该可执行文件装入内存中。 实验要求 编写程序完成实验内容; 画出装载函数流程图; 撰写实验报告。 本实用可以分组进行,每组人数不得多于3人。 测试要求 装载文件3次以上,检测并比较运行结果。 实验指导 直接将EXE型程序装入内存是不能运行的,因为EXE型程序中的地址从0开始编号,在实模式下经过重定位后方可运行。 EXE程序的重定位是根据EXE文件头信息进行的。EXE文件由2部分组成:文件头和文件主体。 实验指导 18h-19h中存放第一个重定位项的位置,从文件起始单元算起,例如1E00表示在文件的1E00位置开始的4个字节为程序主体中的第一个重定位项的位置,这4个字节若表示从程序主体起始单元算起位置为第一个重定位项的位置。从文件的1E00位置开始的每4个字节为一个重定位项的位置。CS段不用重定位。 注:实验环境采用DOS环境,EXE文件最好在DOS环境下编译,在windows环境下编译的可执行文件,头部信息会有所不同。 偏移 说明 00-01 EXE型程序标志=4D5A 02-03 文件长度mod512的余数 04-05 文件扇区数,每扇区512字节 06-07 重定位项数 08-09 文件首部长度,以节为单位,每节16字节 0a-0b 加载文件所需的最小节数 0c-0d 加载文件所需的最大节数 0e-0f 栈首址,以节为单位,从程序主体开始算起 10-11 SP值 12-13 文件中所有字的负数相加 14-15 IP值 16-17 CS值,以节为单位,从程序主体开始算起 18-19 第一个重定位项的位置,从文件起始单元算起 1a-1b 覆盖号(0表示程序驻留) 1c- 可变保留区 EXE文件头

文档评论(0)

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

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

1亿VIP精品文档

相关文档