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.txt

    Den 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.


Anmelden zum Antworten