Assembler- oder C-Programm von USB-Stick starten



  • Mahlzeit!
    OK ich sage direkt am Anfang das ich nur sehr wenig Erfahrung in Assembler habe dafür aber schon mehr in C. Ich habe vor mir ein kleines Programm unter Linux oder Windows zu schreiben, dass wenn ich auf "Von USB-Stick" starten gehe z.b. erst mal einen Text ausgegeben wird. Hat also schon ein wenig mit einem OS zu tun. Kann mir einer sagen wie man das machen kann.



  • Mit "auf "Von USB-Stick" starten gehe"n meinst du das Booten vom USB-Stick?
    Da gibt es im Prinzip grob 2 Moeglichkeiten.
    Deshalb solltest du dir (und uns) vielleicht zuerst die Frage beantworten, was genau du ueberhaupt machen willst.
    Geht es dir mehr darum, einfach ein Programm zu schreiben, dass evtl. auch komplexere Aufgaben erledigt und sich direkt nach dem POST, ohne Booten eines auf dem PC installierten OS, starten laesst?
    => Installier ein passendes Betriebssystem auf dem USB-Stick. zB. Free-DOS oder eine kleine, speziell angepasste Linux-Distri. Dein Programm kannst du dann idR. ganz normal fuer dieses OS in C schreiben. Da brauchst du dich nicht mit Assembler befassen, deshalb wuerde ich dich nach RUDP verschieben.

    Oder willst du das Programm als eine Art Uebung fuer ein eigenes kleines OS schreiben und bist mehr daran interessiert, die Grundlagen von Bootloadern, Ansteuerung von PC-Hardware und OS-Design zu lernen?
    => Hat auch nicht so viel mit Assembler zu tun. Seit einiger Zeit hat Erhard sein eigenes kleines OS-Forum hier, dort waerst du dann besser aufgehoben.



  • Ja ich wollte in die Richtung des Zweiten gehen also kleine Betriebssysteme zu programmieren. Ich habe mir schon ein Tutorial angeschaut, dass aber schon sehr Umfangreich war. Ich möchte Schritt für Schritt mal alles ausprobieren um mir über die riesige Menge an Informationen einen Überblick zu verschaffen.

    OK danke 🙂 Mal sehen ob ich verschoben werde.



  • Dieser Thread wurde von Moderator/in Nobuo T aus dem Forum Assembler in das Forum Projekt: OS-Development verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hi Lars,

    das ist im Prinzip recht einfach! Ein USB-Stick wird "bootable", wenn in den ersten 510 Bytes ausführbarer Code liegt und an den Bytes 510 und 511 bestimmte Bytes als Signatur. Leider klappt das Booten aber nicht von jedem USB-Stick.

    Du musst (Assembler-) Sourcecode schreiben, der in 16 Bit Realmode läuft. Dieser Code darf höchstens 510 Bytes groß sein (was aber erstmal genug sein dürfte).
    Diesen Code musst du dann auf den USB-Stick kopieren, allerdings nicht mit "normalen" Kopier-Operationen, sondern entweder mit dem Unix-Tool "dd" oder unter Windows mit dem Tool "BootDisk2BootStick".

    Beispielcode für einen kleinen Bootloader siehst du hier. Du brauchst NASM, um ihn zu kompilieren und bringst das Resultat dann mittels deinem Tool auf den USB-Stick.

    Achtung, über dem Beispielcode musst du noch Direktiven für den Compiler angeben:

    [Bits 16]    ;Der Code soll als 16-Bit-Code kompiliert werden
    org 0x7C00   ;Der Code wird vom BIOS an die Stelle 0x7C00 geladen
    

Anmelden zum Antworten