N
Hi.
Die Funktion 09h erwartet in ds:dx die Addresse auf einen String. Du uebergibst der Funktion zum Schluss jedoch einfach den Wert 09xxh (Wobei xx der ASCII-code des Zeichens ist, dass du beim ersten Aufruf von int 21h, 01h eingelesen hast).
Logisch, dass da nur Mist bei rauskommt, wenn du diesen Zeiger einfach irgendwo hin verbiegst...
Um hier etwas vernuenftiges herauszubekommen, solltest du zunaechst erstmal deinen Code um eine Pruefung erweitern, die sicherstellt, dass tatsaechlich nur Ziffern von 0-9 (oder eben in den Grenzen des Zahlensystems, dass du verwenden willst) eingegeben wurden.
Danach waere es sinnvoll, die eingegebenen ASCII-Werte in einfache Zahlen umzurechnen (merke: "0" hat den Code 30h, folglich musst du 30h von den eingelesenen Werten abziehen).
Und zuletzt musst du nach der Addition die Zahl wieder in einen String umrechnen (Wie das geht wurde hier wirklich schon mehr als einmal gefragt; zB. hier). Den Zeiger auf diesen String uebergibst du dann int 21h,09h und schon hast du das gewuenschte Resultat auf dem Schirm.