Вызов NextChar можно сделать проще Вот кусок из моей древней (времен писания на асме) программы:
LCALL PUTSTR
db Mess,0
.....
PUTSTR: POP DPH ; адрес возврата
POP DPL
10$: CLR A
MOVC A,@A+DPTR ; очередной байт
INC DPTR
JZ 20$ ; если 0, то конец
CALL PUTBYT ; вывести
JMP 10$
20$: JMP @A+DPTR