operating-system - 如何制作 MSDOS .com 文件?

标签 operating-system command dos

如何为 MS-DOS 制作 .com 文件?我有自己的“操作系统”PowerOS,并且我希望能够输入自定义命令。有没有办法编写.com文件?

最佳答案

答案相当简单。通过用编程语言编写程序并使用面向 MS/PC/DR-DOS 的编译器进行编译,可以创建包含 MS/PC/DR-DOS 程序镜像的 .COM 文件。就是这样。

不要对文件扩展名感到困惑。有一个.COM程序镜像文件格式,这是一种相当基本的程序镜像格式。它在 20 世纪 80 年代被“MZ”程序图像文件格式取代。但这与文件扩展名无关。 MS/PC/DR-DOS 的程序镜像文件可以具有扩展名.COM 或扩展名.EXE,但实际的镜像文件格式 不是由这个决定的。 (我提到了 DR-DOS。如果内存正常的话​​:在 DR-DOS 版本 6 中,几乎所有程序镜像文件,甚至是名为 .COM 的文件,实际上都是“MZ”格式的可执行文件,并且经过压缩那些。)

您的操作取决于操作系统的程序加载器能够理解的程序镜像文件格式。事实上,只有可以告诉世界这一点。如果您的操作系统的程序加载器能够理解“MZ”可执行文件格式,并且您的操作系统上运行的程序是16位且以实模式运行,那么为您的操作系统编译命令就很简单(忽略系统调用和库)问题),例如,启动 OpenWatcom的 16 位编译器+链接器 wcl,并使用 -bcl=DOS 选项告诉它以 MS/PC/DR-DOS 为目标。

当然,如果您的程序是32位并且您的操作系统在保护模式下运行它们,或者即使您的程序是16位并且您的操作系统在保护模式下运行它们,那么“MZ”文件格式将不适合您的需求,您应该使用 one of the several alternative program image file formats .

关于operating-system - 如何制作 MSDOS .com 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6471184/

相关文章:

windows - 批处理文件中的for循环

linux - Linux内核中哪些内核线程负责发送网络数据包

java - 如何访问线程中 Runnable 对象的字段

operating-system - 为什么在临界区中休眠是并发问题?

mysql - 重用 phpbb 连接向 mysql 添加一条记录

linux - 重启后自动直接运行一个shell命令并保持运行

linux - 可执行文件在Linux上删除自身

build-automation - 批处理文件中的字符串符号操作?

c - 多个管道和进程

batch-file - 使用用户输入自定义 .bat 关机命令