The basic order of operations that happens while a BIOS is trying to find something to boot is:

  1. Load first sector (512 bytes) of the device you're trying to boot from (HDD, SSD, Floppy Disk, Optical Disc, etc) into memory
  2. Check if the 511th and 512th bytes are 0x55 and 0xAA, respectively.
    • If not, go back to step 1 and try the next device, or give up if there aren't any more.
    • If yes, start executing code at the beginning of this sector, thus passing control to (hopefully) a boot loader/manager.

You might find the OSDev wiki page on the Boot Sequence useful. The MBR page also has a useful table explaining the layout of that first sector. I've recreated it here with some simplification:

Offset | Size (bytes) | Description
    0  | 436          | MBR Bootstrap (flat binary executable code) 
0x1b4  |  10          | Optional "unique" disk ID
0x1be  |  64          | MBR Partition Table, with 4 entries
0x1fe  |   2          | (0x55, 0xAA) "Valid bootsector" signature bytes

Note that the BIOS doesn't necessarily pay any attention to or even know about the disk ID or the partition table.

enter image description here


BIOS code is in ROM (or EEPROM these days). It loads first sector from the disk (#0 in LBA notation or c=0,h=0,s=1 in CHS notation), verifies that last two bytes are 0x55 and 0xAA and transfers control to this sector.

So, MBR is actually identified by its address, #0. And 55 AA signature is just for verification. If first sector is zero-filled (as for new HDDs), BIOS can detect this by missing 55 AA signature and try to boot from another disk, or PXE, or ROM BASIC, or whatever.

0x55 0xAA is not an offset of MBR, actual offset is zero.