Informationen zum BIOS-Speicher, zu Anweisungen und zur Code-Herkunft


0

Ich lerne etwas über das BIOS und habe ein paar Fragen.

  1. Was bedeutet "Dies sind die letzten 16 Bytes des Speichers am Ende des ersten Megabytes des Speichers"?

  2. Die erste Anweisung des BIOS lautet jump, springt zum Haupt-BIOS-Programm, aber wohin springt es?

  3. Woher stammt der ursprüngliche BIOS-Code?

Ich interessiere mich auch für POST? Wie werden POST-Signale vom Prozessor ausgeführt?


2
Versuchen Sie, nur eine Frage pro Thread zu stellen - es ist sehr verwirrend zu verstehen, woran Sie tatsächlich interessiert sind.

Antworten:


1

Um die zweite Frage zu beantworten, springt das BIOS zu 0x7c00, dem Beginn des Bootsector-Codes (ich verstehe das aus dem Debuggen und Erstellen von Bootsectors ...). Der Bootsector wird wiederum in diesen Offset im Speicher geladen.

POST ist ein Selbsttest beim Einschalten. Wenn die BIOS-Routinen eine Überprüfung der Hardwaregeräte wie Speicher, Tastatur, Festplatte und Bildschirm durchführen, ertönt ein Piepton, wenn die Überprüfung je nach fraglichem Gerät fehlschlägt, z. B. wenn die Festplatte ausfällt Mit seinen 2 Signaltönen weist der Signalton auf verschiedene Probleme hin. Diese sind heutzutage recht selten, da die BIOS zuverlässiger sind und die Hardware-Erkennung weitaus zuverlässiger ist als damals ... MFM / RLL-Laufwerke hatten früher Probleme mit den BIOS, es sei denn, sie stammen aus einer fragwürdigen Menge von Datenträgern .... Tastaturen mit dem BIOS sind dafür berüchtigt, dass sie "Drücken Sie F1, um fortzufahren" anzeigen, wenn keine Tastaturen vorhanden sind.

Hoffe das hilft, Viele Grüße, Tom.


1
  1. Versetzt 0x0ffff0 bis 0x0fffff des physischen Arbeitsspeichers des Computers.
  2. In den BIOS-Code, den jemand zuvor geschrieben und in den nichtflüchtigen Speicher gebrannt hat.

1

@ tommieb75: Hier springt der Prozessor schließlich, aber nur, wenn das BIOS einen Bootsektor auf einem angeschlossenen Peripheriegerät findet (Festplatte, ordnungsgemäß formatiertes USB-Flash-Laufwerk, El Torito-CD, TFTP von einem PXE-Server usw.). Dieser Bootsektor hat am Ende die Signatur 0x55AA. Das prototypische Beispiel ist der MBR, der frei ist, alles zu tun, was er will, aber normalerweise in der Partitionstabelle nach einem (und nur einem) bootfähigen Flag sucht, sich von der 0x7C00-Adresse (wo abhängig von seinem Code) fortbewegt und lädt der erste Sektor dieser Partition auf 0x7C00 und springt dorthin. Dieser Partitionsstartsektor sollte auch die Signatur 0x55AA haben.

Was die ursprüngliche Frage betrifft ... gibt es keine feste Adresse, zu der der Prozessor vom BIOS-ROM angewiesen wird, zu springen. Dies hängt davon ab, was der BIOS-Autor will. Die Adresse von 16 Bytes unter dem Ende von 1 Megabyte ist nur ein fester Code im Prozessor selbst; Dies ist das dokumentierte / definierte Verhalten (von Intel und von der Vereinigung, AMD und anderen). Offensichtlich sind 16 Byte Code nicht viel Code, daher ist es normalerweise nur ein "Weitsprung" (Laden der CS- und IP-Register) an eine andere Stelle im BIOS-ROM. Dieser Code verarbeitet den POST und den oben genannten Speicherort eines gültigen Bootsektors, der ausgeführt werden soll.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.