我正在编写启动加载程序并使用545字节文件,我不知道如何加载。如果它是存储在第二扇区中的512字节文件,则可以很容易地将其加载到存储器中。但这对我来说似乎有点奇怪。
我该怎么做?
答案 0 :(得分:2)
关于已删除的问题,How do I embedded C and Assembly in 16 bit?:
创建" bootloader"这会调用一个简单的"内核"并非一定有困难......但是,你不能在单行问题中回答这个问题。
第一个问题是 - 问:你的目标平台是什么?
听起来像 - 答:从FAT(或FAT32)启动媒体加载的Intel x86 CPU。
第二个问题=问:您的"开发工作站&#34 ;?您是在编译/组装代码并在Windows上创建启动映像吗?在Linux上? "别的"?让我们假设" linux"。出于多种原因,这是一个很好的选择"。
正如其他人所指出的,这个C程序不是你的内核的好选择":
main.c =>
#include<stdio.h>
int main(int argc, char *argv[]) {
printf("Hello world!!!");
return 0;
}
您需要链接到C运行时库(&#34; CRTL&#34;)才能获得&#34; printf()&#34;。
< / LI>您还需要事先调用crt0.obj才能获得&#34; main()&#34;。
即使您这样做,您选择的CRTL和crt0.obj也可能与16位实模式不兼容。
即使你涉及1),2)和3),你仍然需要一个操作系统(例如DOS,Linux或Windows)来实际执行&#34; printf() &#34;
<强> SUGGESTION 强>:
尝试完成本教程(网上有很多类似的例子):