Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab1-7l.doc
Скачиваний:
2
Добавлен:
13.11.2019
Размер:
188.43 Кб
Скачать

Теоретическая справка

Прерывания бывают программные и аппаратные. Аппаратные происходят независимо при работе тех или иных устройств, программные - при работе программы. Эффективное управление программными прерываниями позволяет программисту добиться гибкости и эффективности своей программы.

Каждое прерывание имеет свой номер от 0 до 255, по которому инициализируется в таблице векторов прерываний. Эта таблица содержит адрес соответствующей процедуры обработки прерывания. Но в состав MS DOS входит много процедур, для которых не хватает допустимых номеров прерываний. В связи с этим процедуры объединяются в группы и вызываются по прерыванию с одним и тем же номером. Процедуры одной группы принято называть функциями соответствующего прерывания. Чтобы различать их, перед вызовом соответствующего прерывания в регистр AH записывают номер нужной функции:

mov AH,<номер функции>

int <номер прерывания>

Отсюда видно, что команда INT предназначена для вызова прерывания с соответствующим номером.

Некоторые функции требуют передачи дополнительных параметров через регистры, а некоторые - возвращают значения через регистры.

Функции прерывания 33h

00h - Проверка наличия в системе драйвера "мыши",

результат -> AX, если AX = 0 - драйвер не установлен.

01h - Вывод курсора "мыши" на экран,

результат: если установлен драйвер "мыши", на экране появляется курсор.

02h - Удаление курсора "мыши" с экрана,

результат: удаляет с экрана курсор только в том случае, если функция 01h вызывалась до этого 1 раз

03h - Определение положения курсора и состояния кнопок

результат:

CX - номер колонки,

DX - номер строки,

BX - состояние кнопок:

7

6

5

4

3

2

1

0

бит0 = 1 - левая кнопка нажата,

бит1 = 1 - правая кнопка нажата,

бит2 = 1 - средняя кнопка нажата.

04h - Установка курсора в определенное положение на экране

на входе:

CX - номер колонки,

DX - номер строки.

07h - Установка ограничения перемещение "мыши" по горизонтали

на входе:

CX - левая граница,

DX - правая граница.

08h - Установка ограничения перемещение "мыши" по вертикали

на входе:

CX - верхняя граница,

DX - нижняя граница.

0Bh - Определение величины перемещения со времени последнего вызова

результат:

CX - перемещение по горизонтали,

DX - перемещение по вертикали.

Лабораторная работа №4

ПРОГРАММНАЯ ОБРАБОТКА КЛАВИАТУРЫ

ЦЕЛЬ РАБОТЫ

Программная обработка состояния клавиатуры. Особое внимание следует уделить специальным клавишам, таким как Left Ctrl, Right Ctrl, Left Alt, Right Alt, Left Shift, Right Shift, Insert.

ЗАДАНИЕ НА РАБОТУ

  1. Написать демонстрационную программу работы с индикаторами клавиш NumLock, CapsLock, ScrollLock ("мигание" индикаторов)

  2. Написать программу, определяющую нажатия Left Shift, Right Shift, Left Сtrl, Right Ctrl, Left Alt, Right Alt, обеих клавиш Shift.

РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ РАБОТЫ

При написании программы на языке Pascal можно использовать функцию PTR. При использовании языка С - функции PEEK и POKE. Целесообразно будет и использование простых вставок на языке Ассемблера.

Пример обращения к ячейке памяти на языке Ассемблера

...

push DS ;сохраняем DS в стеке

lds SI,op1 ;загружаем адрес op1 в DS:SI

mov AX,00h ;обнуляем ES (через AX)

mov ES,AX ;ES <- 00h (сегмент)

mov DI,417h ;DI <- 417h (смещение)

mov AX,ES:[DI] ;считываем содержимое ячейки в AX

mov DS:[SI],AX ;записываем считанное по адресу переменной op1

pop DS ;восстанавливаем DS из стека

...

ПРИЛОЖЕНИЕ 1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]