new_65h proc ;Процедура наложения на экран цветного окна для динамической ;очистки экрана по ходу выполнения программы mov АН, 06h ;Функция задания окна mov AL,0 ;Режим создания окна mov BH,1Bh ;Атрибут всех символов в окне: светло-бирюзовые символы, синий фон mov СХ,0 ;Координаты верхнего левого угла 0,0 mov DH,24 ;Нижняя Х-координата mov DL,79 ;Правая Х-координата int 10h ;Прерывание BIOS iret new_65h endp main proc mov AX,data mov DS,AX ;Заполним вектор прерывания пользователя адресом нашего обработчика mov АН,25h ;Функция заполнения вектора прерывания mov AL,65h ;Номер вектора mov DX,offset new_65h ;Смещение прикладного обработчика push DS ;Сохранны DS push CS ;Настроим DS на сегмент команд (в pop DS ;котором находится наш обработчик) int 21h ;Вызовем DOS pop DS ;Восстановим DS ;Будем в цикле выводить ил экран строки с предварительной очисткой экрана gogo: int 65h ;Вызов прикладного обработчика (очистка ;экрана перед выводом текста) ;Позиционируем курсор mov АН,02h ;Функция позиционирования mov BH,0 ;Видеостраница mov DH,line ;Строка mov DL,coloumn ;Столбец int 10h ;Прерывание BIOS ;Выведем на экран строку символов mov АН,0Ah ;функция вывода символа без атрибута mov AL,sym ;Символ mov BH,0 ;Видеостраница mov СХ,60 ;Коэффициент повторения int 10h ;Прерывание BIOS ;Изменим символ и позицию и зациклим программу с возможностью ;завершения по нажатию клавиш /C inc sym ;Следующий символ по таблице ASCII inc line ;Следующая строка экрана mov АН,08h ;Функция ввода баз эха, чувствует /C int 21h jmp gogo ;Бесконечный цикл main endp ;Поля данных line db 2 ;Строка coloumn db 10 ;Столбец sym db 0lh ;Выводимый символ