我最近在我的笔记本电脑上下载了 MS-DOS 6,我希望能够在 cmd 上执行所有命令,但我需要将 .exe 转换为 .com,我会下载任何软件来执行此操作。
答案1
我认为您对 .com 和 .exe 扩展名的含义有点困惑。
- .com 本质上是内存的映像,大小限制在 64K 以内(实际上更像是 0xFF00 字节,呃,65,280,从技术上讲,因为前 256 个字节用于 cmd 行和其他内容)
- .exe 是一个链接程序,(可能)由库和代码、资源等部分组成,大小基本上是无限的,尽管存在物理内存限制)
两者的功能都与命令一样好,事实上,查看您的 DOS 子目录,您会发现一些分散的 .com 文件和一堆 .exe 文件。不要混淆问题,认为只有 .com 文件才是命令。这只是一个命名约定。
它确实与 MSDOS 的 CP/M 根源有关,因为程序大小被限制为 64k,而较大的程序必须将自身分页到内存中……这些被视为命令。但值得庆幸的是,我们已经超越了 CP/M 的限制……进入了一套全新的限制……但那是另一个故事。
希望这有帮助。
答案2
存在不同类型的 EXE 文件。有些可以在 MS-DOS 上运行,而有些则需要 Windows。可以在 MS-DOS 上运行的则不需要任何转换。
为 Windows 编译的 EXE 文件即使接受命令行参数并生成控制台输出,也无法在 DOS 上运行。它们依赖于 Windows 功能和 API(应用程序编程接口)才能正常工作。
如果您尝试在 DOS 上运行 Windows EXE 文件,您将收到以下消息:
This program cannot be run in MS-DOS mode.
答案3
所有其他答案都很好,除此之外,还可以告诉您,在 DOS 的旧时代,COM 可执行文件是加载在 L1 缓存中的,这是最接近 DOS 时代的多任务处理。
例如:Mouse.com,被加载到缓存中,那么您运行的所有其他后续程序都可以使用鼠标;
386处理器可以支持16到64KB的缓存
486 处理器中,8 KB 缓存直接集成在 CPU 芯片中。此缓存被称为 1 级或 L1 缓存,以区别于速度较慢的主板缓存或 2 级 (L2) 缓存。这些主板缓存要大得多,最常见的大小为 256 KB。
在 386、486 和 x86 的动荡时期,一些 dos 游戏无法在 486 上正确运行,因为没有足够的 L1 缓存来加载 386 时代所需的所有 COM,想想鼠标、声音、CDROM、MEMCACHE。例如,过了一段时间,您必须选择无声运行游戏才能使用鼠标玩游戏。