
Практические работы / практическая работа № 1 по операционным системам
.docxПрактическая работа №1
Тема: Обработка и генерация прерываний.
Цель: студент должен уметь:
-
пользоваться инструментальными средствами операционной системы;
знать:
-
принципы построения, типы и функции операционных систем;
-
операционное окружение;
-
машинно-независимые свойства операционных систем.
Задание
1: В
качестве примера работы с прерываниями
рассмотрим пример простой программы,
в которой используется функция $2С для
считывания показаний системных часов.
Задание
2:
Так, прерывание с номером 18 ($12)
возвращает в регистре AX
объем оперативной памяти ПЭВМ. Пример
программы выводящей на экран сообщение
об этом объеме.
Задача 3: Процедура MSDOS инициирует прерывание с номером 33 ($21);
обращения: MSDOS(< регистры >); Здесь < регистры > - переменная типа REGISTERS, содержащая значения регистров на входе и выходе процедуры обработки прерывания.
Программное
прерывание с номером 33 ($21)
стоит особняком: как уже говорилось,
оно дает доступ к большому количеству
функций ДОС (этим прерыванием вызывается
85 функций). Рассматриваемая процедура
полностью эквивалентна вызову. процедуры
INTR
c номером прерывания 33. Программа выведет
на экран версию операционной системы:
Задача 4. С помощью следующих двух процедур программист может прочитать содержимое любого вектора или установить его новое значение.
Процедура GETINTVECT. Возвращает вектор прерывания с указанным номером; формат обращения GETINTVECT(< N >, < вектор >> Здесь < N > - выражение типа ВYТЕ, содержащее номер прерывания; < вектор > -переменная типа РOINTER, в которой возвращается адрес точки входа в процедуру обработки прерывания.
Пример:
программа выводит на экран содержимое
всех ненулевых векторов прерываний.
Задача
5.
Как следует из технического описания
операционной системы МS
DOS,
в ПЗУ BIOS
по адресу $F000:$FFFE зашит байт-идентификатор
типа компьютера. Таким образом можно
определить тип компьютера, на котором
запускается программа.
Ответы на контрольные вопросы:
-
Прерывание представляет собой сигнал процессору, вырабатываемый программой, каким-либо устройством или самим процессором.
-
Номера прерываний зарезервированы за BIOS: $00, $04 - $7, $10-$19, $1A-$1F;
В MS-DOS: $21-$62.
-
В Паскале есть две процедуры для прямого обращения к функциям MS-DOS – MSDos; BIOS - Intr.
-
Регистр – это внутреннее запоминающее устройство процессора для временного хранения обрабатываемой или управляющей информации.
Особенность регистров общего назначения заключается в том, что возможна их адресация как в целом (т.е. одним словом), так и каждой однобайтовой части (например, AL- младшая половина, а AH – старшая половина).
-
Процедуры, предназначенные для работы с регистрами процессора и прерывания MSDos и Intr модуля DOS:
Procedure MSDos (var regs: Registers);
Procedure Intr (number : Byte ; var regs: Registers);
Intr предназначена для обращения к прерыванию с указанным номером (первый параметр). Перед выполнением прерывания процедура загружает регистры процессора значением соответствующих полей записи regs. После выполнения прерывания содержимое этих регистров вновь записывается в соответствующую переменную. Процедура MSDos эквивалентна вызову процедуры Intr для прерывания $21.
-
Любой вектор можно прочитать с помощь процедуры GETINTVECT.
Формат обращения: GETINTVECT(< N >, < вектор >>) Здесь < N > - выражение типа ВYТЕ, содержащее номер прерывания; < вектор > -переменная типа РOINTER, в которой возвращается адрес точки входа в процедуру обработки прерывания.
-
МЕМ, МЕМW и МЕМL обеспечивают доступ к любому участку оперативной памяти по абсолютному адресу, РОRТ и РОRТW обеспечивают доступ к портам ввода-вывода.
Компонентами массива МЕМ являются данные типа ВYТЕ, массива МЕМW - типа WORD, массива МЕМL - типа LONGINT.