Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
DOZ
Anmeldungsdatum: 14.12.2008 Beiträge: 34
|
Verfasst am: 22.03.2010, 18:57 Titel: Bootloader soll kern.exe laden und starten |
|
|
Moin,
mein bootlader startet von diskette.
Den Text "Boot fertig" kann er auch ausgeben.
Nur wie starte ich jetzt den kern.exe von diskette.
Load giebt es in assembler nich.
Ich habe mir überlegt den kern hinter den vom bootlader initialisierten speicher bereich in den speicher zu laden und dann dort hin zu JMPen
oder mit CALL das A:\unterPRG.exe diereckt zu starten.
Aber wie...?
bzw. wie startet man überhaupt programme aus in assembler geschriebenen programmen. _________________ Gruß u.s.
Ersma |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 22.03.2010, 20:20 Titel: |
|
|
Wenn du einen Bootloader hast, wirst du vermutlich keine exe-dateien laden können.
Ansonsten: lowlevel.brainsware.org
Da findest du alles. _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
DOZ
Anmeldungsdatum: 14.12.2008 Beiträge: 34
|
Verfasst am: 22.03.2010, 20:29 Titel: |
|
|
Letztendlich will ich ja nur eine ausfürbare datei starten. _________________ Gruß u.s.
Ersma |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 23.03.2010, 12:09 Titel: |
|
|
Das wird nicht gehen, weil die in einem speziellen Format sind, das von DOS gelesen und verarbeitet wird - du hast hier aber kein DOS, sondern deinen eigenen Code.
Du könntest damit nur .com-Dateien laden, und auch nur solche, die nur BIOS-Interrupts verwenden und keine DOS-Interrupts (21h z.B.), was sehr unwahrscheinlich ist. Um genau zu sein, kannst du gar keine Dateien laden, weil du keinen Dateisystemtreiber hat. Du könntest höchstens direkt etwas von einem Sektor der Diskette lesen (z.B. den Inhalt einer com-Datei, den du vorher selber dahingesteckt hast) - (wie das geht, musst du nachschauen), und dann in irgendeinem Segment an Offset 0100 laden, ds, es und ss auf dieses Segment setzen, sp auf 0 setzen und dann nach ds:0100 jumpen (diese Umgebung erwartet eine com-Datei).
EDIT: Alle Angaben ohne Gewähr. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 23.03.2010, 19:50 Titel: |
|
|
Cherry hat Folgendes geschrieben: | Das wird nicht gehen, weil die in einem speziellen Format sind, das von DOS gelesen und verarbeitet wird - du hast hier aber kein DOS, sondern deinen eigenen Code. |
Schöner Vergleich: Versuch, sich eine neue Fähigkeit anzueignen. Dummerweise ist die Person, die sich etwas beibringen möchte, entweder noch ein Kleinkind oder Analphabet, womit er mit der Schrift, Sprache und Wörtern im Lehrbuch nichts anfangen kann...
Genauso ist es hier: "Normale" .EXE-Datei entspricht Buch, welches den Inhalt in Buchstaben und Wörtern in einer Sprache wie Deutsch, Englich usw. darstellt, so dass Sprachverständnis und Lesefähigkeit vorausgesetzt wird.
PC befindet sich aber in diesem Fall mit der Bootdiskette noch im Stadium "Kleinkind", wo die Fähigkeit zum Lesen und Schreiben noch gänzlich fehlt. => Somit müssen Deine Programme in etwa der Sprache der erziehenden Eltern und Kindergärtnerin (=etwas vermitteln können, ohne dass die Schreib- und Lesefähigkeit vorausgesetzt wird) aufgebaut sein. Bedeutet auf den PC übertragen: Höchstens aufs BIOS kannst Du zurückgreifen bzw. musst sogar direkt auf die Hardware gehen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
DOZ
Anmeldungsdatum: 14.12.2008 Beiträge: 34
|
Verfasst am: 24.03.2010, 20:43 Titel: |
|
|
Genau das mit DOS INTs und so ist ja mein Problem.
In meinen 3-4 Assembler büchern gehen die immer davon aus das ich unter DOS oder sogar Win arbeite.
Also ist mir bewust das ich BIOS INTs benutzen und andere selber schreiben muß und das auch gerne möchte.
@Cherry
Das mit der EXE Bezeichnung sollte eher COM bedeuten, also einfach eine ausführbare Datei und diese sind dann auch von mir auchgeschrieben.
Kann QBasic COM Dateien Kompilieren?
Ansonsten erstmal Danke an alle. . . _________________ Gruß u.s.
Ersma |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 24.03.2010, 20:47 Titel: |
|
|
DOZ hat Folgendes geschrieben: | Kann QBasic COM Dateien Kompilieren? |
Nein, mit QBasic kann man ganz streng genommen gar nichts compilieren, weil QBasic nur der Interpreter war und lediglich QuickBASIC (sowie QBX/PDS) einen Compiler mitbrachte. Allerdings kann man auch damit ausschließlich EXE-Dateien erzeugen. Die mit QuickBASIC erzeugten EXE-Dateien sind meines Wissens stets abhängig von DOS-Interrupts.
Übrigens: Die E-Mail-Adresse, die du im Forum angegeben hast, DOZ, ist leider inzwischen ungültig, wie es aussieht. Ich habe schon mehrere "Mail delivery failed: returning message to sender"-Benachrichtigungen deshalb erhalten. Bitte korrigier die Adresse wieder. _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Georgp24
Anmeldungsdatum: 30.06.2006 Beiträge: 81 Wohnort: Ahlen
|
Verfasst am: 27.03.2010, 23:26 Titel: |
|
|
Ich hatte mal einen Bootloader gemacht der EXE Dateien, genauer gesagt mit Namen "startme.exe" von Diskette geladen und gestartet hat:
http://www.powerbasic.com/support/pbforums/showthread.php?t=24382&highlight=boot
Man kann die startme.exe aber nur mit Assembler oder Powerbasic compilieren. Powerbasic macht praktisch keine DOS-Calls bei Programmstart und verwendet überwiegend das BIOS, ganz im Gegensatz zu Quickbasic das erstmal eine endlose Reihe von DOS-Calls verwendet bevor "Hello World" erscheint.
Georg |
|
Nach oben |
|
 |
|