Search code examples
biosbootloader

What is significance of memory at 0000:7c00 to booting sequence?


Why does bios read at partition's boot record at 0000:7c00 ? What is special about that address ? what ':' doing in referencing an address ?


Solution

  • The ":" is a holdover from segmented memory days, when PCs ran in real mode and could only do 64K at a time. The number to the left of the ":" is your segment, the number to the right is your address.

    The windows debug command accepts this notation if you want to poke around in memory yourself:

    C:\Users\Seth> debug
    -d0000:7c00
    0000:7C00  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
    0000:7C10  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
    0000:7C20  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
    0000:7C30  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
    0000:7C40  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
    0000:7C50  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
    0000:7C60  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
    0000:7C70  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
    

    With regard to this particular address, it's just an address that was picked to load the MBR, See: https://web.archive.org/web/20140701052540/http://www.ata-atapi.com/hiwmbr.html

    "If an MBR is found it is read into memory at location 0000:7c00 and INT 19 jumps to memory location 0000:7c00"