-1

我正在编写引导加载程序并坚持使用一个 545 字节的文件,我不知道如何加载。如果它是一个 512 字节的文件存储在第 2 扇区,它可以很容易地加载到内存中。但这对我来说似乎有点奇怪。

我该怎么做呢?

4

1 回答 1

3

关于您删除的问题,如何在 16 位中嵌入 C 和汇编?

  1. 创建一个调用简单“内核”的“引导加载程序”并不一定很困难……但这也不是您可以在一个问题中回答的问题。

  2. 第一个问题是——问:你的目标平台是什么?

    听起来像 - A:从 FAT(或 FAT32)启动媒体加载的 Intel x86 CPU。

  3. 第二个问题= Q:你的“开发工作站”是什么?您是否正在编译/组装您的代码并在 Windows 上创建您的启动映像?在 Linux 上?“别的”?让我们假设“linux”。出于许多原因,这是一个“不错的选择”。

  4. 正如其他人指出的那样,这个 C 程序不是您的“内核”的好选择:

main.c =>

#include<stdio.h>

int main(int argc, char *argv[])  {
  printf("Hello world!!!");
  return 0;
}
  1. 您需要链接到 C 运行时库(“CRTL”)才能获得“printf()”。

  2. 您还需要事先调用 crt0.obj 以获得“main()”。

  3. 即使您这样做了,您选择的 CRTL 和 crt0.obj 也可能与 16 位实模式不兼容。

  4. 即使您涵盖了 1)、2) 和 3),您仍然需要一个操作系统(例如 DOS、Linux 或 Windows)才能实际执行“printf()”。

建议

尝试完成本教程(网络上有许多类似的示例):

于 2016-04-16T19:50:29.323 回答