如何从引导加载程序将545字节(或更多)文件加载到内存中?

时间:2016-04-12 18:54:07

标签: assembly operating-system kernel bootloader bochs

我正在编写启动加载程序并使用545字节文件,我不知道如何加载。如果它是存储在第二扇区中的512字节文件,则可以很容易地将其加载到存储器中。但这对我来说似乎有点奇怪。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

关于已删除的问题,How do I embedded C and Assembly in 16 bit?

  1. 创建" bootloader"这会调用一个简单的"内核"并非一定有困难......但是,你不能在单行问题中回答这个问题。

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

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

  3. 第二个问题=问:您的"开发工作站&#34 ;?您是在编译/组装代码并在Windows上创建启动映像吗?在Linux上? "别的"?让我们假设" linux"。出于多种原因,这是一个很好的选择"。

  4. 正如其他人所指出的,这个C程序是你的内核的好选择":

  5. main.c =>

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

      < / LI>
    2. 您还需要事先调用crt0.obj才能获得&#34; main()&#34;。

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

    4. 即使你涉及1),2)和3),你仍然需要一个操作系统(例如DOS,Linux或Windows)来实际执行&#34; printf() &#34;

    5. <强> SUGGESTION

      尝试完成本教程(网上有很多类似的例子):