Добавил:
@wequalwo Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

АбрамоваИванов0392_Лаб2

.pdf
Скачиваний:
2
Добавлен:
08.09.2024
Размер:
409.34 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ

ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Факультет КТИ

Кафедра АПУ

Отчет по лабораторной работе

По дисциплине "Системное программирование"

Система прерываний ПЭВМ IBM PC/AT

Работу выполнили:

А. К. Абрамова, С. К. Иванов

Группа: 0392

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

Ю. А. Кораблев

Санкт-Петербург

2023

Содержание

1.

Цель работы

3

2.

Общие сведения

4

3.

Ход работы

9

 

3.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

 

3.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

 

3.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

 

3.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

 

3.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

 

3.11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

 

3.12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

 

3.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

 

3.14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

 

3.15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

 

3.16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

 

3.17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

 

3.19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

4.

Выводы

16

5.

Зачетное задание

17

2

1.Цель работы

1.Изучение принципов программирования контроллера прерываний.

2.Приобретение навыков программирования пользовательских обработчиков преры-

ваний.

3

2. Общие сведения

Для управления аппаратными прерываниями во всех типах ПЭВМ IBM PC исполь-

зуется микросхема программируемого контроллера прерываний Intel 8259. Поскольку в каждый момент времени может поступить не один запрос микросхема имеет схему приоритетов. Имеется 8 уровней приоритетов, максимальный приоритет соответству-

ет уровню 0. Добавочные 8 уровней (Уровень 8 - Уровень 15) обрабатываются второй микросхемой 8259, этот второй набор уровней имеет приоритет между уровнями 2 и 3.

Запросы на прерывания по уровням 0 - 7 соответствуют векторам прерывания от INT 8

до INT 0F. Запросы на прерывания по уровням 8 - 15 обслуживаются векторами INT 70 - INT 77. Исключением из общего правила является аппаратное немаскируемое прерыва-

ние NMI которое имеет максимальный приоритет, поскольку запрос минуя контроллер прерываний поступает непосредственно на процессор.

Микросхема 8259 имеет три однобайтовых регистра, которые управляют восемью линиями аппаратных прерываний. Регистр запроса на прерывание <IRR> устанавли-

вает соответствующий бит, когда на линии прерывания уровень сигнала изменяется от низкого к высокому. Затем микросхема автоматически проверяет, не обрабатывается ли другое прерывание. При этом она запрашивает информацию регистра обслуживания

<ISR>. Дополнительная цепь отвечает за схему приоритетов. Перед вызовом преры-

вания проверяется регистр маски прерываний <IMR>, чтобы узнать разрешено ли в данный момент прерывание данного уровня.

Если необходимые условия обработки запроса прерывания выполнены, то контрол-

лер 8259 выдает процессору запрос на обработку, процессор завершает выполнение те-

кущей команды и проверяет бит разрешения прерываний в слове состояния процессора.

Если этот бит установлен, то процессор сохраняет в стеке текущий физический адрес прерываемой программы, слово состояния процессора и выдает контроллеру разрешение на прерывание.

Получив от процессора разрешение, контроллер выдает на шину данных адрес век-

тора прерываний. Процессор использует этот адрес, чтобы определить точку входа в программу обработки прерываний. Когда программа обработки прерываний завершает-

ся, необходимо командой OSW1/EOI в контроллере 8259 сбросить бит регистра ISR с

максимальным приоритетом. В противном случае обработка прерываний для уровня с текущим приоритетом и уровней с более низким приоритетом будет блокирована. До-

ступ к внутренним регистрам контроллеров осуществляется через порты 20h, 21h для

4

главного контроллера и A0h, A1h - для подчиненного. Формат команды обращения по-

казан на рис. 2.7. На этапе начального пуска программой BIOS выполняется инициали-

зация контроллера прерывания. В процессе инициализации устанавливаются значения векторов прерываний и дисциплина обслуживания приоритетных уровней.

В лабораторной работе используется аппаратное прерывание INT 8 от микросхе-

мы таймера. Стандартный обработчик данного прерывания поддерживает системные часы операционной системы MS DOS, контролирует длительность паузы при выполне-

нии операций с гибким диском, а также вызывает программное прерывание INT 1C,

предназначенное для подключения обработчиков прерываний разработанных пользова-

телем. Вектора прерываний, используемые операционной системой, образуют таблицу векторов и располагаются в начальной области оперативной памяти, начиная с нулево-

го физического адреса. Таблица векторов занимает 1К оперативной памяти и содержит

256 векторов. На каждый вектор отводится четыре байта. Вектор прерываний имеет следующий формат в оперативной памяти:

Рис. 2.1. Формат вектора прерываний.

5

Рис. 2.2. Структурная схема системы прерываний IBM PC.

6

Рис. 2.3. Программная модель контроллера I8259А IR<7. . . 0> - запросы прерываний;

DA<7. . . 0> - шина данных;

IRR - регистр запросов прерываний;

ISR - регистр обслуживаемых прерываний; IMR - регистр маски прерываний.

Рис. 2.4. Формат регистра маски Порт 21h - для главного контроллера;

Порт A1h - для подчиненного контроллера.

7

Рис. 2.5. Формат команды управления OSW 0.

Рис. 2.6. Формат команды управления OSW 1.

Рис. 2.7. Формат слова состояния прерываний в режиме опроса.

8

3. Ход работы

3.3.

Прочитаем содержимое масок 21h (главный контроллер) и A1h (подчиненный кон-

троллер) командами i21 и iA1 соответственно. В первом случае получаем IN 21h =

B816 = 101110002, то есть, согласно рис. 1.2,

INT 8 = 0

INT 9 = 0

INT B = 0

INT C = 1

INT D = 1

INT E = 1

INT F = 0

INT 2 = 1

Для A1 имеем IN A1h = EC16 = 111011002

INT 70 = 0

INT 71 = 0

INT 72 = 1

INT 73 = 1

INT 74 = 0

INT 75 = 1

INT 76 = 1

INT 77 = 1

В обоих случаях 1 обозначает запрет прерывания.

3.4.

Установим маску на системный таймер, останавливающую часы. Для этого необходи-

мо, чтобы INT 9 был равен 1. Код новой маски 101110012 = B916. Результат выполнения

команды

CMD>> o21, B9

Показан на рис.3.1.

9

Рис. 3.1. Остановка часов.

3.6.

Наберем. начиная с адреса 100 программу

0100 CLI

0101 MOV AX, FFFF

0104 MOV CX, FFFF

0107 LOOP 0107

0109 DEC AX

010A JNZ 0104

010C MOV AL, 0A

010E OUT [20], AL

0110 IN AL, [20]

0112 MOV BL, AL

0114 MOV AL, 0B

0116 OUT [20], AL

0118 IN AL, [20]

011A STI

3.8.

В результате многократного запуска программы

CMD>> g 100 011A

получаем: IRR = 0001h (прерывание от таймера, рис. 3.2) IRR = 0003h (прерывание от таймера и клавиатуры, рис. 3.3)

10