Ruan Yifeng: Why is the memory address of the master boot record 0x7C00?

Ruan Yifeng: Why is the memory address of the master boot record 0x7C00?

The "Computer Principles" textbook says that during startup, the master boot record will be stored in the memory address 0x7C00.

The textbook does not explain how this strange address comes from. I have always wondered why it is not stored in the head, tail, or other locations of the memory, but in this place that is 1024 bytes smaller than 32KB?

Yesterday, I read an article that finally solved the mystery.

First of all, if you don't know what the master boot record (abbreviated as MBR) is, you can read "How does a computer start?" first.

Simply put, computer startup is such a process.

  1. power ups
  2. Read the BIOS in ROM to check the hardware
  3. Hardware check passed
  4. BIOS checks the first sector of the boot device (i.e., the master boot record) according to the specified order and loads it at memory address 0x7C00
  5. The master boot record gives the operating system control

Therefore, the master boot record is a small program that guides the "operating system" into the memory, and its size does not exceed 1 sector (512 bytes).

The address 0x7C00 comes from Intel's first-generation personal computer chip 8088. In order to maintain compatibility, subsequent CPUs have always used this address.

In August 1981, IBM's first personal computer, the IBM PC 5150, was launched, using this chip.

At that time, the operating system was 86-DOS. This operating system required at least 32KB of memory. We know that the memory address starts at 0x0000, and 32KB of memory is 0x0000~0x7FFF.

The 8088 chip itself needs to occupy 0x0000 to 0x03FF to store the storage locations of various interrupt handlers. (The master boot record itself is the handler for the interrupt signal INT 19h.) Therefore, only 0x0400 to 0x7FFF is available for use.

In order to leave as much continuous memory as possible for the operating system, the master boot record is placed at the end of the memory address. Since a sector is 512 bytes, the master boot record itself will also generate data, and another 512 bytes need to be reserved for storage. Therefore, its reserved position becomes:

  1. 0x7FFF - 512 - 512 = 0x7C00   

This is how 0x7C00 came about.

After the computer starts, the usage of 32KB of memory is as follows.

  1. +--------------------- 0x0  
  2. | Interrupts vectors
  3. +--------------------- 0x400  
  4. | BIOS data area
  5. +--------------------- 0x5 ??
  6. | OS load area
  7. +--------------------- 0x7C00  
  8. | Boot sector
  9. +--------------------- 0x7E00  
  10. | Boot data/stack
  11. +--------------------- 0x7FFF  
  12. | (not used)
  13. +--------------------- (...)

(over)

<<:  80% of U.S. mobile users spend 3 apps on their mobile devices

>>:  In-depth study of JavaScript objects

Recommend

Zhou Wenqiang's "Top Financial Thinking Course" 22 episodes

Zhou Wenqiang's "Top Financial Thinking ...

A good function! Detailed experience of the love mode on the 12306 website

[[421835]] 12306 has launched the Love Mode, whic...

User operation: How to improve user stickiness and retention?

In the mobile Internet, there is a saying that go...

Lock the CPU frequency of Android devices

[[184787]] This article introduces the method of ...

How did I achieve 300,000 sales using a social network?

After I used text messages to activate lost custo...

How to prepare a brand marketing promotion plan?

Writing a branding plan may seem difficult becaus...

How to create product "growth power"?

Being able to demonstrate early growth is a key e...

Event Operation | What tricks are hidden in Pinduoduo’s red envelopes?

This article will tell you about some of the rout...

From 0 to 1 users, how to do a good job in seed-stage user growth operations?

The product operation cycle is generally divided ...