Assembler in einer Virtual Machine/Emulator lernen?



  • Ich habe hier zwei alte Bücher zum Thema Assemblerprogrammierung in Turbo Assembler (unter DOS) für die x86 CPU Architektur und wollte die nun alle mal in Ruhe durcharbeiten.

    Jetzt ist es allerdings nur so, dass ich kein DOS mehr auf meinem modernen Computer installiert habe und die ganzen modernen Betriebssysteme, wie z.B: Windows oder Linux schotten die User Space Software vom direkten Zugriff auf die Hardware ab, was dazu führt, dass ich nicht sämtliche Beispiele in den beiden Büchern durcharbeiten können werde.
    Desweiteren sind viele Beispiele noch für den RealMode programmiert, was ebenfalls unter einem modernen 64 Bit Betriebssystem problematisch bzw. unmöglich (16 Bit Programme) ist.

    Deswegen möchte ich das ganze in einer Virtuellen Maschine oder einem Emulator machen.
    MS DOS und Turbo Assembler sind bei mir vorhanden, diese beiden Programme könnte ich in dieser Umgebung also installieren.

    Die eigentliche Frage ist jetzt nur, welche VM oder welchen Emulator würdet ihr für meine Aufgabe empfehlen und sind die VM oder Emulatoren dafür überhaupt ausreichend?
    Ich möchte z.B. auch die Kapitel bzw. Beispiele für den PC Speaker oder das Floppy Laufwerk direkt programmieren können, das muss die VM oder der Emulator also ebenfalls emulieren können.

    Momentan hätte ich folgende VM und Emulatoren installiert:

    VM:
    VirtualBox
    qemu

    Emulatoren:
    DOSBox
    Bochs

    Welche würde sich für meine Zwecke am besten anbieten und warum genau diese VM bzw. diesen Emulator?



  • Ausreichend sind VMs/Emulatoren da bei weitem. Die Frage ist weniger "welche ist geeignet" sondern eher "welche magst du am liebsten", ich denke für DOS wäre DOS-Box am besten, da speziell für DOS gemacht.
    Sollte also eigentlich alles bieten was du brauchst.

    Allerdings stellt sich mir die Frage warum es unbedingt DOS sein muss, wäre es nicht sinnvoller gleich was neues zu lernen statt etwas veraltetes ?

    Klar du kannst dein DOS Wissen dann mehr oder weniger auch auf 32/64 Bit Windows übertragen, aber wozu diesen Schritt gehen wenn du gleich das neue lernen kannst ?



  • DarkShadow44 schrieb:

    Ausreichend sind VMs/Emulatoren da bei weitem. Die Frage ist weniger "welche ist geeignet" sondern eher "welche magst du am liebsten", ich denke für DOS wäre DOS-Box am besten, da speziell für DOS gemacht.
    Sollte also eigentlich alles bieten was du brauchst.

    Hat aber Bochs nicht mehr Möglichkeiten bezüglich dem Debuggen?

    Allerdings stellt sich mir die Frage warum es unbedingt DOS sein muss, wäre es nicht sinnvoller gleich was neues zu lernen statt etwas veraltetes ?

    Klar du kannst dein DOS Wissen dann mehr oder weniger auch auf 32/64 Bit Windows übertragen, aber wozu diesen Schritt gehen wenn du gleich das neue lernen kannst ?

    Die Bücher wurden für TASM geschrieben und das braucht DOS und das gilt auch für die Beispiele.

    Gute Assembler Lehrbücher sind heutzutage ja eher rar und wenn ich mal z.B. einen eigenen Bootloader programmieren will, dann bin ich den Beispielen in diesem Buch besser dran als irgend ein Win32 Assemblertutorial das immer von einer Windows Umgebung oder ähnlichem ausgeht.



  • DarkShadow44 schrieb:

    Allerdings stellt sich mir die Frage warum es unbedingt DOS sein muss, wäre es nicht sinnvoller gleich was neues zu lernen statt etwas veraltetes ?

    FREEDOS ist ja nicht so alt.

    Klar du kannst dein DOS Wissen dann mehr oder weniger auch auf 32/64 Bit Windows übertragen, aber wozu diesen Schritt gehen wenn du gleich das neue lernen kannst ?

    Nur unter DOS(oder eigenen OS) kann man selber in den 32/64 Bit Mode schalten und genau auch das selbe tun wie eine 32/64 Windows-Anwendung. Und darüber hinaus kann man unter DOS auch zusätzlich noch Dinge tun, die sonst nur Windows selber machen darf, wie etwa die Speicherverwaltung des gesamten Rams und den direkten Zugriff auf die vorhandene Hardware, um nicht so eingeschränkt wie eine Windows-Anwendung zu sein und bei diesem Schritt tiefer in die Systemprogrammierung einzutauchen. Nur vorhandene Systemdienste von Windows zu benutzen bietet ja nicht gerade eine umfassende Möglichkeit von der Wurzel bzw. untersten Stufe beginnend anzufangen zu lernen. Wer in ein Düsenjet steigt, der kann es damit ja auch nicht gerade gut lernen eine Propellermaschine zu fliegen und auch nicht wie man ein Jet-Treibwerk an die selber entworfenen Flügeln montiert.

    Die Frage wäre also: Wieso denn den zweiten Schritt schon vor dem Ersten Schritt machen?

    Ich meine man sollte es doch erstmal lernen auf den eigenen Beinen zu laufen, bevor man sich in einen fremden Sportwagen setzt und nur an den Schalthebeln ohne Basiswissen herumspielt. Und DOS bietet immer noch diese Möglichkeit von der Pike auf zu lernen, wobei diese bei den moderneren Betriebsystemen von MS schon verloren gegangen ist.

    Dirk



  • Dirk ich sehe das ganz genauso wie du.

    Und deswegen will ich diese DOS Assembler Beispiele aus den Büchern in einer VM/Emulator nachprogrammieren bzw. zu verstehen lernen.
    Ich könnte DOS zwar auch direkt booten, aber die VM bzw. der Emulator bietet noch die Möglichkeit, nebenbei auf dm Host OS im Internet nachzuschlagen, PDF Dateien anzuzeigen oder ganz einfach die Assembler Codedateien vom Host aus mit einem modernen Editor zu bearbeiten, so dass man sie in der VM nur noch assemblieren und ausführen muss.

    Mit der VM bzw. dem Emulator habe ich also die Vorteile beider Welten.
    Den vollen Zugriff auf einen PC (wenn auch nur emuliert) und trotzdem die Usability die mir ein modernes OS bietet.

    Ein weiterer Vorteil des Emulators bzw. der VM ist auch, dass man sich rein theoretisch nicht die HW schrotten kann.
    Wobei ich hier bei letzterem schon besserem belehrt wurde.
    Mit dem OS Haiku und einem Grafikkartentreiber von BeOS welches in der VM "VirtualBox" lief habe ich nämlich vor ein paar Jahren unbeabsichtigt meinen CRT Monitor geschrottet, als ich die VM in den Vollbildmodus schaltete. 😞

    Eine VM scheint also die Software vom Rechner nicht ganz abzuschotten.
    Bei einem Emulator, der alles in Software macht, sollte das aber gegeben sein.



  • Ich werde Bochs nehmen, denn er hat nen integrierten Debugger, was QEMU fehlt
    und im Gegensatz zu QEMU wird bei BOCHS wirklich absolut alles emuliert, was dem Debugger die volle Kontrolle über die emulierte Maschine gibt:

    http://www.lowlevel.eu/wiki/Bochs_Debugger

    http://www.lowlevel.eu/wiki/Bochs


Log in to reply