Suche deutsches Tutorial, wie man ein Bootprogramm mit Assembler schreibt und ein Floppy-Image draus macht



  • Hi,

    ich möchte gerne Assembler lernen für x86 und x64 Processoren. Möchte aber nicht nur einfach mit ein paar Textausgaben spielen sondern, sondern einen Computer wirklich auch grundlegend bedienen, also ein eigenes Bootprogramm schreiben und daraus dann auch ein Floppy-Image erstellen lassen, damit ich davon booten lassen kann.



  • du solltes vieleicht erst einmal Assemblerprogrammierung ansich lernen, bevor du dich an eine boot loader versuchst 😉



  • %%66% schrieb:

    du solltes vieleicht erst einmal Assemblerprogrammierung ansich lernen, bevor du dich an eine boot loader versuchst 😉

    Assempler wird in sofort ausführbaren CPU-Code gewandelt. Also wo ist es dann wohl am besten es zu lernen? Ganz bestimmt nicht in Windows!



  • gibt es da mittlerweile keine fortschritlichere Methode als, die allte 3 Schrittige?

    1. Quelltext schreiben in einem Editor
    2. Compiler aufrufen und anweisen die Datei zu compilieren
    3. bin in Floppy-Image wandeln

    Oder gibt es da mittlerweile mal eine IDE für Linux?



  • BS/OS/Hochsprachen Hasser schrieb:

    Assempler wird in sofort ausführbaren CPU-Code gewandelt. Also wo ist es dann wohl am besten es zu lernen? Ganz bestimmt nicht in Windows!

    was hat das jetzt mit dem OS zu tun?



  • %%66% schrieb:

    BS/OS/Hochsprachen Hasser schrieb:

    Assempler wird in sofort ausführbaren CPU-Code gewandelt. Also wo ist es dann wohl am besten es zu lernen? Ganz bestimmt nicht in Windows!

    was hat das jetzt mit dem OS zu tun?

    Selber keine ahnung von Assembler?
    Assembler wird in Maschienencode gewandelt, der ja aber gerade nicht von anderen Schnittstellen wie API abhängt. Nur verlang ein PC-Mainboard eben ein paar besondere Befehle, damit man dann auch einen Text auf den screen, ich glaub im SVG, Modus ausgeben kann, oder die Tastenschläge durchgehen.

    Nur das kann man alles mit der Dokumentation lernen. Allerdings muss man ja dann auch das BIN bootbar einbringen ins System (Host), und da scheint für eine VM ein Floppy-Image am gescheitesten. Aber dazu bräuchte ich ja ein Programm was da die bestimmten Bits in den richtigen Sektor schreibt.

    So ein Tutorial meinte ich, in dem erklärt wird, was sozusagen die start und inial Befehle sind um die Textausgabe ansprehen zu können.







  • BS/OS/Hochsprachen Hasser schrieb:

    Also wo ist es dann wohl am besten es zu lernen? Ganz bestimmt nicht in Windows!

    Doch, definitiv, zumindest am Anfang. Windows- und Javaprogramme helfen, die Hardware besser zu verstehen und zu nutzen.
    Die meisten guten oder wichtigen Infos sind vor allem in englischer Sprache verfügbar, d.h. du kommst nicht drumherum, englisch geschriebene Texte selbst zu übersetzten.

    Die Typen vom Lowlevel-Wiki haben aber auch gutes Einsteigermaterial auf deutsch:
    http://www.lowlevel.eu/wiki/Lowlevel:Portal

    Eine Assembler IDE für Linux oder gar ein Wizard müsste speziell für dein individuelles Microprozessorsystem und deine Schnittstellen usw. geschrieben bzw. angepasst sein. Das wäre zwar nicht im Sinne der Portabilität von Unix/Linux, man müsste schon ein passendes System finden. Im Zweifelsfall schreibt man die Anpassungen für seine Hardware selber, braucht dann aber alle Dokumentationen und Manuals dazu, die in der Regel englischsprachig daherkommen.



  • bullshit!
    ganz klar bullshit!
    Damit verschränke ich mich blos und das ist genau das was ich nicht möchte und auch einer der haubtsächlichen Gründe warum ich Assembler verwenden will, weil ich mich eben nicht von Software-Grundsystemen (genannt Betriebsystemen) abhängig machen möchte. Wenn ich es dennoch machen würde, würde ich gegen meinem eigenen Grund, der grund für die Assemblerwahl ist, gehen.

    Ich kann hier jetzt auch nicht verstehen warum ihr so dickköpfig seit, aber das ist mir im grunde auch egal, da ich nun ein paar deutsche tutorials gefunden habe, die u.a. eine Beschreibung enhtalten und ein paar PC-Mainboards Boot-Code Beispiele enthalten, so das ich direkt die Adressräume beherschen kann.



  • was spricht den dagegen, die Ein/Ausgabe einem Betriebssystem zu überlassen? - das gestaltet das eigentliche verstehen/lernen von Assembler einfacher. Im Übrigen zeigen deine Formulierungen, das du bis weilen kein wirklich Vorstellung hast, was es bedeute Assembler zu programmieren – sei so gut und unterlass es andere diesbezüglich zu belehren...



  • masm schrieb:

    was spricht den dagegen, die Ein/Ausgabe einem Betriebssystem zu überlassen? - das gestaltet das eigentliche verstehen/lernen von Assembler einfacher. Im Übrigen zeigen deine Formulierungen, das du bis weilen kein wirklich Vorstellung hast, was es bedeute Assembler zu programmieren – sei so gut und unterlass es andere diesbezüglich zu belehren...

    NEIN!
    Ich möchte selber verstehen wie ich z.B. im Protected Mode Farbige Zeichen ausgeben kann. Nur so verstehe ich unter anderem, wie man einen Komando- oder Datenport anspricht und welche übliche Hardware bei was wie reagiert.

    Dadurch das ich dieses Grundlegende verstehe, kann ich dann bei eine Programm viel besser nachvollziehen was da passiert und mir auch mehr möglichkeiten ausmahlen und Fehler besser finden, da ich dann auch anfange zu verstehen, wie die Bytes umherwandern.



  • wenn du der Sache wirklich auf den Grund gehen willst, solltest du dich lieber der Konfiguration von FPGAs widmen - Assembler scheint mir viel zu Abstrakt für dich zu sein 🙄



  • masm schrieb:

    wenn du der Sache wirklich auf den Grund gehen willst, solltest du dich lieber der Konfiguration von FPGAs widmen - Assembler scheint mir viel zu Abstrakt für dich zu sein 🙄

    haha ich lach mich tot man. Du stellt eine Behauptung auf den Tisch - eine Frechheit. Ich werde Assember verwenden. Ich mache und tue was ich wiel, so einfach ist das. Ich habe schon damals bei einem kleinen Roboter-Chip gemerkt das mir Assembler besser als C gefält. Denn was macht es denn für einen sinn es in C zu schreiben, wenn dann da doch blos nur ein out Port verwendet wird und dann doch jegliche anweisung in Hexadezimalcode geschrieben werden muss, die dann die C funktion lediglich abschickt?



  • Kommt mal wieder runter Leute.
    xyz-Hasser ist offenbar keine Frau, also kann man davon ausgehen, dass "nein" auch "nein" heisst. 😃
    Ein Link auf Erhards Ecke des Forums, wo sich alles um das OS-Gebastel dreht (zuerst mit Assembler, die spaeteren Teile in C), wurde schon gepostet.
    Ganzheitliche Texte zum OS-Programmieren in Assembler, die ueber das, was Erhard da gemacht hat sehr weit hinausgehen, wirst du auch kaum finden.
    Fuer solche Spezialfaelle wird idR. eben davon ausgegangen, dass man sich nach den ersten Schritten selber helfen kann.



  • Du stellt eine Behauptung auf den Tisch - eine Frechheit

    ich habe nie etwas Behauptet - es schien mir nur so 🙄



  • Also das mit der Magicnumber und der 512 Byte Größe habe ich ja nun auch so weit verstanden und der inialisierung mit ORG (Assembler) aber wo ich noch nicht so richtig was gefunden habe, ist wie man dann das erstellte BIN korrekt in ein Floppy-Image erstellen läst oder mit welchem Tool das am einfachsten geht. Ich hatte da nur mal sowas recht fragwürdiges gelesen, dass man mit dem nasm aus 3 Dateien eine Datei erstellen soll die genauso so groß ist wie der Platz auf einem Floppy, die haben aber auch dazu geschrieben, dass das wohl nicht der richtige weg ist.



  • Viele VMs koennen schon mit dem 512-Byte-Binary als Image arbeiten. Zumindest Bochs kann das.
    Ansonsten hat Erhard in seinem Tutorial bestimmt eine Methode beschrieben.
    Der intuitive Weg waere sonst: Besorg dir ein Diskettenimage und schreib' einen 3zeiler, der das Image an bestimmten Stellen ueberschreiben kann.



  • Schon mal colorForth angeschaut? Und bevor du wieder in

    bullshit! ganz klar bullshit! ... Ich mache und tue was ich wiel, so einfach ist das.

    schaue dir die "Sprache" an. Du findest im Quellcode auch Floppydisk-Treiber etc. in Assembler geschrieben. Empfehlenswert ist Starting Forth vorher zu lesen. Leider gibt es das meiste nur auf Englisch.

    Mit dd als Linuxprogramm kann man sein Image direkt auf eine Diskette, USB-Stick etc bringen.



  • http://www.amazon.de/Echtzeit-Multitasking-Parallele-Systemprogrammierung-Protected-Architektur/dp/3826594878

    "Echtzeit-Multitasking - Der Kernel - Parallele Systemprogrammierung im Protected Mode der Pentium Architektur"
    Dies ist ein sehr gutes "Tutorial" und sogar auf Deutsch. Leider wird aber hier nicht mehr in Assembler Programmiert sondern in C, denn wer müht sich noch mit Assembler ab wenn man mit C einfacher Programmieren kann. Ansonsten kann man in diesen "Tutorial" alles lernen was man braucht um "einen Computer wirklich auch grundlegend bedienen" zu können. Von Tasks, Scheduling und Programaufrufen usw kann man alles lernen was man will. Da dies aber auf Echtzeitprogrammierung ausgelegt ist müsste man sich Paging selbst beibringen.
    Wenn es dich so stört mit einen C Compiler zu Programmieren, dann müsstest du halt den C Code in Asambler selbst übersetzen, dies ist ja nicht so schwer. Anderseits kann ich verstehen wieso man keine Tutorials findet zum Thema Kernel Programmierung, denn dies ist doch eine ganz gewaltige Leistung.

    Kernel Progammierung mal anders:
    http://de.wikipedia.org/wiki/Singularity


Anmelden zum Antworten