Moin!
Wenn du nicht zur Laufzeit dir Speicher holst, dann musst du im Code für genug Speicherplatz sorgen (
db dup als Stichwort). Ansonsten ist die Frage mit dem Ende des Strings eher die Frage danach, mit welcher Funktion du diesen ausgibst. Die BIOS Routinen wollen immer ein \0 am Ende sehen (also ein Nullbyte) und die DOS String Ausgabe will ein $ am Ende sehen...
Dann fällt mir noch auf, was du das Richtungsflag überhaupt nicht setzt....
MfG
Muetze1