为什么主引导记录的内存地址是0x7C00?

Posted lmaster

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么主引导记录的内存地址是0x7C00?相关的知识,希望对你有一定的参考价值。

转自:http://www.ruanyifeng.com/blog/2015/09/0x7c00.html

当时,搭配的操作系统是86-DOS。这个操作系统需要的内存最少是32KB。我们知道,内存地址从0x0000开始编号,32KB的内存就是0x0000~0x7FFF

8088芯片本身需要占用0x0000~0x03FF,用来保存各种中断处理程序的储存位置。(主引导记录本身就是中断信号INT 19h的处理程序。)所以,内存只剩下0x0400~0x7FFF可以使用。

为了把尽量多的连续内存留给操作系统,主引导记录就被放到了内存地址的尾部。由于一个扇区是512字节,主引导记录本身也会产生数据,需要另外留出512字节保存。所以,它的预留位置就变成了:


  0x7FFF - 512 - 512 + 1 = 0x7C00 

0x7C00就是这样来的。

以上是关于为什么主引导记录的内存地址是0x7C00?的主要内容,如果未能解决你的问题,请参考以下文章

为什么主引导记录的内存地址是0x7C00?

x86下SylixOS引导过程分析

第二课 一个简单的“引导程序”

CPU工作原理

在引导加载程序中跳转到0x7C00不会引起无限循环

Linux0.11内核系列—1.引导程序分析