Wie boote ich eine Datei?
-
Hallo zusammen!
Seit Dienstag den 22.07.2008 habe ich angefangen die Programmiersprache Assembler zu lernen. Mir ist der Umstieg von ANSI-C++ nach Assembler nicht schwer gefallen und wie man Assembler-Programme mit der x86_64 Architektur programmiert habe ich auch herausgefunden. Sehr toll an Assembler finde ich den direkten Zugriff auf die einzelne Komponente des Mikroprozessors, wie etwa Steuerwerk (Daten via CPU-Register abholen) und Rechenwerk (Operatoren verknüpfen oder Anweisung ausführen). Ich Frage mich warum die meisten Programmierer von Assembler abraten oder es schwer zu lernen finden.
Ich möchte gerne ein Programm mit Assembler programmieren, der eine Datei von BIOS aus bootet und diese ausführt. Mit anderen Worten gesagt, möchte ich gerne ein einfaches OS erstellen der nur die Aufgabe hat etwas am Bildschirm auszugeben oder entgegen zu nehmen. Ich weiß nur, wenn man den Computer startet, wird als Erstes das BIOS aufgerufen, der Sucht wiederum nach einer Datei die eine bestimmte Größe hat und bootet sie (führt diese Datei aus). Aber wie es genau funktioniert weiß ich nicht.
Mich interessieren zwei Dinge:
Wie Boote ich eine Datei von der CD-ROM?
Wo finde ich die Interrupts von BIOS, die für Eingabe (Tastatur) und Ausgabe (Bildschirm) zuständig ist?Kleine Beispiele für NASM (Netwide-Assembler) währen toll.
Gruß,
Stefan
-
An Deiner Stelle würd' ich mir für die ersten Experimente mit Bootloadern eine Virtuelle Maschine (VirtualPC, VMware Workstation, Bochs, ...) besorgen, Dein Binary in den ersten Sektor eines Floppy Images schreiben (rawwrite, dd, selbst schreiben
) und damit booten. Du willst doch nicht für jeden Build einen Rohling verbraten, oder?
Eigener Boor Record
Ralf Browns Interrupt Listcheers, Swordfish
-
Hi!
Da gibts ein tolles Forum unter http://lowlevel.brainsware.org.
Da gibts auch ein paar gute Tutorials für den Protected Mode.
Ich würde dir aber auch eher mal den Weg mit Bochs bzw. QEMU empfehlen. Da hast du kein Risiko. Falls du mal was falsches machst wird nichts beschädigt.
mfg bauerb
-
Danke Swordfish und bauerb für eure Links. Ist genau das was ich gesucht habe.
Du willst doch nicht für jeden Build einen Rohling verbraten, oder?
Nein, natürlich nicht! Ich möchte gerne eine Datei von der Diskette aus booten, aber ich habe Probleme mein externes Diskettenlaufwerk unter Linux zu mounten.