Autor Thema: Speicher beim Start  (Gelesen 3344 mal)

Sven

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« am: 03. May 2004, 22:55 »
Also... der Rechner startet... lädt das Bios... das Bios initalisiert alles... findet einen Bootfähigen Sektor und lädt diesen nach 0000:7C00.

Dann befindet sich von 0000:0000 bis 0000:0400 (1024 Bytes) Die Interupt Vector List und von 0000:7C00 bis 0000:7E00 (512 Bytes) das Bootprogramm.

Meine Frage ist Simpel: Was befindet sich zwischen 0000:0400 und 0000:7C00 (30720 Bytes)? Und was befindet sich nach 0000:7E00?

Kurz: Wie ist der Speicher aufgeteilt und wo kann ich mein Zeug hinpacken, ohne irgendwas zu überscreiben?

gurru

  • Beiträge: 42
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 03. May 2004, 23:08 »
hallo

alle angaben in linearer Adresse:

0x00000 - 0x00400 : Interrruptz vector list
0x00400 - 0x01000 : verschiedene BIOSdaten... (0x01000 ist nciht die wirkliche Obergrenze, diese variiert je nach BIOS, jedoch kann man davon ausgehen, dass darüber keine relevaten Daten mehr liegen)
0x01000 - 0x07c00 : nichts wichtiges - steht zur freien verwendung
0x07c00 - 0x07dff : Bootsektor
0x07e00 - 0x9FFFF : nichts wichtiges - steht zur freien verwendung
0xA0000 - 0xBFFFF : Video Ram
ab 0xC0000 stehen die Bios Routinen und so - ist auch nur read only

mfg

Sven

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 04. May 2004, 20:21 »
Soweit schon mal ganz gut. Wo bekomme ich weitere Details her?

Desweiteren folgende Fragen.
In der ersten Ausgabe des Lowlevel-Magazins, war ein Bootprogramm abgedruckt. Dort wurde die Laufwerks-Nummer von al nach [bootdriv] geladen. Meine Fragen also:
1.Was steht beim starten in den einzelnen Registern?
2. Dort wurde der Stack auf den Offset 9000h gelegt? (physikalische Adresse: 90000h). Hat das einen bestimmten Grund, oder ist das einfach nur weil 9000h so schön aussieht :) ?

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 04. May 2004, 22:12 »
>>>Soweit schon mal ganz gut. Wo bekomme ich weitere Details her?

Nun ja, wenn du Details willst dann frage einfach oder, (und das empfehle ich allen hier :) ), schaff Dir mal ein Buch an. Das ist durchaus nicht negativ gemeint. Es gibt viele gute Fachbücher zur PC-AT und x86 Thematik. Und das schöne ist, mann kann durchaus ältere Fach-Bücher zu Rate ziehen, da die meissten Lowlevel-Sachen (Speicher-Aufteilung, Interrupts, IO-ports usw.) ja aus kompatibilitäts-Gründen seit dem ersten PC-AT "gleich" geblieben sind.
Hier nur zwei Empfehlungen:
1. PC-Intern von Data Becker (die letzte Ausgabe ist von 1995)
2. PC-Hardware-Buch (muss nicht die aktuelle Auflage sein, Auflage 4 oder 5 reicht vollends!)
Ich weiss, Fachbücher sind teuer, aber die beiden von mir genannten gibt es oft schon für 1-2 Euro bei ebay!
(Anmerkung: NEIN, ich versteigere keine Bücher bei ebay, ist wirklich ne empfehlung! Hab selber vor 2 Wochen PC-Hardwarebuch 4. Aufl. für 1,89 Euro ersteigert.)


>>>Was steht beim starten in den einzelnen Registern?

Also, soweit ich weiss übergibt das BIOS die Nummer des Laufwerkes von dem es den Bootsctor geladen hat in Register DL an das Bootprogramm (also unseren Bootloader) damit wir auch wissen von welchem LW wir weiter booten oder lesen müssen. Was mit den anderen Registern ist.... Hmmmm ich behaupte jetzt mal das ist nicht definiert. Korregiert mich wenn ich falsch liege.


>>>Dort wurde der Stack auf den Offset 9000h gelegt? (physikalische Adresse: 90000h). Hat das einen bestimmten Grund, oder ist das einfach nur weil 9000h so schön aussieht

Öhhmm... Du kannst den Stack dorthin verfrachten (im freien Speicher-Raum) wo du gerne möchtest! Sieh dir die Speicher-Liste von gurru an, und such dir aus wo der Stack für Deine Zwecke am idealsten liegt.
Ich z.B. habe in meinem Boot-Programm den Stack an Adresse 9F000h-9FFFFh (4kB) gelegt.

noch Fragen Hauser..? :)
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

 

Einloggen