返回介绍

附录 C 可执行文件格式

发布于 2025-03-09 23:09:36 字数 1812 浏览 0 评论 0 收藏 0

附录 C

可执行文件格式

DOS 操作系统支持两种不同类型的可执行文件:.exe 文件和.com 文件。前者允许大的程序和在内存中使用多个段,后者用于安装到一个段里面(即,最大 64Kb) 的小程序 [Dun88b]。

C.1 .exe 文件

.exe 文件由一个头部和一个装入模块组成,如图 C-1 所示。文件头部有 28 字节的固定格式区和一个大小可变的重定位表。装入模块是一个完全链接(fully linked) 的程序映像;没有关于如何从模块中分割段的信息,因为 DOS 不管程序如何分段。

图 C-1: .exe 文件的结构

头部格式区的结构见图 C-2 所示。一页的大小是 512 字节,一节(paragraph) 的大小是 16 字节。程序映像的大小用格式区的值计算出来,即文件大小和头部大小之差。文件大小由文件页数(只入不舍) 和最后一页所用字节尺寸给出。

重定位表是一个字指针列表,每个指针指向装入模块里面需要调整的一个字。对这些字的调整就是把它们加上该程序要被装入到的起始段地址。这个表里的指针被储存为相对装入模块的两个字。

字节

描述

00-01h

.exe 签名(4Dh, 5Ah)

02-03h

在最后页中的字节数

04-05h

页数(只入不舍)

06-07h

在重定位表中的项目数

08-09h

在头部中的节数

0A-0Bh

数据和堆栈要求的最小节数

0C-0Dh

最大内存节数

0E-0Fh

预先重定位的最初 ss 值

10-11h

最初的 sp 值(绝对数值)

12-13h

补足的校验和(二进制反码)

14-15h

最初的 ip 值

16-17h

预先重定位的 cs 最初值

18-19h

重定位表偏移量

1A-1B

覆盖数(默认:0000h)

图 C-2: 固定格式区

C.2 .com 文件

.com 文件是一个没有头部的映像程序(即,相当于一个.exe 文件的装入模块),因此该程序照“原样”被装入内存。与.exe 程序相比,.com 程序只能使用一个段(最大 64Kb)。这些程序被设计用于把 CP/M 程序移植到 DOS 环境。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文