views:

331

answers:

3

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

+5  A: 

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: 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"

Seth
+2  A: 

Why 7C00? That would probably best be answered by a BIOS programmer/hardware designer for the initial/original IBM PC BIOS.

If you could find a copy of the IBM Personal Computer Technical Reference manual it may contain some clues.

+1  A: 

The simple answer is that 7C00h is 1k (512 bytes for the boot sector plus an additional 512 bytes for possible boot sector use) from the bottom of the original 32k installed memory.

The happy answer is that org 7C00h has become synonymous with boot sector - boot loader programming.

Mike Gonta
The additional 512 bytes might have been for the boot stack.
Anton Tykhyy