Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

BIOS and Address 0x07C00

from Wikipedia

On an IBM PC compatible machine, the BIOS selects a boot device, then copies the first sector from the device (which may be a MBR, VBR or any executable code), into physical memory at memory address 0x7C00

I'm reading about the booting process in operating system especially the intel x86 : so what I have found is that BIOS loads the first 512 bytes of the bootloader to the memory location

(segment, offset) = (0x0000,0x7C00) = 0x07C00

and jumps to there to execute the bootloader

my qustion is why BIOS always loads the

bootloader to 0x07C00?

like image 916
kara Avatar asked Aug 24 '18 00:08

kara


1 Answers

The reason why BIOS always loads the bootloader to 0x07C00 is historical.

In the early days, a PC is only guaranteed to have 64 KB of RAM memory.

The memory below 0x07C00 is reserved for interrupt vectors, BIOS and BASIC, etc.

The first OS usable memory begins at 0x08000.

So the bootloader is loaded to 0x07C00, which is 1 KB below 0x08000.

like image 140
zerocool Avatar answered Sep 22 '22 18:09

zerocool