Assembler für windows xp
Stefano Albrecht
- programmiertechnik
hallo,
leider musste ich heute feststellen, dass mein compiler für assembler (tasm 2.1) nicht auf meinem windows xp (sp2, home-edition) rechner läuft. kann mir vielleicht jemand helfen? gibt es vielleicht eine seite, an der man sich den neuesten tasm (z.b. 5.0) "kostenlos" laden kann?
ich konnte bisher leider nichts googeln.
danke.
ist das nicht so das es damit zusammenhängt das jegliche dos oberfläche<br> in windows xp entfernt worden ist und somit auch die<br> programmierung mit assambler nicht mehr möglich ist oder irre ich mich?
also der compiler funktioniert ja, nur dass ich nicht linken kann, wenn ich das programm laufen lassen will. kompilieren geht. starten und debuggen nicht.
ich bekomm dann die meldung, dass er am linken is, und dass ich bitte warten soll (keine rückmeldung...)
dos wurde schon seit win 98 komplett entfernt, und blieb lediglich als alternative (emulierte) shell zur verfügung. der compiler geht bei mir ja auch mit windows 200 nt (sp4).
Hi,
dos wurde schon seit win 98 komplett entfernt, und blieb lediglich als alternative (emulierte) shell zur verfügung. der compiler geht bei mir ja auch mit windows 200 nt (sp4).
Nein, erst Windows 2000 (NT 4.1) hat den Plumpatsch für den Privatanwender abgeschafft. Win 98 und auch Win ME waren voll DOS-basierte Frontends mit pseudo-Multitasking.
Grüße aus Barsinghausen,
Fabian
Hallo Fabian,
Win 98 und auch Win ME waren voll DOS-basierte Frontends mit pseudo-Multitasking.
Das wird oft behauptet, ist aber nicht wahr.
Alle Vertreter der Win9x-Reihe einschließlich ME, das ja nur ein funktionsreduziertes Win98 ist, sind eigenständige Betriebssysteme. Windows 9x basiert nicht auf DOS, sondern übernimmt, nachdem es mal gestartet ist, _alle_ elementaren Funktionen selbst: Speicher- und Prozessmanagement, Dateisystem, Hardware-Ansteuerung, etc. Bei diesen Systemen hat DOS eigentlich nur die Rolle, die bei den "erwachenen" Windowsen der Bootmanager hat: Es ist ein Zwischenschritt, der beim Systemstart durchlaufen wird, mehr nicht.
Davon abgesehen können die alten Windowse noch ein DOS emulieren. Eine DOS-Umgebung, die vollständig unter der Kontrolle von Windows steht. Hier unterscheiden sie sich von den neueren Versionen nur dadurch, dass diese emulierte DOS-Umgebung vom Taskmanager etwas anders behandelt wird und auch dann CPU-Zeit zugewiesen bekommt, wenn sie eigentlich im Leerlauf ist, weil der Zustand "Leerlauf" bei DOS-Anwendungen prinzipbedingt nicht immer eindeutig feststellbar ist - im Gegensatz zu Windows-Anwendungen, die eventgesteuert arbeiten. Wenn sie auf ein Event warten, weiß das Betriebssystem davon, weil es für die Meldung eben dieses Events an die Anwendung zuständig ist. Außerdem werden in der DOS-Emulation von Win9x direkte Zugriffe auf die Hardware z.T. geduldet, indem sie von Windows abgefangen und auf die entsprechenden Windows-Devices umgeleitet oder in einigen Fällen auch tatsächlich verweigert werden. Das führt dann auch zu der berühmten Meldung "Diese Anwendung wurde aufgrund eines unzulässigen Vorgangs geschlossen".
Bei den späteren Windows-Versionen (XP, 2000) wurden diese Extrawürste der DOS-Emulation stark eingeschränkt, was insgesamt der Stabilität des Systems zugute kommt.
Zutreffend ist allerdings, dass das Multitasking, d.h. die Zuteilung von CPU-Zeit an einzelne Prozesse, unter Win9x nicht gerade schlau implementiert ist. Insofern kann ich den Ausdruck "pseudo-Multitasking" mal so stehenlassen, obwohl das System auch hier besser ist als sein Ruf.
So, das musste doch mal gesagt werden. :)
So long,
Martin
und ich muss auch noch was sagen:
ich hatte also doch recht! ;)
Hallo Martin,
Das wird oft behauptet, ist aber nicht wahr.
Alle Vertreter der Win9x-Reihe einschließlich ME, das ja nur ein funktionsreduziertes Win98 ist, sind eigenständige Betriebssysteme. Windows 9x basiert nicht auf DOS, sondern übernimmt, nachdem es mal gestartet ist, _alle_ elementaren Funktionen selbst: Speicher- und Prozessmanagement, Dateisystem, Hardware-Ansteuerung, etc. Bei diesen Systemen hat DOS eigentlich nur die Rolle, die bei den "erwachenen" Windowsen der Bootmanager hat: Es ist ein Zwischenschritt, der beim Systemstart durchlaufen wird, mehr nicht.
Ja und nein. Wenn Du Windows 95 herunterfährst und das automatische Abschalten, was heutzutage Gang und Gebe ist bei ATX-Computern, deaktivierst, dann kommt ja dieser Bildschirm "Sie können den Computer jetzt abschalten." - wenn der Bildschirm erscheint, kannst Du ganz normal DOS-Kommandos eingeben; wenn Du bspw. CLS eingibst, siehst Du die Kommandozeile wieder. Ab Windows 98 hat Microsoft diesen "Trick" irgendwie deaktiviert, allerdings läuft DOS da immer noch. Wenn ein Windows der 9x-Reihe also gestartet ist, dann ist DOS immer noch im Speicher irgendwo vorhanden. Und DOS hat sogar teilweise noch die Kontrolle über das System, während Windows läuft: Mittels des SUBST-Befehls kann man unter DOS bestimmte Verzeichnisse zu eigenen Laufwerken machen. Ich weiß nicht mehr die genaue Syntax, allerdings konnte man mit einem Aufruf ähnlich wie SUBST C:\PROGRAMME D:\ das Verzeichnis C:\PROGRAMME unter D:\ verfügbar machen (sofern D frei war). Wenn Du SUBST-Aufrufe unter 9x-Systemen in die AUTOEXEC.BAT geschrieben hast, dann gelten diese Laufwerks-"Verknüpfungen" auch unter Windows noch.
Insofern: Windows 9x ist _kein_ eigenständiges Betriebsystem, nur zu 99,5% oder so. Es übernimmt zwar größtenteils die Kontrolle über das System (schaltet den Prozessor in den Protected Mode [1], hat eigene Hardware-Treiber und eigenes Memory-Management etc.) aber eben doch nicht 100%ig.
Dass Microsoft es hätte durchaus besser machen können, zeigt Linux: Linux kann man über ein Programm namens Loadlin auch von DOS aus starten - mit dem Unterschied, dass bei diesem Vorgang DOS _vollständig_ aus dem Speicher entfernt wird und Linux die vollständige Kontrolle über das System übernimmt - im Gegensatz zu Windows 9x, das das eben nur halbherzig tut.
Viele Grüße,
Christian
[1] Was unter reinem DOS durch Applikationen allerdings auch gemacht wurde.
Hallo Christian
[...] viel Richtiges [...]
Und DOS hat sogar teilweise noch die Kontrolle über das System, während Windows läuft: Mittels des SUBST-Befehls kann man unter DOS bestimmte Verzeichnisse zu eigenen Laufwerken machen.
SUBST ist ein normaler Kommandozeilenbefehl, der auch in Windows-NT-ähnlichen Betriebssystemen vorhanden ist, der Pfad lautet:
%systemroot%\system32\subst.exe
Das Vorhandensein und die Funktionalität dieses Befehls ist kein Hin- und erst recht kein Nachweis dafür, dass DOS die Kontrolle über das System hat.
Auf einem Windows-95-Rechner ohne Netzwerkanbindung war dieser Befehl bei einem Projekt mal extrem wichtig für mich.
Freundliche Grüße
Vinzenz
Hallo,
Ja und nein. Wenn Du Windows 95 herunterfährst und das automatische Abschalten, [...] dann ist DOS immer noch im Speicher irgendwo vorhanden.
Ja, irgendwo in der hintersten Ecke des Arbeitsspeichers ist noch ein initialisiertes DOS, das stimmt. Aber es liegt brach und tut absolut _nichts_ mehr. Es wird von Windows nur noch als Vorlage verwendet, um daraus eine "frische" DOS-Emulation zu klonen - deshalb steht in der DOS-Box von Windows (fast) alles zur Verfügung, was beim DOS-Start geladen wurde.
Und DOS hat sogar teilweise noch die Kontrolle über das System, während Windows läuft:
Nein. Dein Beispiel mit dem SUBST wird oft hergenommen (auch wenn du die Parameter in der falschen Reihenfolge hast *g*). Aber die Funktionalität von SUBST, die unter reinem DOS übrigens nichts weiter ist als ein Eintrag in der System Path Table, wird von Windows übernommen und repliziert. Du kannst ein SUBST-Kommando auch in der DOS-Box eines laufenden Windows (übrigens auch XP/2k) eingeben und es gilt sofort systemweit.
Insofern: Windows 9x ist _kein_ eigenständiges Betriebsystem
Ich würde sagen, ihm fehlt nur die Fähigkeit, selbständig zu booten. Nur dafür braucht es den DOS-Untersatz.
schaltet den Prozessor in den Protected Mode
... der dann auch nur halbherzig genutzt wird. Dann teilen sich nämlich _alle_ laufenden Windows-Applikationen einschließlich der Shell(!) _einen_ gemeinsamen Adressraum. Das ist auch der Grund, warum ein Programm, das Amok läuft, alle anderen mitreißen kann. :~|
Linux kann man über ein Programm namens Loadlin auch von DOS aus starten - mit dem Unterschied, dass bei diesem Vorgang DOS _vollständig_ aus dem Speicher entfernt wird
Das erinnert mich an das Prinzip von Novell Netware. Die machen das genauso - oder haben es zumindest früher (Netware 3.x) so gemacht. Und beim Herunterfahren des Servers wurde DOS frisch gebootet.
Bye,
Martin
Hallo,
ist das nicht so das es damit zusammenhängt das jegliche dos oberfläche<br> in windows xp entfernt worden ist und somit auch die<br> programmierung mit assambler nicht mehr möglich ist oder irre ich mich?
Nein, das ist Unsinn.
Die "DOS-Oberfläche", wie du sie nennst, hat nicht das geringste mit Assembler-Programmierung zu tun.
Und abgesehen davon kann man selbst unter Windows XP noch die meisten DOS-Anwendungen benutzen, wenn sie "sauber" programmiert sind (z.B. ohne direkte Hardware-Zugriffe).
@Stefano: Nein, weder der TASM (ehemals Borland) noch der MASM (M$) ist kostenlos zu haben. Ich sehe aber auch keinen Grund, warum der alte TASM unter XP nicht mehr laufen sollte - wie äußert sich dieses "nicht-funktionieren"?
So long,
Martin
habe ich als antwort deines vorreiters gepostet.
ich kann nicht verlinken... (siehe antwort)
Hallo n3b!
[...] <br> [...] <br> [...]
Ähm, HTML wird natürlich vom Forenskriptignoriert.
Außerdem scheint deine Shift-Taste kaputt und dein Begrüßungssinn stark
beeinträchtigt zu sein!
℆, ℒacℎgas
Hi,
warum nimmst Du nicht den Assembler von Windows (debug.exe)? Ist der Dir etwa zu "sperrig"? ;-)
Ansonsten würde ich NASM empfehlen. Ist ein sauberes Programm.
so short
Christoph Zurnieden
Ansonsten würde ich NASM empfehlen. Ist ein sauberes Programm.
cool danke, den werd ich mal hospitieren :)