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 hatteWä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 nachgereichtEdit2:
ne anscheinend will das doch nicht
-
das liegt daran:
toDos MACRO string
mov bl, string.chars
xor bh, bh
mov string.text[bx], "$'
toDos ENDMwenn 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
2inet
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.textoder sowas.
-
@Wasily danke, ist natürlich klar, war irgendwie der Meinung in print würde auf .text zugegriffen werden