Здравствуйте!
В целом неплохо
Но все же хочу высказать несколько замечаний по уже написанному коду
1) Вы знакомы с форматом параметра функции ah=0ah, передаваемым по адресу DS:DX ?
Задание его, как строки str1 db 255 dup ('$') немного некорректно. Вы чисто случайно задали максимальную длину строки 36 = 24h = '$'
2) Почему Вы ограничиваете вводимые числа только одноциферными? Впрочем, если это допустимо, то не вопрос...
3) Не проверяете переход выбираемой подстроки (и начало, и с учетом длины) за пределы строки. Вот это уже ошибка.
4) Чтобы вывести строку при помощи функции ah=9, необходимо в конце строки записать символ '$', тоже ошибка.
Чтобы сделать задачу полностью, осталось совсем немного:
1) Ввести количество повторов (проверить на 0)
2) Произвести копирование подстроки указанное число раз. При этом адрес куда (di) формируем только раз, в начале.
Адрес откуда (si) в начале каждого копирования подстроки. Циклим по переменой с количеством раз, отнимаем 1 и проверяем на 0
Пробуйте... Уверен, у Вас все получится! Если нет, давайте сюда свою исправленную программу, посмотрим, подправим...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен