TASM oder MASM
-
Hallo Forum
ich habe mir ein bischen Literatur über Assembler gekauft, nur jetzt bin ich verwirrt! In dem selben kleinen Buch ist die Rede von MASM und TASM Editoren für Assembler, nur jetzt komm ich garnicht mehr klar warum ich Fehler erhalte in der Zeile:;Fehler wird in der ersten Zeile ausgegeben, DATEN SEGMENT, und ;das nur bei MASM der Borland TASM macht keine Probleme DATEN SEGMENT Meldung db "Hallo Welt","$" DATEN ENDS
Die Frage ist : gibt es Unterschiede zwischen den beiden TASM und MASM in der Assembler Schprache???
Und was mich dann total fertig gemacht hat ist das ich Editoren Probiert habe die diesen DATEN und CODE segmente gernicht haben, da geht es sofort mit Anweisungen los!!!So z.B.:
jmp BEGIN Text DB 'Hier bin ich ! $' Text1 DB 'Erst ich !', 13, 10, '$' BEGIN: lea dx, Text1 mov ah, 9 int 21h lea dx, Text mov ah, 9 int 21h mov ah, 4Ch int 21h
Also kein DATEN , kein CODE auch kein STAPEL SEGMENT
WIE SOLL ICH JETZT ANFANGEN??????mfg
Mirsad
-
tasm und masm sind die beiden assembler, die in der literatur am häufigsten verwendet werden. naja wenn der code in deinem buch mit tasm hervorragend funktioniert dann nimm doch tasm.
tasm und masm unterscheiden sich nicht grossartig. man kann sogar tasm code schreiben, der von masm auch assembliert wird.
also nimm erstmal dein buch und tasm und lerne das genanze mit den datensegmenten usw. danach wenn du mehr erfahrungen gesammelt hast, kannst du auch solche assembler verwenden, die nicht umbedingt die segmente deklariert haben wollen.
-
Moin, Moin...
die Bezeichnung MASM- bzw. TASM-Editor ist nicht so ganz richtig. TASM und MASM sind Assembler und keine Editoren. Ein Editor ist ein Programm mit dem ich den Assembler-Quellcode eingebe, der dann von dem Assembler(dem Übersetzungsprogramm) übersetzt wird.
MASM und TASM sind sich recht ähnlich. Die Syntax der Assembler-Befehle sind gleich, weil sie ja den Code für dieselbe Prozessorfamilie generieren. Unterschiede gibt es bei den Assembler-Direktiven. Das sind Anweisungen an das Assemblerprogamm, um z.B. einzustellen, dass zwischen Groß- und Kleinschreibung unterschieden wird.
Dein Beispiel mit dem Datensegment wird von beiden Assemblern ohne Fehler übersetzt. Ich glaube, der Fehler ergibt sich, weil du MASM nicht mitgeteilt hast, dass der Linker nicht automatisch gestartet werden soll.
Ml /c DeinProgramm.asm
Der MASM-Linker kann nur 32-Bit-Programme erzeugen. Du schreibst wahrscheinlich Programme für DOS. Dafür brauchst Du einen 16-Bit-Linker:
ftp://ftp.microsoft.com/softlib/mslfiles/lnk563.exe
Das Programm ist ein selbstentpackendes Archiv. Nach der Ausführung stehen drei Dateien im Verzeichnis:
link.exe
cvpack.exe
readme.txtDen Linker link.exe umbenennen in link16.exe und in das Verzeichnis bin kopieren.
Die OBJ-Datei linkst Du dann mit:
link16 DeinProgramm.obj;
Das Semikolon am Ende der Zeile unterdrückt den Abfragemodus des Linkers.
Ansonsten empfehle ich Dir einen Assembler auszuwählen und dabei erstmal zu bleiben. Lerne die Grundlagen der Assemblerprogrammierung und Benutzung Deines Assemblers. Wenn Du fortgeschrittener bist, dann kannst Du auch andere Assembler nutzen. Zu Anfang verwirrt es nur, wenn man zig unterschiedliche Assembler ausprobiert.
Ciao...
-
Hallo
ähm, das war jetzt jede Mänge Zeug das verdaut werden muß, aber auch Hilfe,
dann werde ich erst mal üben, ich wollte schon mit der nächten Frage kommen aber ich fürchte es ist noch zu früh!
Danke für die Infos
mfg
Mirsad
-
Hi.
wasiliy schrieb:
man kann sogar tasm code schreiben, der von masm auch assembliert wird.
AFAIK verhaelt es sich eher umgekehrt - der TASM ist naemlich (zumindest was die Direktiven betrifft) MASM-kompatibel - der MASM kann aber mit TASM-Direktiven nichts anfangen.
-
was ich sagen wollte ist, dass es möglich ist quelltexte zu schreiben, die von beiden assemblern assembliert werden können.