BIOS是否将512字节的引导加载程序复制到0x7c00 [英] Does the BIOS copy the 512-byte bootloader to 0x7c00

查看:20
本文介绍了BIOS是否将512字节的引导加载程序复制到0x7c00的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在写内核,在写这么复杂的东西之前,我想对内核、Bootloader、寄存器、BIOS等做一些理论上的阅读不仅是有帮助的,而且是必要的。

This article说(我引用):

The boot sector loader. 
This loads the first 512-byte sector from the boot disk into RAM and jumps to it.

然后它接着说:

The first sector of a diskette can be loaded at address 0000:7C00. 

因此,引导扇区加载器将驻留在内存地址0x7C00(如果我是正确的话)的磁盘的512字节数据加载到RAM中;现在,我的问题是:

  • 由于计算机正在启动,RAM必须为空,因此它加载的引导加载程序位于RAM的0x0000处?
  • (实际上与此上下文无关)是否有办法获得GRUB Legacy(v.9x)引导加载程序的源代码说明?
  • 最后,有什么我应该读的文章/书来熟悉内核等吗?

我有6年的编程经验,但他们都是在内核使之成为可能的系统上使用高级语言。

如有任何帮助,我们将不胜感激。谢谢!:)

推荐答案

..。引导扇区加载器将驻留在内存地址0x7C00(如果我是正确的话)的软盘的512字节数据加载到RAM

.

由于计算机正在启动,所以RAM必须为空,所以它在RAM的0x0000处加载的引导加载程序?

没有。0000:7C00是指RAM地址。RAM是指随机存取存储器,意味着可以直接访问存储器中的每个位置。没有任何东西可以与空RAM&q;相提并论。您还可以参考inT13中断函数"Read Sectors From Drive":其中一个参数(传入的ES:BX)需要指向将存储扇区内容的目标地址。因此,BIOS所做的是从驱动器加载512字节并将其存储到0000:7C000000:7DFF中,然后跳转到0000:7C00以执行主引导加载程序代码。

有没有我应该读的文章/书来熟悉内核等?

此Wiki非常有用:http://wiki.osdev.org/Main_Page。有关引导过程,请参阅http://wiki.osdev.org/Boot_Sequence

这篇关于BIOS是否将512字节的引导加载程序复制到0x7c00的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