Я немного заржавел в этом - но, хотя вы программируете в «крошечной» модели, вы не гарантируете, что DS (регистр сегмента данных) указывает на сегмент памяти, где на самом деле находятся ваши данные.
Если это так, то принудительное выполнение DS = CS перед входом в ваш цикл должно заставить код выше работать - просто выполните:
push CS
pop DS
перед строкой whileloop:
Я не помню вызова INT 10h, чтобы проверить, в порядке ли они, я предполагаю, что вы установили там правильные параметры).Кроме этого у вас могут быть проблемы с определенным синтаксисом MASM, и я не могу с этим помочь.