Методические указания к лабораторным работам и домашним заданиям по курсу «Системное программирование» Часть 2 - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
Похожие работы
Название работы Кол-во страниц Размер
Методические указания к лабораторным работам для студентов всех специальностей... 1 232.02kb.
Методические указания к лабораторным работам Волгоград 2008 (07) 1 290.06kb.
Н., Ногин В. Н. Схемотехника аналоговых электронных устройств 1 37.45kb.
Методические указания к лабораторным работам №1,2,3,4 для студентов... 2 504.35kb.
Методические указания к лабораторным работам по дисциплине «Операционные... 1 276.28kb.
Методические указания к лабораторным работам Красноярск сфу 2011 1 88.3kb.
Методические указания к лабораторным работам по курсу «Теория информациии... 5 446.35kb.
Методические указания к лабораторным работам Троицк 2009 1 232.79kb.
Инженерия знаний методические указания к лабораторным работам 9 521.07kb.
Методические указания к контрольным работам по курсу «Техническая... 6 497.13kb.
Методические указания к лабораторным работам по дисциплинам "Прядение... 1 239.11kb.
«Практика управления финансами и налогами компании» 1 89.31kb.
Направления изучения представлений о справедливости 1 202.17kb.

Методические указания к лабораторным работам и домашним заданиям по курсу «Системное - страница №1/6


Московский государственный технический университет им. Н.Э.Баумана


Г. С. Иванова

ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ ПЭВМ
Методические указания к лабораторным работам и домашним заданиям

по курсу «Системное программирование»


Часть 2


Обработчики прерываний. Резиденты.

МОСКВА 1995


Аннотация

Настоящие методические указания предназначены для студентов, изучающих курсы «Системное программирование» и «Алгоритмические языки и программирование», и содержат сведения, необходимые для написания резидентных обработчиков прерываний и программ, содержащих модули, написанных на Турбо Паскале, С++ и ассемблере.

В первой части определены базовые понятия и основные принципы функционирования системы прерываний ПЭВМ, приведены структуры инсталлирующих программ и обработчиков для различных случаев. Рассмотрены наиболее важные проблемы, возникающие при написании обработчиков прерываний: предотвращение повторной загрузки, передача параметров резидентам, выгрузка из памяти и проблемы, связанные с использованием функций DOS. Все рассмотренные случаи иллюстрируются примерами. Дополнительно описаны средства Турбо Паскаля и С++, позволяющие писать обработчики прерываний на этих языках, и приведены соответствующие примеры.

Все приведенные примеры отлажены на ЭВМ i486 с использованием Turbo Pascal 7.0 и Borland C++ 3.1.


1.Введение.


Для IBM совместимых ЭВМ понятие прерывания является одним из базовых. Через систему прерываний в них реализованы доступ к внешним устройствам, взаимодействие со схемами контроля ЭВМ, управление процессом выполнения программы со стороны операционной системы, выполнение сервисных функций DOS и многое другое. Операционная система MS DOS позволяет пользователю разрабатывать собственные программы, которые могут вызываться через прерывания, дополняя и даже заменяя стандартные программы MS DOS.

2.Основные сведения о системе прерываний IBM совместимых ЭВМ.


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

Прерывания в IBM совместимых ЭВМ (см. рисунок 1) могут инициироваться как специальными сигналами микропроцессора (внутренние), так и внешними сигналами, например, от внешних устройств (внешние).



Рисунок 1. Система обработки прерываний.

Внешние сигналы на прерывание поступают на специальные микросхемы - контроллеры прерываний 8259А, имеющие 8 уровней приоритета. Начиная с РС АТ микроЭВМ включает два контроллера, что позволяет увеличить количество уровней приоритета до 16. Уровни приоритета определяются аппаратно в зависимости от места подключения внешнего устройства.

Как правило, самый высокий приоритет имеет системный таймер, затем следует клавиатура, что обеспечивает оперативное управление микроЭВМ, далее идут прочие внешние устройства. Завершают список обычно накопители на гибких магнитных дисках и устройство печати.

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

