2847

Прерывания в ОС MS-DOS

Контрольная

Информатика, кибернетика и программирование

Прерывания в ОС MS-DOS Драйвер – это программа, являющаяся посредником между устройством и программой пользователя и предоставляющая набор функций для работы с устройством. В MS-DOS существуют драйверы символьных устройств (за одну операцию обм...

Русский

2012-10-20

36 KB

13 чел.

Прерывания в ОС MS-DOS

Драйвер – это программа, являющаяся посредником между устройством и программой пользователя и предоставляющая набор функций для работы с устройством. В MS-DOS существуют драйверы символьных устройств (за одну операцию обмена между устройством и драйвером передаётся один символ) и блочных устройств (за одну операцию обмена между устройством и драйвером передаётся блок символов, размер блока зависит от устройства).

Порт – это регистр (ячейка памяти) в адресном пространстве компьютера, связанный с каким-либо устройством компьютера. Обращение к порту приводит к передаче информации между ЦП и устройством, которому принадлежит порт.

Контроллер – это специальная микросхема, обеспечивающая работу определённого устройства и его взаимодействие с ЦП.

Прерывание – это приостановка выполнения текущей программы, позволяющая выполнить другую программы (программу обработки прерывания). Прерывания бывают трёх видов:

  •  внутренние – возникают в процессе работы ЦП (деление на 0, переполнение регистра);
  •  аппаратные – инициируются аппаратурой ПК (нажатие клавиш клавиатуры, перемещение мыши);
  •  программные – вызываются пользовательскими приложениями или операционной системой (печать на экран, ввод с клавиатуры).

Каждое прерывание представляется 4-байтовым адресом начала (первой команды) программы обработки прерывания, которая может быть драйвером или входить в состав ОС или BIOS. Этот адрес называется вектором прерывания. В ОС MS-DOS определены 256 различных прерываний, имеющих номера от 00h до FFh. Положение векторов прерываний в ОЗУ строго фиксировано на протяжении всего времени работы ПК. В ОС MS-DOS вектора прерываний располагаются в диапазоне адресов 00000h-003FFh и занимают объём памяти 1K, каждый адрес имеет размер 4 байта (по два байта на адреса сегмента и смещения) для адресации к любому участку 1M памяти ОС. Адрес расположения начала вектора прерывания можно вычислить, умножив номер этого вектора на 4 (так как каждый вектор имеет размер 4 байта).

Каждое прерывание связано с каким-либо устройством или системной операцией. Так как с каждым устройством или системной операцией можно выполнять различные действия (определить положение курсора мыши, состояние кнопок мыши), то каждое прерывание имеет несколько режимов работы, называемых функциями прерывания.

В дальнейшем будем рассматривать только аппаратные и программные прерывания.

Действия, выполняемые системой при обработке прерывания.

  1.  Прерывание инициируется источником прерывания. Если это программное прерывание, то выполняется команда процессора int с номером соответствующего прерывания. Если это аппаратное прерывание, то сигнал от устройства поступает на вход контроллера прерываний, который посылает по соответствующей линии на вход процессора сигнал запроса прерывания.
  2.  Процессор приступает к обработке прерывания. Он сохраняет в стеке выполняемой программы содержимое регистра флагов, регистров CS и IP.
  3.  Процессор читает номер прерывания, определяющий вектор прерывания (для программного прерывания номер задается в команде, для аппаратного прерывания он читается процессором из контроллера прерываний), то есть новые значения регистров CS и IP. Таким образом, выполняется переход по адресу программы обработки прерывания.
  4.  Выполняется программа обработки прерывания, в конце которой должна стоять команда возврата.
  5.  При выполнении команды возврата из стека прерванной программы извлекается содержимое регистра флагов, регистров CS и IP, продолжается выполнение прерванной программы.

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

Регистры процессора Intel8086.

Регистры данных: AX(AH и AL), BX(BH и BL), CX(CH и CL), DX(DH и DL). Это двухбайтовые регистры, однако возможно обращение отдельно к старшему или младшему байту регистра.

Регистры указатели: SI, DI, BP, SP, IP.

Сегментные регистры:  CS, DS, ES, SS.

Регистр флагов, содержит набор специальных битовых переменных (флагов).

Пара регистров CS (сегмент) и IP (смещение) определяют адрес выполняемой команды.

Через регистры передаются данные от инициатора прерывания к программе обработки при вызове прерываний и от программы обработки к инициатору при возврате из программы обработки. Регистры на входе – регистры до выполнения прерывания, регистры на выходе – регистры после выполнения прерывания. Назначение регистров и характер передаваемых через них данных строго фиксированы и описываются в соответствующей документации по ОС MS-DOS.

Средства Borland C++ 3.1 для работы с регистрами процессора Intel8086.

В файле dos.h для работы с регистрами процессора объявлены агрегативные типы данных.

struct  SREGS   {

   unsigned int    es;

   unsigned int    cs;

   unsigned int    ss;

   unsigned int    ds;

};

struct WORDREGS {

   unsigned int    ax, bx, cx, dx, si, di, cflag, flags;

};

struct BYTEREGS {

   unsigned char   al, ah, bl, bh, cl, ch, dl, dh;

};

union   REGS    {

   struct  WORDREGS x;

   struct  BYTEREGS h;

};

Структура SREGS предназначена для работы с сегментными регистрами, структура WORDREGS – для работы с двухбайтовыми регистрами, структура BYTEREGS – для работы с однобайтовыми регистрами, объединение REGS – для возможности доступа к регистрам данных одновременно как двухбайтовым и однобайтовым регистрам.

int int86(int intno, REGS * in, REGS * out);

int int86x(int intno, REGS * in, REGS * out, SREGS * seg);

Функции int86() и int86x() выполняют вызов программного прерывания, номер которого задается параметром intno. Параметры in и out задают регистры на входе и выходе прерывания соответственно. Для функции int86x() параметр seg задает значения сегментных регистров. Перед выполнением прерывания функции копируют значения переменных параметра in в регистры процессора (функция int86x() перед вызовом прерывания также копирует в сегментные регистры DS и ES соответствующие значения из полей cтруктуры seg), после выполнения – значения регистров копируются в параметр out. Функции возвращают значение регистра AX после выполнения прерывания.

unsigned FP_SEG(void far *p);

unsigned FP_OFF(void far *p);

Макросы FP_SEG и FP_OFF выполняют для указателя p выделение сегментной части или смещения соответственно, которое и является результатом макрорасширения.

void far * MK_FP(unsigned seg, unsigned off);

Макрос MK_FP позволяет получить значение указателя из параметров seg и off, задающих сегментную часть и смещение соответственно.


 

А также другие работы, которые могут Вас заинтересовать

25774. Анализ состояния расчетов с дебиторами и кредиторами 33 KB
  Несоблюдение договорной и расчетной дисциплины несвоевременное предъявление претензий по возникающим долгам приводят к значительному росту задолженности как дебиторской так и кредиторской к нестабильности финансового состояния. Анализ дебиторской задолженности и оценка ее реальной стоимости заключается в анализе задолженности по срокам ее возникновения в выявлении безнадежной задолженности и формировании на эту сумму резерва по сомнительным долгам. Анализ состояния дебиторской задолженности начинают с общей оценки динамики ее объема в...
25775. Звук: основные характеристики, свойства, распространение в среде 15.97 KB
  Сила звука зависит от величины амплитуды колебаний. чем шире размах колебаний тем звук сильнее и наоборот чем меньше размах тем меньше сила звука Высота звука зависит от частоты колебаний звучащего тела и измеряется числом полных колебаний в секунду. Тембр звука. Тембром или окраской звука называют то его свойство благодаря которому можно отличить друг от друга одинаковые по интенсивности и по высоте звуки издаваемые разными источниками.
25776. Звукопроводящий отдел слухового анализатора. Понятие о воздушном и костном звукопроведении 14.35 KB
  Звукопроведение может осуществляться 2 путями: воздушный путь; костный путь. В норме основной путь звукопроведения воздушный. Его поступление во внутреннее ухо осуществляется через ушную раковину и наружный слуховой проход барабанную полость и систему слуховых косточек воздушный путь звукопроведения где происходит усиление энергии звуковой волны. Звук также может проходить непосредственно через костные образования височной кости к кортиевому органу костный путь звукопроведения.
25777. Звуковосприятие теории слуха: резонансная, гидродинамическая, микрофонного эффекта улитки, цитохимическая 14.93 KB
  Звуковосприятие теории слуха: резонансная гидродинамическая микрофонного эффекта улитки цитохимическая. На верхнем завитке улитки натянуты длинные струны которые резонируют на низкие звуки. Гидродинамическая теория автор Бекеши её суть: При звуковосприятии на основной мембране улитки происходят сложные гидродинамические процессы. Микрофонный эффект улитки автор Уивер Брэй её суть: Улитка работает по принципу микрофона т.
25778. Методы исследования слуховой функции 12.72 KB
  Методы исследования слуховой функции Основной задачей исследования слуха является определение остроты слуха т. Методы исследования слуха: 1. субъективные предполагают активное участие ребенка: исследование слуха камертонами. Результат исследования слуха аудиометром представляется обычно в виде аудиограммы На специальную аудиометрическую сетку на которой по горизонтали откладываются звуковые частоты Гц по вертикали уровни громкости соответствующих звуков в децибелах наносятся в виде точек показания аудиометра для каждого уха...
25779. Слуховое утомление и слуховая адаптация 14.58 KB
  Минимальная сила звука называется порогом слухового ощущения. Сила звука при которой нарастание громкости звука прекращается и появляется ощущение давления или даже боли в ухе называется болевым порогом.
25780. Причины стойких нарушений слуха: врождённые и приобретенные 14.96 KB
  Причины стойких нарушений слуха: врождённые и приобретенные. Во всех случаях к значительному и стойкому понижению слуха ведет лишь полное заращение наружного слухового прохода. При атрезии наружного слухового прохода понижение слуха носит характер поражения звукопроводящего аппарата т. страдает главным образом восприятие низких звуков; восприятие высоких тонов сохраняется костная проводимость остается нормальной или даже несколько улучшается Приобретенные нарушения слуха возникают от разнообразных причин.
25781. Причины звукопроводящей (кондуктивной) тугоухости 16.07 KB
  Причины звукопроводящей кондуктивной тугоухости. При кондуктивной тугоухости проведение звуковой волны блокируется ещё до того как она достигнет сенсорноэпителиальных волосковых клеток кортиева органа связанных с окончаниями слухового нерва. У одного и того же пациента возможно сочетание кондуктивной басовой и нейросенсорной дискантовой тугоухости тугоухость смешанного характера. Причины кондуктивной тугоухости Наружное ухо Серная пробка Наружный отит воспаление ушной раковины и наружного слухового прохода Атрезия ...
25782. Причины звуковоспринимающей (нейросенсорной) тугоухости 13.92 KB
  Нейросенсорная тугоухость это потеря слуха вызванная поражением структур внутреннего уха преддверноулиткового нерва VIII или центральных отделов слухового анализатора в стволе и слуховой коре головного мозга. Нейросенсорная тугоухость обусловлена дефектами сенсорноэпителиальных волосковых клеток спирального кортиева органа улитки внутреннего уха. Нейросенсорная потеря слуха может возникать как результат аномалии VIII черепного слухового нерва.