1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
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 ;Выводимый символ
|