TASM - Unexpected end of File encountered ...



  • TASM beschwert sich beim assemblieren mit diesem Fehler, in der letzten Zeile.
    Er sucht wohl irgendwas und findet es nicht bis zum Dateiende, ich hatte dieses Problem
    heute schon einmal, weiß aber nicht mehr woran es gelegen hatte 😞

    Wäre jdm. von euch so freundlich und würde mal einen Blick auf mein Programm
    werfen, ich habe es schon mehrfach durchgelesen, aber ich finde da nichts 😞

    .model small
    
        ;Makros
        print MACRO string
            mov dx, offset string
            mov ah, 9
            int 21h
        ENDM
    
        read MACRO string
            lea dx, string
            mov ah, 0Ah
            int 21h
        ENDM
    
        toDos MACRO string
            mov bl, string.chars
            xor bh, bh
            mov string.text[bx], "$"
        toDos ENDM
    
        ;Strukturen
        buffer struc
            len  db 50
            chars db 0
            text    db 50 DUP (0)
        buffer ends
    
        daten struc
            namen   buffer<>
            alter       buffer<>
            ort     buffer<>
        daten ends
    
        .data
    
            eName   db "Bitte Namen eingeben $"
            eAlter      db "Bitte Alter eingeben $"
            eOrt        db "Bitte Wohnort eingeben $"
            endl        db 10,13,"$"
    
            input       daten<>
    
        .code
            .startup
    
            ;Benutzereingaben einlesen
    
            print eName         ;eName ausgeben
            read input.namen    ;Namen einlesen
    
            print endl
    
            print eAlter            ;eAlter ausgeben
            read input.alter        ;Alter einlesen
    
            print endl
    
            print eOrt              ;eOrt ausgeben
            read input.ort      ;Ort einlesen
    
            ;Srings in Dos-Strings umwandeln
            toDos input.namen
            toDos input.alter
            toDos input.ort
    
            ;Eingebene Daten ausgeben
            print input.namen
            print endl
            print input.alter
            print endl
            print input.ort
            print endl
    
            .exit
    
        END
    

    Edit:
    so hab mal ne saubere Formatierung nachgereicht 🙂

    Edit2:
    ne anscheinend will das doch nicht 😞



  • das liegt daran:
    toDos MACRO string
    mov bl, string.chars
    xor bh, bh
    mov string.text[bx], "$'
    toDos ENDM

    wenn du das macro beendest dann darf der name nicht vor dem ENDM stehen



  • Danke 🙂

    Genau das war das letzte mal auch der Fall 🤡

    Edit:
    allerdings ist die Ausgabe etwas "verkorkst"

    E:\TASM\BIN>edostr
    Bitte Namen eingeben sirlant
    Bitte Alter eingeben 10
    Bitte Wohnort eingeben inet
    2sirlant
    2☻10
    2♦inet

    Wie kommen diese unsinnigen Zeichen vor den Antworten zustande?



  • das liegt an deinen datenstrukturen...

    print input.namen
    
    und namen ist = buffer
    
    buffer struc
            len  db 50
            chars db 0
            text    db 50 DUP (0)
        buffer ends
    

    das heisst dein makro wird zuerst das zeichen 50 ausgeben (was übrigens der "2" entspricht) dann das zeichen 0, und dann den text...

    versuch doch:
    print input.namen.text

    oder sowas.



  • @Wasily danke, ist natürlich klar, war irgendwie der Meinung in print würde auf .text zugegriffen werden 🙄


Anmelden zum Antworten