summaryrefslogtreecommitdiff
path: root/sem2/lab5/examp.asm
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2020-10-22 21:03:24 +0400
committerAndrew <saintruler@gmail.com>2020-10-22 21:03:24 +0400
commit143f34d941f32e0808fc9344d4c4126ff530d64a (patch)
treec79fcf309ad00e52100c0da544d96d3cc6ab6617 /sem2/lab5/examp.asm
Добавил решения второго семестра
Diffstat (limited to 'sem2/lab5/examp.asm')
-rw-r--r--sem2/lab5/examp.asm54
1 files changed, 54 insertions, 0 deletions
diff --git a/sem2/lab5/examp.asm b/sem2/lab5/examp.asm
new file mode 100644
index 0000000..4da04fa
--- /dev/null
+++ b/sem2/lab5/examp.asm
@@ -0,0 +1,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 ;Выводимый символ \ No newline at end of file