rst #10 выводит символ в канал/поток (ну в данном случае на экран) и видимо в процедуре регистры по ходу портятся... надо просто переставить местами операторы:
print:
ld a,(de)
inc de
and a
ret z
rst #10
jr print
выглядит конечно неочень красиво такая конструкция...
а такто если уж печатать с помощью ПЗУ, то проще пользоваться готовой процедурой по адресу 8252 - в регистрах DE - адрес текста, в BC - длина строки. Длину строки може посчитать сам ассемблер:
message1 db 'пример'
message1_len equ $-message1