Warum liest BIOS den Boot-Record der Partition bei 0000: 7c00? Was ist das Besondere an dieser Adresse? was ':' tun beim Verweisen auf eine Adresse?Welche Bedeutung hat der Speicher bei 0000: 7c00 zur Bootsequenz?
Antwort
Das ":" ist ein Holdover von segmentierten Speicher Tagen, wenn PCs im Real-Modus ausgeführt wurden und konnte nur 64K auf einmal. Die Nummer links vom ":" ist Ihr Segment, die Nummer rechts ist Ihre Adresse.
Der Windows-Debug-Befehl akzeptiert diese Schreibweise, wenn Sie sich in Erinnerung schnüffeln wollen:
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 ................
Im Hinblick auf diese besondere Adresse, es ist nur eine Adresse, die den MBR zu laden, finden Sie wurde ausgewählt: http://www.ata-atapi.com/hiwmbr.html
"Wenn ein MBR gefunden wird es in dem Speicher an der Stelle 0000 gelesen wird: 7C00 und INT 19 Sprünge Speicherstelle 0000: 7C00"
Warum 7C00? Dies würde wahrscheinlich am besten von einem BIOS-Programmierer/Hardware-Designer für das ursprüngliche/ursprüngliche IBM PC-BIOS beantwortet werden.
Wenn Sie eine Kopie der IBM Personal Computer technischen Referenzhandbuch finden können, kann es einige Hinweise enthalten.
Die einfache Antwort ist, dass 7C00h ist 1k (512 Bytes für den Boot-Sektor plus zusätzliche 512 Bytes für mögliche Boot-Sektor verwenden) von der Unterseite der ursprünglichen 32k installierten Arbeitsspeicher.
Die glückliche Antwort ist, dass org 7C00h
mit Bootsektor synonym geworden ist - Programmierung Bootloader.
Lesen Sie diesen Artikel:
http://en.wikibooks.org/wiki/X86_Assembly/Bootloaders
Aus der obigen URL, BIOS (die effektiv PC-Hardware ist) den Sprung in dem Speicher bei 0000 machen: 7C00 Ausführung im 16-Bit-Modus fortzusetzen.
Und von oben zu zitieren:
Ein Bootloader läuft unter bestimmten Bedingungen, dass der Programmierer, um einen erfolgreichen Bootloader zu machen schätzen müssen. Die folgende bezieht sich auf Bootloader vom PC-BIOS initiiert:
- Der erste Sektor ein Laufwerk enthält seinen Bootloader.
- Ein Sektor ist 512 Bytes - der letzte zwei Bytes müssen 0xAA55 sein (d. H. 0x55 gefolgt von 0xAA), oder Andernfalls behandelt das BIOS das Laufwerk als nicht mehr startfähig.
- Wenn alles in Reihenfolge ist, wird der erste Sektor an die RAM-Adresse 0000: 7C00 platziert, und die Rolle des BIOS ist vorbei, da es die Steuerung an 0000: 7C00 überträgt. (I.e.es JMPs an diese Adresse)
So von bootup, wenn u die CPU wollen Ihren Code starten ausgeführt wird, hat es um 0000 im Speicher angeordnet werden: 7C00. Und dieser Teil des Codes wird vom ersten Sektor auf die Festplatte geladen - auch per Hardware. Und nur der erste Sektor wird geladen, die restlichen Teile des Codes müssen dann von diesem initialen "Bootloader" geladen werden.
Weitere Informationen auf dem ersten Sektor der Festplatte und das 7C00 Design:
http://www.ata-atapi.com/hiwdos.html
http://www.ata-atapi.com/hiwmbr.html
Bitte verwechseln Sie nicht mit dem Startmodus der CPU - dem ersten Befehl wird es holen und (siehe Seite 9-5) auszuführen ist an der physikalischen Adresse 0xfffffff0:
und in diesem Stadium wird nicht-flüchtig ausgeführt (was bedeutet, dass Sie den BIOS-Code nicht einfach umprogrammieren können und somit nicht zur Verantwortung des Bootloaders gehören).
- 1. Welche Bedeutung hat der Anfangswert eines Semaphors?
- 2. Welche Bedeutung hat der 12. Oktober 1999?
- 3. Welche Bedeutung hat das Clustering?
- 4. Welche Bedeutung hat das Fragezeichen in MySQL bei "WHERE column =?"?
- 5. Welche Bedeutung hat die `Stabilität` im Sortieralgorithmus?
- 6. Welche Bedeutung hat das variable Heben?
- 7. Welche Bedeutung hat Q_PROPERTY in Qt?
- 8. Welche Bedeutung hat das XML-Schema?
- 9. Welche Bedeutung hat @ javax.persistence.Lob Annotation in JPA?
- 10. Welche Bedeutung hat das Fragezeichen in Excel?
- 11. Welche Bedeutung hat der Selbstlink in Hypermedia-APIs?
- 12. Welche Bedeutung hat die Verwendung der .version in Elixier (Laravel)?
- 13. Welche Bedeutung hat die Funktion main() in der Programmiersprache Ring?
- 14. Welche Bedeutung hat x in der Adresse einer Variablen?
- 15. Welche Bedeutung hat der Befehl watch in ExtJS?
- 16. Welche Bedeutung hat die Anzahl der Sterne eines GitHub-Repositories?
- 17. Welche Bedeutung hat die Standard-AEM-Benutzergruppe "Jeder"?
- 18. Welche Bedeutung hat ein Mnesia-Master-Knoten in einem Cluster?
- 19. Welche Bedeutung hat die Länge eines Word2vec-Vektors?
- 20. Welche spezielle Bedeutung hat ein Gleichheitszeichen in zsh?
- 21. Bedeutung von Speicher bezogenen Begriffen?
- 22. Welche Standardfarbe hat der Browser bei der Textauswahl?
- 23. Welche Bedeutung hat _ in mehreren Variablennamen in ActionScript?
- 24. Welche Bedeutung hat das Schema in SQL Server?
- 25. Welche Bedeutung hat die Funktion, die einen Wert zurückgibt?
- 26. Welche Bedeutung hat pgfree/s auf einem Linux-System?
- 27. Welche Bedeutung hat ein Parameter in einem Funktionsaufruf bei Verwendung von gulp 4.series?
- 28. Hat! = Bedeutung in OCaml?
- 29. Die advertisingIdentifier und identifierForVendor return „00000000-0000-0000-0000-000000000000“
- 30. Hat der Berechtigungsheader "Bearer" eine besondere Bedeutung?
Die zusätzlichen 512 Bytes könnten für den Boot-Stack gewesen sein. –
@Mike Gonta: Ich habe jahrelang in vielen Dokumentationen und Tutorials nach einer solchen Antwort gesucht, ohne Erfolg. Aber deine Antwort ist die beste und löst das Geheimnis. Vielen Dank dafür. Du hast mir das letzte Puzzleteil gegeben, das mich zu diesem Link geführt hat: http://www.glamenv-septzen.net/de/view/6 ... Aber es gibt ein letztes Rätsel für mich: Warum haben sie 55 benutzt? AA für die Boot-Signatur? Ich vermute, das hat etwas mit den Bitmustern zu tun, die sie sind: 01010101 10101010, weiß aber nicht was. Vielleicht weißt du? – SasQ