<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=COM</id>
	<title>COM - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=COM"/>
	<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=COM&amp;action=history"/>
	<updated>2026-05-14T13:35:20Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=COM&amp;diff=692&amp;oldid=prev</id>
		<title>Zhang3：创建页面，内容为“'''这里是关于可执行文件的格式，而不是微软的Component Object Model''' {{Stub}} {{File formats}} ==COM文件== ===导言=== COM文件是非常简单的可执行文件。 它们在加载程序时非常有用，不会出现诸如重新定位符号、读取文件头等复杂情况。  然而，它们的简单性可能会使它们的实用性受到限制，因此一旦操作系统升级，您可能希望支持更复杂但有用的东西，比…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=COM&amp;diff=692&amp;oldid=prev"/>
		<updated>2022-02-28T08:17:50Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&amp;#039;&amp;#039;&amp;#039;这里是关于可执行文件的格式，而不是微软的&lt;a href=&quot;/index.php?title=Component_Object_Model&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Component Object Model（页面不存在）&quot;&gt;Component Object Model&lt;/a&gt;&amp;#039;&amp;#039;&amp;#039; {{Stub}} {{File formats}} ==COM文件== ===导言=== COM文件是非常简单的可执行文件。 它们在加载程序时非常有用，不会出现诸如重新定位符号、读取文件头等复杂情况。  然而，它们的简单性可能会使它们的实用性受到限制，因此一旦操作系统升级，您可能希望支持更复杂但有用的东西，比…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''这里是关于可执行文件的格式，而不是微软的[[Component Object Model]]'''&lt;br /&gt;
{{Stub}}&lt;br /&gt;
{{File formats}}&lt;br /&gt;
==COM文件==&lt;br /&gt;
===导言===&lt;br /&gt;
COM文件是非常简单的可执行文件。 它们在加载程序时非常有用，不会出现诸如重新定位符号、读取文件头等复杂情况。  然而，它们的简单性可能会使它们的实用性受到限制，因此一旦操作系统升级，您可能希望支持更复杂但有用的东西，比如[[ELF]]。&lt;br /&gt;
&lt;br /&gt;
COM文件曾被MS-DOS使用。  它们是原始二进制文件，这意味着没有头数据。  此外，COM文件的大小限制为一个段（实地址模式段，64kb）减去256字节。  加载COM文件时，假定所有代码和数据都塞入一个段，并加载到偏移量0x100。&lt;br /&gt;
&lt;br /&gt;
MS-DOS创建并存储一个信息结构，从偏移量0开始，在0x100之前结束，称为程序段前缀（Program Segment Prefix-PSP）。 PSP是在COM程序启动前制作的。  更多关于PSP的信息可以在 [https://web.archive.org/web/20061101031637/http://heim.ifi.uio.no/~stanisls/helppc/program_segment_prefix.html 这里]找到。 PSP仅用于运行DOS程序。&lt;br /&gt;
&lt;br /&gt;
COM文件通常以RET指令终止。 在DOS上，RET从堆栈中弹出一个空字，这会导致调用中断0x20（DOS API的出口）。&lt;br /&gt;
&lt;br /&gt;
===装载===&lt;br /&gt;
要加载COM文件，需要将其加载到内存较低的位置，用0x100 org将ds和es指向文件的开头，然后用偏移量0x100跳转到开头。（译者注：Intel内存地址使用是递增的？）&lt;br /&gt;
==另见==&lt;br /&gt;
===可执行文件===&lt;br /&gt;
====16位====&lt;br /&gt;
*[[MZ]]&lt;br /&gt;
*[[NE]]&lt;br /&gt;
====32位====&lt;br /&gt;
*[[PE]]&lt;/div&gt;</summary>
		<author><name>Zhang3</name></author>
	</entry>
</feed>