NASM Compilierungsproblem
-
Hey Leute
ICh bin ein Neuling in Assembler und möchte das Hallo Welt Programm compilieren Hier einmal der Source:.model small .code ORG 100H HOST: mov ah, 9 mov dx,OFFSET HI int 21H mov ax, 4C00H int 21H HI DB 'Have a nice day!$' END HOST
Als Compiler(wenn man das bei asm sagen kann
) verwende ich nasm.
nasm Hello.asm -f bin -o Hello.com
Ich kopier die Hello.asm Datei also ins nasm Verzeichnis und geb die obige Zeile ins Dos Fenster ein.
Leider wird nur der Text-Editor von Microsoft gestartet und ich bekomm keine Warnung noch Fehlermeldung. Weiß irgendwer den Fehler?Ich freu mich schon auf eure Antworten und bedankt mich scho mal im voraus
greetz ein verzweifelter
pisco
-
piscosterr schrieb:
Als Compiler(wenn man das bei asm sagen kann
) verwende ich nasm.
He?
Wenn du
nasm Hello.asm -f bin -o Hello.com
eingibst, startet notepad oder wie?
Ist "nasm" überhaupt eine gesetzte Umgebungsvariable oder bist du im NASM-Verzeichnis? Daran liegt es in jedem Fall.
-
.model,.code ... das sieht doch sehr nach masm aus!
-
masm schrieb:
.model,.code ... das sieht doch sehr nach masm aus!
Das kommst noch dazu ... aber ich wüsste nicht, dass nasm bei MASM-Code notepad startet
-
Hey
Leute hab in den letzten Tagen etwas herumprobiert. Leider funzt es immer noch nicht.
Hab mal einen screenshot gemacht um mein Problem zu verdeutlichen:http://www.bilder-space.de/thumb/25.01esnwoapGFj8FHjt.JPG
ein vor dem Nervenzusammenbruch stehender
pisco
-
du benutzt den falschen Assembler - entweder du nimmst MASM oder du änderst den code so ab, das nasm ihn akzeptiert.
-
Hey
erstmal thx für die Antwortdu benutzt den falschen Assembler - entweder du nimmst MASM oder du änderst den code so ab, das nasm ihn akzeptiert.
Ich hät dazu 2 Fragen:
1. Wie muss ich den Code abändern? Gibts dazu irgendein Tutorial, welche Befehle bei nasm gelten?
2.Brauch ich für masm eigentlich Visual Studio oder kann ich den auch in Code Blocks einbinden?greetz pisco
-
Piscosterr: Eine Moeglichkeit waere vielleicht, auf Linux umzusteigen. Da haettest Du keine Probleme mit der Auswahl der Werkzeuge usw... Was meinst Du dazu?
-
du meinst sicher gcc.. oder welche werkzeuge hätte sonst unter linux zu verfügung?(kenn mich noch nicht soooo gut mit linux aus
)
greetz
-
piscosterr schrieb:
du meinst sicher gcc.. oder welche werkzeuge hätte sonst unter linux zu verfügung?
Ja, gcc, binutils und gdb. Die binutils bestehen aus einer Reihe von Programmen, darunter as, der GNU Assembler...
-
abc.w schrieb:
Piscosterr: Eine Moeglichkeit waere vielleicht, auf Linux umzusteigen. Da haettest Du keine Probleme mit der Auswahl der Werkzeuge usw... Was meinst Du dazu?
und dann am besten gleich mit dem zeitgemäßen AT&T-Syntax anfangen
piscosterr schrieb:
Ich hät dazu 2 Fragen:
1. Wie muss ich den Code abändern? Gibts dazu irgendein Tutorial, welche Befehle bei nasm gelten?Hier kann man dir bestimmt weiter helfen.
piscosterr schrieb:
2.Brauch ich für masm eigentlich Visual Studio oder kann ich den auch in Code Blocks einbinden?
Assembler und IDE sind zwei verschiedene Sachen – im diesem Fall würde ich dir von beiden abraten (im Bezug auf masm).
IMO eine der besten IDE's für Assembler (insbesondere für masm) ist RadAsm
masm kannst du durch das masm32-Package beziehen. Hier ist dann auch schon eine in deinem Fall benötigter 16Bit-Linker dabei.Nun weiß ich nicht ob es einen speziellen Grund gibt, warum du mit 16Bit Assembler für DOS anfängst, aber ich würde dir davon generell abraten. Das genannte masm32 SDK ist IMO sehr Anfängerfreundlich und erlaubt es sich leicht in die 32Bit Assemblerprogrammierung unter Windows ein zu arbeiten.
Hier noch eine Batch (*.bat) die du zum kompilieren brauchst (Voraussetzung masm32 unter C:\ installiert):
@echo off if not exist %CD%\%~n1.asm goto nofile if exist %CD%\%1.obj del %CD%\%~n1.obj if exist %CD%\%1.exe del %CD%\%~n1.exe @echo on C:\masm32\bin\ml.exe %CD%\%~n1.asm C:\masm32\bin\link16.exe %CD%\%~n1.obj,%CD%\%~n1.exe,,, @echo off goto end :nofile echo invalid source file :end pause
-
Hey
erstmal thx für deine Antwort
@masmNun weiß ich nicht ob es einen speziellen Grund gibt, warum du mit 16Bit Assembler für DOS anfängst, aber ich würde dir davon generell abraten. Das genannte masm32 SDK ist IMO sehr Anfängerfreundlich und erlaubt es sich leicht in die 32Bit Assemblerprogrammierung unter Windows ein zu arbeiten.
hab mir das Buch Assembler von Reiner Beck gekauft und versuche mit diesem ASM zu lernen
Assembler und IDE sind zwei verschiedene Sachen – im diesem Fall würde ich dir von beiden abraten (im Bezug auf masm).
IMO eine der besten IDE's für Assembler (insbesondere für masm) ist RadAsm**
Wie kann ich den masm in diese IDE einfügen, den ich kann irgendwie mein Programm nicht kompilieren?(nur html dateien *lol*)**Hier noch eine Batch (*.bat) die du zum kompilieren brauchst (Voraussetzung masm32 unter C:\ installiert):
Irgendwie funzt die datei bei mir nicht obwohl alles unter C: installiert wurde.
Hab amal einen Screenshot gemacht
:
http://www.bilder-space.de/show.php?file=27.01WWvJF0w9qaaO3kS.JPG
freu mich scho auf deine Antwort
greetz piscoster
-
piscoster schrieb:
Wie kann ich den masm in diese IDE einfügen, den ich kann irgendwie mein Programm nicht kompilieren?(nur html dateien *lol*)[/b]
HTML Dateien? Ich spare mir den Kommentar.
Wie kannst du "MASM in die IDE einfügen" ... IDE steht für Integrated Development Environment. Eine IDE bietet dir den Komfort Text-Editor, Compiler und Linker in einem Programm zu nutzen.
"By default" bietet das Visual Studio - meiner Ansicht nach - keine direkte Unterstützung für Assembler (MASM).
Du kannst aber per Custom Build Rule (z.B.) für eine *.asm Datei definieren, dass sie Compiler X und Linker Y verwenden soll.Ansonsten kannst du aber auch per Kommandozeile, Batch oder Makefile kompilieren und linken. Wichtig ist nur, dass dein Compiler / Linker dein Text-File bekommt.
-
piscoster schrieb:
**
Wie kann ich den masm in diese IDE einfügen, den ich kann irgendwie mein Programm nicht kompilieren?(nur html dateien *lol*)**du hättest dir mal durchlesen sollen, was bei der Beschreibung des Downloads steht:
Includes addins and custom controls
You also need programming packsDen Download findet man direkt darunter -> RadASM programming pack
Aus diesem Archiv brauchst du nur 2 Sachen: masm.ini und den Ordner 'Masm'. Diese kopierst du in das Verzeichnis in der die RadAsm.exe ist.Danach gehst du (in der IDE) auf Options->'Programming languages': hier musst du dann die masm.ini auswählen (und hinzufügen). Daraufhin gehst du unter Project->'Set Assembler'->masm.
Jetzt ist RadAsm für Win32-Assembler konfiguriert.
Leider ist bei dieser Konfiguration nicht möglich direkt 16Bit-Dos Programme zu erstellen – hab daher die masm.ini um den Projekttypen ‚Dos App (.exe) ‘ erweitert: hier kannst du sie runterladen. (du musst RadAsm nach dem Ersetzen neu starten)
Danach kannst du ein Projekt vom Typen ‚Dos App‘ erstellen – das sollte dann theoretisch auch bei dir laufenpiscoster schrieb:
Irgendwie funzt die datei bei mir nicht obwohl alles unter C: installiert wurde.
du musst die Batch ja auch mit dem Dateinamen als Parameter starten. z.B.:'C:>Batch.bat MeinQuellcode.asm'.
Mir ist aber grad aufgefallen, das da so oder so ein kleiner Fehler drin wahr:
die Zeilen:C:\masm32\bin\ml.exe %CD%\%~n1.asm
C:\masm32\bin\link16.exe %CD%\%n1.obj,%CD%\%n1.exe,,,müssen eigentlich
C:\masm32\bin\ml.exe /c %CD%\%~n1.asm
C:\masm32\bin\link16.exe %CD%\%n1.obj,%CD%\%n1.exe,,,,heißen.
-
Toll, die zeitgemässen Batch-Dateien...
-
abc.w schrieb:
Toll, die zeitgemässen Batch-Dateien...
-
hab alles so gemacht wie du masm sagtest und alle ordner bei radasm reinkopiert. kaum klick ich auf build kommt mir schon wieder eine Fehlermeldung(sooo knap vorm Ziel
) entgegen
hab wieder einmal einen screenshot gemacht:http://www.bilder-space.de/thumb/02.02ICRiNmM8kiwk0Rt.JPG
hoffentlich könnt ihr mir helfen den sonst dreh ich durch bei diesen ganzen Fehlermeldungen
greetz pisco
-
benutz die masm.ini die ich dir im vorherigen Beitrag verlinkt habe (nicht vergessen: RadAsm neu starten und Projekt neu anlegen)
http://www.file-upload.net/download-2208578/masm.ini.html´
-
piscosterr schrieb:
hoffentlich könnt ihr mir helfen den sonst dreh ich durch bei diesen ganzen Fehlermeldungen
Wie gesagt, unter Linux hättest Du alle zusammengehörenden Werkzeuge...