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



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

我该怎么做?

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

  1. 创建一个";bootloader";它调用一个简单的";内核";不一定很难。。。但这也不是一行字就能回答的问题。

  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()";。

建议

试着学习本教程(网上有很多类似的例子):

  • 在汇编和C中编写引导加载程序-第1部分

  • 在汇编和C中编写引导加载程序-第2部分

相关内容

  • 没有找到相关文章