26126
Goto Top

Von CD ein Programm booten

Mit Assembler starten und mit z.B. QBasic enden?

Hallo Administratoren!

Es ist möglich mit Assembler ein OS von einer Diskette zu starten. Nungut, es ist bestimmt auch mehr möglich, aber soweit bin ich gerade. Und da ist mir eingefallen, dass ich gar kein C kann, mit dem ich dann überhaupt meinen Kernel starten könnte. Ist es also möglich eine CD (oder am Anfang erst eine Diskette) zu schreiben, die als Bootsektor angesehen wird, von der man also booten kann, die aber dann ein NICHT-Assembler Programm startet, sondern ein QBasic Programm oder ähnliches?

Theoretisch: man steckt die Diskette rein, dann kann man von der Diskette mit dem Assemblerbootloader starten und dann wird das andere Programm gestartet. möglich oder nicht?

Mfg, Datis

Content-Key: 52614

Url: https://administrator.de/contentid/52614

Printed on: April 24, 2024 at 14:04 o'clock

Member: miniversum
miniversum Feb 25, 2007 at 16:39:29 (UTC)
Goto Top
Den Anfang mußt du in assembler machen. Dafür gibts ja genügend Codebeispiele und Erklärungen wie zu kompilieren im Internet.

Amembler brauchst du halt das du an der Startadresse die der Bootloader des PCs will wirklich beginnst (geht ja mit ORG). Dann noch den Stack festlegen in assembler udn danach kanst du auf ne Funktion in C verweisen als FAR Prozedur halt. Ob das equivalent mit QBasic geht weiß ich allerdings nicht.

miniversum
Mitglied: 26126
26126 Feb 25, 2007 at 16:57:03 (UTC)
Goto Top
Danke für deine schnlle Antwort.

Dass du ein Profi bist, ist mir gleich klar geworden, kannst du es aber auch einem Noob wie mir ein bisschen "noobiger" erklären?

"ORG, FAR, equivalent"
Member: miniversum
miniversum Feb 25, 2007 at 18:27:00 (UTC)
Goto Top
Naja Profi...
Also wenn du mal im Internet nach sourcecodes suchst wirst du immer asemblerdateien Finden die am anfang ein ORG und eine Zahl dahinter stehen haben. Die Zahl ist der anfangspunkt des Programmes im Speicher. Dein PC Will dabei immer an einer Bestimmten Adresse des Speichers Booten. Diese Startadresse muß dorthinter dem ORG stehen. Schau einfach mal da ist das schon fertig wenn du nach Sourcecodes suchst.
Als weiteres gibt es vershciedene arten von Prozeduren. Near und Far. Das hat was dmait zu tun ob die Prozedur/Die Funktion die aufgerufen wird in der nähe oder weiter weg ist (innerhalb der Datei oder auserhalb, naja so ähnlich. Jedenfalls wird in Assenbler normalerweise eben diese Startadresse aufgegriffen, der Stack angelegt und dann auf eine Funktion in einer C Datei weitergeleitet. Bei den C dateien ist nicht sichergestellt wo genau diese im Speicher leigen. Durch die Assemblerdatei bekommst du diesen Einsprungpunkt also.

Ob das mit einer Weiterführung in QBasic anstatt in C geht weiß ich allerdings nicht. Müßte man ausprobieren.

Wenn Du mal nach Sourcecode für Betriebssysteme schaust wirst du schnell mehrere Betriebssysteme finden die sogar nur in assembler geschrieben sind. Sourcecode dazu ist auch leicht zu finden inclusive einer beschribung welcher Compiler benutzt werden soll und wie das ganze Funktioniert.

miniversum