Externe Exe starten?



  • Hallo,

    ich wollte mal fragen, wie ich eine externes Programm (.exe) aus Assembler herraus starte. Das Assebler Programm selber kann sich danach beenden.

    Danke

    MfG
    NiBurhe



  • Vom Prinzip her funktioniert das in Assembler wie in jeder anderen Programmiersprache auch, indem du die entsprechenden Funktionen des Betriebssystems aufrufst.
    Ich nehme einfach mal an, dass du fuer Windows programmierst - in dem Fall kannst du dir eine entsprechende Funktion aus der msdn suchen.



  • Danke, aber das bringt mich nicht wirklich weiter.

    Kann aber auch daran liegen, dass ich vergessen habe noch ein paar informationen zu geben.
    Also wir haben bisher immer Turbo Assembler(TASM) mit dem Befehlssatz für den 8086 (http://www.i8086.de/asm/8086-88-asm.html) verwendet. Es soll schon für Windows sein, d.h. dass ist mit den Mittel die wir bisher verwendet haben nicht möglich?

    MfG
    NiBurhe



  • Tja, "asking smart questions". 😃 Wenn du allgemeine Fragen stellst, bekommst du auch nur allgemeine Antworten.

    TASM ist zwar ziemlich veraltet, kann allerdings mit den mitgelieferten Libs in neusten Versionen (>4.0) einfache Win32-Anwendungen erstellen (~ auf dem Stand von Win95, theoretisch erweiterbar). Wie die Bezeichnung Win32 erahnen laesst, laeuft das Ganze allerdings mit 32Bit, dh. nur 8086-16Bit-Gedings reicht nicht. Du solltest dir vielleicht erstmal einen groben Ueberblick ueber 32Bit-Programmierung verschaffen. Schau dich dazu mal in den FAQ um, da gibt es auch Tutorials zur Win32-Programmierung - vor allem zu MASM, teils aber auch TASM.

    Ein Beispielprogramm fuer TASM Win32 (falls du das erwartest) kann ich dir leider gerade nicht aus dem Aermel schuetteln - dazu muesste ich erst selbst nochmal die TASM-Docs waelzen (bin aber zu faul 😉 ).
    Ich wuerde ansonsten aber eh empfehlen, fuer Win32 einen anderen Assembler zu verwenden - am besten NASM oder FASM (siehe wieder FAQ).

    Falls ansonsten noch weitere konkrete Fragen auftauchen kannst sie natuerlich gern stellen.

    edit:
    Wenn ihr mit dem TASM auf WinXP oder aelter DOS-Programme (16Bit, int 21, usw.) schreibt, kannst du AFAIK auch einen DOS-Aufruf benutzen, um andere Programme zu starten. Ist zwar nicht gerade die feine Art, beschraenkt auf einen Dateinamen im Format 8.3, laeuft auch nicht mehr unter Vista etc.
    AFAIR ging das, mit int 21, Fkt. 4Bh, wobei du den meisten Kram im parameter Block wahrscheinlich auf 0 setzen kannst.
    Ist zwar letztendlich eher unpraktisch, fuer dich aber evtl. noch am einfachsten umzusetzen, wenn du den Assembler nicht wechseln willst.


Anmelden zum Antworten