Seite 1 von 1
TASM-Syntax mit NASM
Verfasst: Do Mai 07, 2009 1:56 pm
von nufan
Hallo
Meine heutige Frage: Kann ich Assembler im TASM-Syntax auch mit NASM übersetzen? Ich habe heute folgendes Beispiel bekommen (gibt Text aus, keine Ahnung was da genau passiert, sollte nur zum Testen der Software dienen):
Code: Alles auswählen
DOSSEG
.model small
.data
txt db 'Assemblerprogramm by xy',13,10,'$'
.code
assume cs:@code,ds:@data
mov ax,@data
mov ds,ax
mov ax,3
int 10h
mov dx,offset txt
mov ah,9
int 21h
mov ax,4c00h
int 21h
END
Folgende Fehlermeldungen:
Code: Alles auswählen
$ nasm prog1.asm
prog1.asm:2: error: parser: instruction expected
prog1.asm:6: error: parser: instruction expected
prog1.asm:11: error: comma or end of line expected
Auch der -t-Flag für "TASM compatible mode" bringt nichts - immer noch die gleichen Fehler. Ebenso -f mit elf als Parameter.
Mache ich irgendwas falsch? Oder geht das einfach nicht? In einer XP-VM hab ichs mit TASM und TLINK ohne Probleme zum Laufen bekommen
Dieses "DOSSEG" sieht mir auch verdächtig aus. Hat das irgendwas mit DOS/Windows zum tun?
Wie gesagt, ich habe 0 Ahnung, wir sollten nur mal ein fertiges Programm zum Laufen bekommen.
Re: TASM-Syntax mit NASM
Verfasst: Do Mai 07, 2009 2:28 pm
von cloidnerux
Dieses "DOSSEG" sieht mir auch verdächtig aus. Hat das irgendwas mit DOS/Windows zum tun?
msdn hat geschrieben:Microsoft Macro Assembler Reference
.DOSSEG
Orders the segments according to the MS-DOS segment convention: CODE first, then segments not in DGROUP, and then segments in DGROUP.
So wie es aussieht ja.
Aber ich glaube du brauchst es nicht.
Bin mir aber nicht sicher.
Re: TASM-Syntax mit NASM
Verfasst: Do Mai 07, 2009 2:32 pm
von nufan
cloidnerux hat geschrieben:Dieses "DOSSEG" sieht mir auch verdächtig aus. Hat das irgendwas mit DOS/Windows zum tun?
Aber ich glaube du brauchst es nicht.
Bin mir aber nicht sicher.
Ich habs mal auskommentiert. Der Fehler in Zeile 2 ist dann weg, aber die anderen beiden sind immer noch da. Aber dieses DOSSEG muss doch auch irgendeinen Sinn haben. Fehlt da was Wichtiges wenn ichs einfach rausnehme?
Danke für die Erklärung, aber die ergibt für mich leider nicht viel Sinn...
Re: TASM-Syntax mit NASM
Verfasst: Do Mai 07, 2009 2:54 pm
von cloidnerux
aber die anderen beiden sind immer noch da.
Also, mal gegoogelt und festgestellt das ASSUME kein befehl von NASM ist
http://www.mrunix.de/forums/archive/ind ... 31423.html
Und für das:
Versuche es mal mit
ansonsten habe ich keine ahnung was das offset bringen soll.
Habe auch hier nru so ein altes MS-DOS Buch über Assembler.
Re: TASM-Syntax mit NASM
Verfasst: Do Mai 07, 2009 3:02 pm
von nufan
Da ist nach dem Entfernen von DOSSEG doch noch ein Fehler, muss ich übersehen haben. Lösche ich es weg und besser ich die Zeile mit offset aus, kommen folgende Meldungen:
Code: Alles auswählen
$ nasm prog1.asm
prog1.asm:2: error: attempt to define a local label before any non-local labels
prog1.asm:2: error: parser: instruction expected
prog1.asm:3: error: attempt to define a local label before any non-local labels
prog1.asm:6: error: parser: instruction expected
Die Zeilennummern stimmen noch mit dem geposteten Code überein.
Hat dieser -t-Flag irgendeinen Effekt? Ich merke bis jetzt nichts davon, mit ihm die gleichen Fehler wie ohne ihn.
Wenn es all diese Befehle für NASM nicht gibt (oder jedenfalls nicht mit dem gleichen Syntax), werde ich wohl bei der VM bleiben...
Re: TASM-Syntax mit NASM
Verfasst: Do Mai 07, 2009 3:11 pm
von cloidnerux
Die Syntax ist Intelsyntax und NASM unterstützt nur die AT&T syntax oder anderstrum.
Auf jedenfall wurde in einem link den ich dir gepostet habe über ein intel Kompatibilitätsmodus gesprochen.
Viellciht funktioniert das ja.
Re: TASM-Syntax mit NASM
Verfasst: Do Mai 07, 2009 4:27 pm
von nufan
Ich hab jetzt ne Weile gegoogelt und soweit ich das sehen kann ist das Intel-Syntax (nehme ich an wegen der fehlenden Präfixe). Laut Wikipedia ist NASM für den Intel-Syntax und TASM ebenfalls. Anscheinend verwende ich irgendwelche DOS-Befehle die nicht zum Standard gehören.
Um ganz sicher zu gehen hab ich auch schon den GNU-Assembler und yasm versucht. GAS im Intel und AT&T-Mode. Da hatte ich noch mehr Fehlermeldungen. Das konvertieren mit intel2gas ging auch schief. Dann werde ich bis ich genug Wissen hab um mir den Rest selbst beizubringen wohl viel Zeit vor Virtualbox verbringen.
BTW: NASM does not
ASSUME.
Re: TASM-Syntax mit NASM
Verfasst: Mi Aug 03, 2011 7:48 pm
von Kaestchen
Hat sich da an deinem Wissensstand etwas getan?
Re: TASM-Syntax mit NASM
Verfasst: Mi Aug 03, 2011 7:52 pm
von nufan
Kaestchen hat geschrieben:Hat sich da an deinem Wissensstand etwas getan?
Ich hab NASM gelernt und kann einfache Programme auf x86 und amd64 CPUs entwickeln.
Siehe z.B.:
http://www.proggen.org/doku.php?id=project:wordcount
Als Lektüre kann ich dir folgendes empfehlen:
http://www.amazon.de/Assembly-Language- ... 515&sr=8-2
TASM hab ich inzwischen aufgegeben, brauchte das auch nur kurz für die Schule.