Файл: Использование аппаратных прерываний.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 03.02.2024

Просмотров: 159

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНОБРНАУКИ РОССИИСанкт-Петербургский государственныйэлектротехнический университет«ЛЭТИ» им. В.И. Ульянова (Ленина)Кафедра вычислительной техникиотчетпо лабораторной работе№5по дисциплине «Организация ЭВМ и систем»Тема: Использование аппаратных прерываний

Студент гр. 1376




Афанасова Я.В.

Преподаватель




Ельчанинов М.Н
Санкт-Петербург2022Цель работыЦель работы – знакомство с различного вида аппаратными прерываниями и создание собственных подпрограмм обработки прерываний.Формулировка заданияПо заданию преподавателя разработать алгоритм и реализовать программу подключения собственной подпрограммы обработки прерывания и использовать её в цепочке со стандартной подпрограммой обработки прерывания от одного из следующих устройств компьютера: 1. системный таймер;2. клавиатура;3. контроллер накопителя на гибких магнитных дисках;4. таймер реального времени;5.контроллер накопителя на жёстком магнитном диске.Техническое заданиеРазработать алгоритм и реализовать программу подключения собственной подпрограммы обработки прерывания и использовать её в цепочке со стандартной подпрограммой обработки прерывания системного таймера.Результат работы программыВ результате вызова функции собственного прерывания на экран будет выведено строку “ TEST PER 2 SECONDS ” с интервалом в 2 секунды (рисунок 1).
Рисунок 1 — Результат работы программы





Структурная схема аппаратных средствИсходный код программы#include

#include

#include
unsigned long far* N = (unsigned long far*) MK_FP(0x0040, 0x006c);
void interrupt Custom(...)

{

if (*N % 36L == 0)

{

cputs(" TEST PER 2 SECONDS");

}

}
int main()

{

void interrupt(*base)(...);

base = getvect(0xc1);

setvect(0x1c, Custom);

getch();

setvect(0x1c, base);

return 0;

}