Выполнение всех прерываний, кроме прерывания 2, можно запретить установив в 0 флаг IF флажкового регистра. Прерывание 2 в связи с этим носит название немаскируемого и используется для того, чтобы выполнять обработку сигналов, наличие которых нельзя игнорировать, например, сигнала о недопустимом изменении напряжения в сети питания.

Адреса программ-обработчиков прерываний хранятся в специальной области основной памяти, которая обычно располагается с 0-го адреса и занимает 1кБ, то есть может содержать адреса 256 программ (каждый адрес занимает 4 байта). Местоположение адреса нужного обработчика в области векторов прерываний определяется по типу (номеру) прерывания:

A=4*N, где N - номер прерывания.

При наличии сигнала прерывания выполняется следующая последовательность действий:

1) проверяется установка флажка IF (для немаскируемых прерываний этот пункт игнорируется): 1- прерывания разрешены, 0 - прерывания запрещены;

2) если прерывание разрешено, то после завершения выполнения текущей команды слово состояния программы(PSW), хранящееся во флажковом регистре микропроцессора, значение сегментного регистра кодов(CS) и значение счетчика команд(IP) заносятся в стек;

3) из области векторов прерываний в регистры CS и IP помещается адрес программы обработки прерываний.

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

По завершению этой программы значения PSW, CS и IP восстанавливаются из стека, и выполнение прерванной программы возобновляется.


3.Классификация прерываний.


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

I. Прерывания микропроцессора(0Н-6Н):

0 - прерывание от схем контроля микропроцессора - “Деление на 0”;

1 - прерывание специального режима работы микропроцессора, устанавливаемого, если флажок TF=1 - “Пошаговое выполнение”;

2 - немаскируемое прерывание;

3 - прерывание микропроцессора, осуществляемого при обнаружении адреса останова - “Точка останова”;

4 - инициируется по команде INTO, используемой после выполнения арифметической операции - “Переполнение”;

5 - печать содержимого экрана - инициируется нажатием клавиши Print Screen.

II. Прерывания микроконтроллера прерываний(7H-0FH, 70Н-77Н):

8 - прерывание от таймера;

9 - прерывание от клавиатуры;

0BH - COM2;

0CH - COM1;

0EH - прерывание от НГМД (дискеты);

0FH - прерывание от печатающего устройства;

70H - прерывание от часов реального времени;

76H - прерывание от НЖМД (жесткий диск);

III. Процедуры BIOS (10Н-1AH, 33H, 41H):

10Н - управление дисплеем;

11Н - определение конфигурации ПЭВМ;

12Н - определение объема памяти ПЭВМ;

13Н - управление дисковой памятью;

14Н - управление асинхронной связью;

16Н - управление клавиатурой;

17Н - управление печатающим устройством;

1AH - управление часами реального времени.

IV. Процедуры пользователя (1BH и 1CH):

1BH - возможность подключения при обнаружении Ctrl-Break;

1СН - возможность подключения к обработке кванта таймера.

V. Указатели системных таблиц (1DH-1FH, 41H):

1DH - таблица параметров видео;

1EH - таблица параметров дискеты;

1FH - таблица символов для графического режима;

41H - таблица параметров жесткого диска.

VI. Прерывания DOS (20H- 3FH):

20H - нормальное завершение программы и возврат управления DOS;

21H - вызов диспетчера функций DOS;

22H - адрес пользовательской программы обработки нормального завершения программы;

23H - адрес пользовательской программы обработки завершения по Ctrl-Break;

24H - адрес пользовательской программы обработки завершения по ошибке;

25H - абсолютное чтение секторов с диска;

26H - абсолютная запись секторов на диск;

27H - завершение программы с сохранением в памяти.

VII. Прерывания, зарезервированные для пользователей (60H-66H, 0F0H-0FEH).

Для определения конкретной конфигурации прерываний можно использовать, например, программу SYSINFO пакета Norton Utilities.



следующая страница >>



Когда не обладаешь мудростью, остается любить мудрость, т.е. быть философом. Николай Бердяев
ещё >>