0xffff0 und das BIOS

7

Wenn ein PC zum ersten Mal hochfährt, beginnt er mit der physischen Adresse 0xffff0. Diese Adresse enthält eine JMP-Anweisung für das BIOS.

Nun zu meiner Frage: Ich nehme immer an, dass die physikalischen Adressen dem RAM zugeordnet sind. Wenn der RAM-Speicher anfänglich Garbage-Werte enthält, was genau setzt die JMP-Anweisung in 0xffff0? Ist der JMP-Befehl immer gleich oder ist er für verschiedene BIOS unterschiedlich? Wird 0xffff0 von RAM auf BIOS abgebildet (was bedeutet, dass es "hard mapped" ist)?

    
IM. 18.07.2010, 01:49
quelle

4 Antworten

19

Die oberen 64 kB oder so sind dem BIOS-ROM zugeordnet, nicht RAM.

    
Ignacio Vazquez-Abrams 18.07.2010, 01:50
quelle
5

Sehen Sie sich die PC-Startsequenz an. Wie Ignacio bereits geantwortet hat, ist es "hard-mapped" auf BIOS-Nur-Lese-Speicher.

    
Nikolai Fetissov 18.07.2010 01:58
quelle
4

Sehen Sie sich dieses Intel-Handbuch an:

Ссылка

Gehen Sie auf Seite 9-6, und die folgenden Seiten beschreiben den anfänglichen Startmodus der CPU. Der erste abgerufene Befehl stammt von ffffff00 (das fest mit dem ROM BIOS verbunden ist):

%Vor%

Und zu diesem Zeitpunkt erinnern wir uns noch an realode:

%Vor%

Und dann schauen Sie weiter, in Abbildung 9-3, ist die Position von 64K Speicher - von ffffffff bis ffff0000 und zeigt an, dass es EPROM oder Systembios und somit nicht RAM gibt.

    
Peter Teoh 20.02.2012 04:39
quelle
3

Eigentlich ist es ein bisschen komplexer als das. Zuallererst beginnt sie bei jedem Prozessor seit dem 386 tatsächlich bei fffffff0 (d. H. 16 Bytes kurz vor dem Anfang des 32-Bit-Adressraums). Bis der Prozessor zuerst einen Fernsprungbefehl ausführt, führt er eine spezielle Zuordnung durch, um den gesamten 32-Bit-Adressraum sichtbar zu machen, obwohl er im Realmodus ausgeführt wird. Nachdem ein Weitsprung ausgeführt wurde, startet der "normale" Real-Modus-Betrieb.

In jedem Fall haben Sie auf der Hardware-Seite normalerweise (Flash) ROM auf diesen Speicherort gemappt. Wenn es also ausgeführt wird, führt es Code im ROM aus. Was am Anfang ausgeführt wird, ist nicht wirklich das BIOS - es ist nur Code, um das echte BIOS aus dem ROM in RAM zu dekomprimieren, und dann dieses RAM dem BIOS-Adressbereich zuzuordnen.

    
Jerry Coffin 18.07.2010 04:06
quelle

Tags und Links