MOV AX, SEG new_int
MOV DS, AX
MOV DX, OFFSET new_int ;DS:DX - адрес обработчика
MOV АН, 25Н
MOV AL, N Вектора
INT 2lH ;установка нового вектора
POP DS
RET
setvect ENDP
END
В этом примере переменная sym используется для передачи в подпрограмму обработки прерывания байта (байтов) из Си-програи-мы. Примеры обращения к данный:
MOV AL, sym ;char sym
если передается массив:
LEA SI,sym
MOV AL, [SI] ;первый байт массива
3. Методические указания
В лабораторной работе требуется написать две ассемблерные функции, вызываемые из си-программы. Одна функция должна выполнять установку вектора прерывания, вторая - должна обрабатывать эти прерывания.
Данные, необходимые для подпрограммы обработки прерывания, передаются из Си-программы через глобальные переменные. Используйте в ассемблерной программе директиву EXTRN. Обратите внимание на правильную установку регистра DS.
Старый вектор прерывания сохранять не нужно. ДЛЯ временного хранения данных (например, координат курсора) используйте стек.
В подпрограмме обработки прерывания следует использовать функции BIOS. Необходимая информация приведена в описании лабораторной работы N 3. можно также воспользоваться справочной информацией QUICK-С.
4. Порядок выполнения работы
1. Написать головную программу на Си для вызова функции обработки строк, содержащую:
- прототип ассемблерной функции установки вектора прерывания
- вызов ассемблерной функции для перехвата вектора прерывания
- цикл для ввода текста или символов (в зависимости от варианта)
2. Написать ассемблерные функции для перехвата вектора прерывания и обработки прерываний (по вариантам).
3. Выполнить компиляцию и компоновку программы и произвести ее отладку.
Задания к лабораторной работе.
Вариант 1.
Программа перехватывает прерывание 5 - PrintScreen. В головной программе реализован цикл ввода и вывода строк. При нажатии на клавишу PrintScreen в центре экрана должна выводиться строка, введенная в головной программе последней. Подпрограмма обработки прерывания должна сохранять текущую позицию курсора на экране.
Вариант 2.
Программа перехватывает прерывание 5 - PrintScreen. В головной программе реализован цикл ввода символов с эхо-печатью. При нажатии не клавишу PrintScreen в правом верхнем углу экрана должен выводиться символ, введенный последним. •Подпрограмма обработки прерываний должна сохранять текущую позицию курсора на экране.
Вариант 3.
Программа перехватывает прерывание 5 - PrintScreen. В головной программе реализован цикл ввода-вывода строк текста. При нажатии на клавишу PrintScreen подпрограмма обработки прерываний должна очищать экран с сохранением позиции курсора и выдачей звукового сигнала.
Указание. Для очистки экрана использовать функцию установки видеорежима (INT 10H, функция 0Н, AL=3).
Вариант 4.
Программа перехватывает прерывание 1СН - таймер. В головной программе реализован цикл ввода-вывода символов с эхо-печатью. Подпрограмма обработки прерывания должна выводить в правом верхнем углу экрана последний введенный символ. Текущая позиция курсора на экране должна быть сохранена.
Вариант 5.
Программа перехватывает прерывание 1СН - таймер. • В головной программе реализован цикл ввода-вывода строк. Подпрограмма обработки прерывания•должна выводить в центре экрана на цветном фоне первый символ последней введенной строки. Текущее положение курсора на экране нужно сохранить.
Вариант 6.
Программа перехватывает прерывание 1СН - таймер. В головной программе организован цикл ввода-вывода строк. Подпрограмма обработки прерывания должна заменять первый символ в строке с курсором на знак "$". Старое положение курсора нужно сохранять.
Лабораторная работа N б
ПРОГРАММЫ, РЕЗИДЕНТНЫЕ В ПАМЯТИ (TSR).
1. Цельработы
Ознакомиться с особенностями реализации TSR-программ в операционной системе MS-DOS.
2. Краткие теоретические сведения
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.