Hallo!
Ich möchte einfache Programmiergrundlagen zuerst in Assembler später in
C und C++ lernen. In der Uni haben wir das noch nicht gehabt und ich
stehe mit meinem Problem gerade allein da. Im WWW habe ich leider auch
noch keine Lösung gefunden.
Also ich möchte eine einfache Assemblerdatei .ASM kompilieren und
ausführen.
Im Tutorial wurde gesagt ich brauche NASM. Die .ASM Datei (üblicher
Hello World Code) habe ich mit .\NASM A.ASM -o A.COM kompiliert in eine
ausführbare .COM Datei!
Leider tritt nach dem Ausführen der Datei folgender Fehler auf:
Ich habe auch ein 64-Bit System mit Windows 7, nur was ist die
empfohlene Vorgehensweise für Programmierer mit einem 64-Bit
Betriebssystem?
Ich habe über einen XP-MODE gelesen. Aber es muss doch z.B. Microsoft
Visual Studio schon eine integrierte Lösung bieten. Ich habe mir die
Studentenversion von Visual Studio 2008 heruntergeladen. Doch leider ist
immer noch nichts kompatibel.
"MASM" habe ich auch noch installiert, aber es klappt ebenso wenig.
Zudem lese ich im WWW das NASM 64-Bit unterstützen soll.
Das mag ja stimmen, doch wie bekomm ich meine Assembler Environment
ordentlich gebacken damit ich endlich ein bißchen Programmieren lernen
kann ?!
Brauche ich eigentlich als Anfänger so ein umfangreiches Programm wie
Visual Studio 2008. Später möchte ich wie oben erwähnt mit C und C++
auch ein bißchen rumexperimentieren.
Viele Grüße !
Wrihaiwo
Woory Haiwo schrieb:
> Ich habe auch ein 64-Bit System mit Windows 7, nur was ist die> empfohlene Vorgehensweise für Programmierer mit einem 64-Bit> Betriebssystem?
einen 64bit assembler zu benutzen
Vlad Tepesch schrieb:
> Woory Haiwo schrieb:>> Ich habe auch ein 64-Bit System mit Windows 7, nur was ist die>> empfohlene Vorgehensweise für Programmierer mit einem 64-Bit>> Betriebssystem?>> einen 64bit assembler zu benutzen
Wenn ich das mache, muss ich dann "anders" programmieren als in 32 Bit?
Denn ich lese im WWW Aussagen wie folgende:
"[..] x64 is a bit more complicated than 32-bit x86."
Quelle:
http://www.masm32.com/board/index.php?topic=10880.msg79773#msg79773
Also ich hab grad mal XP Mode mit Virtuellem Laufwerk installiert.
Es klappt soweit alles.
Gibt es aber wirklich keine andere Möglichkeit?
Das was Vlad Tepesch schreibt hilft ja nicht weiter, da man das Problem
nicht löst, sondern nur ausweicht.
du solltest auf jeden Fall einen vernünftigen Assembler nehmen, der ein
Windows-Executable erstellt.
keine ahnung, ob der Nasm, sich dazu bringen lässt.
Ich nehme an, bei einer Exe-Datei wird Windows sich nicht so sehr
sträuben.
Wenn ich mich nicht irre, enthält eine Com-Datei ja nicht mehr, als
reinen Maschinencode. eine exe hingegen einen PE-Heaer mit jede Menge
Infos für das OS.
Mein Rat wäre den MASM32 oder MASM64 zu benutzen.
Die gibts kostenlos von Microsoft. (entweder allein, oder im Bundle mit
dem Visual Studio Express)
Hat natürlich teilweise ne andere Syntax.
Hallo nochmal Vlad Tepesch,
den MASM32 habe ich schon ausprobiert, reagiert aber mit selber
Fehlermeldung wie NASM.
Ich habe auch schon in eine EXE-Datei kompiliert - ohne Erfolg.
Mit dem XP-Mode von Windows 7 klappts besser als gedacht. Anscheinend
muss man ein 32-Bit OS haben - da gibts wohl keine Tricks & Tips.
Oder man nimmt MASM64 und lernt (soweit ich das verstanden habe)
teilweise unterschiedliche Syntax als in der 32-Bit Programmierung.
Der XP Mode scheint wohl meine Lösung zu sein. Später versuch ich dann
für den Mikrocontroller Assembler zu nutzen.
Stimmt dass, das für Mikrocontroller nur die Atmel AVR-Studio Software
in Frage kommt, weil nur diese korrekten .HEX Code für die
Mikrocontroller kompilieren?
Ne, für die AVR gibts geschätzte zwanzig verschiedene Assembler, die
alle funktionieren.
Allerdings wirst du wieder bei Null anfangen, da AVR-Assembler quasi
nichts mit Intel-Assembler gemeinsam hat :->
Sven P. schrieb:
> da AVR-Assembler quasi> nichts mit Intel-Assembler gemeinsam hat :->
Das ist gut zu wissen. ^^
D.h. die meisten Mikrochip-Typen haben eine unterschiedliche
Assembler Programmierung?
Vielleicht ist die Frage nicht an richtiger Stelle, aber eventuell ist
ein Physiker unter euch oder jemand weiß es in etwa. Also mich würde
interessieren welches Assembler Wissen für ein Physikstudium brauchbar
wäre.
AVR werde ich unabhängig davon lernen, weil mich das interessiert. Aber
hilft AVR oder womöglich andere Assemblerkentnisse für höhere Semester
Physik?
Woory Haiwo schrieb:
> Vielleicht ist die Frage nicht an richtiger Stelle, aber eventuell ist> ein Physiker unter euch oder jemand weiß es in etwa. Also mich würde> interessieren welches Assembler Wissen für ein Physikstudium brauchbar> wäre.
Wie kommst du darauf, dass assembler überhaupt für ein Physikstudium
nützlich ist?
beschäftige dich lieber mit c/c++ und Matlab, und Labview.
Das bringt dir mit Sicherheit viel mehr.
C gibt es für nahezu jede Architektur und es ist immer gleich (abgesehen
von system-spezifischen Bibliotheken).
Bei Assembler fängst du bei jedem Prozesor quasi von Null an und du
musst jedes Bit mit Vornamen kennen (was aber natürlich auch Vorteile
hat - aber bei weitem mehr Nachteile).
Also, leg dir zuerst fundierte C-Kenntnisse zu.
Wenn du dann auf extrem laufzeitkritische Probleme triffst, arbeite dich
in Assembler ein und fertige eine auf die CPU maßgeschneiderte Routine
an.
Woory Haiwo schrieb:
> Sven P. schrieb:>> da AVR-Assembler quasi>> nichts mit Intel-Assembler gemeinsam hat :->>> Das ist gut zu wissen. ^^>> D.h. die meisten Mikrochip-Typen haben eine unterschiedliche> Assembler Programmierung?
Genaugenommen haben alle Mikroprozessor-Familien unterschiedliche
Assemblersätze.
Woory Haiwo schrieb:
> Vielleicht ist die Frage nicht an richtiger Stelle, aber eventuell ist> ein Physiker unter euch oder jemand weiß es in etwa. Also mich würde> interessieren welches Assembler Wissen für ein Physikstudium brauchbar> wäre.
Das ist leicht:
Gar keines.
> AVR werde ich unabhängig davon lernen, weil mich das interessiert. Aber> hilft AVR oder womöglich andere Assemblerkentnisse für höhere Semester> Physik?
Kann sein:
Du lernst auf jeden Fall folgerichtiges Denken (lernst du durch
Programmieren allgemein) und du lernst das penibel genau Beachten von
Details die einem Normalsterblichen verborgen bleiben (das ist zwar auch
bei Programmieren im Allgmeinen so, aber im Speziellen bei
Assemblerprogrammierung extrem wichtig)
Offensichtlich ist dein NASM ein 16bit Assembler (oder nutzt nur 16bit
in diesem konkreten Fal). Wie sonst ist zu erklären, daß Du COM Dateien
baust bzw. bauen kannst. Dann hast Du zwei Probleme:
erstens unterstützt Win64 kein 16bit mehr, und zweitens kennt es keine
COM Datein, sondern nur EXE.
Nehme also 32 oder 64bit Assembler. Und baue EXE Dateinen, und keine
COM's. Mindestens 32bit.