summaryrefslogtreecommitdiff
path: root/sem2/lab5/examp.asm
blob: 4da04fa2128aa3b68033e41abeeda804a2cdfedb (plain)
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              ;Выводимый символ