![](/user_photo/2706_HbeT2.jpg)
- •Рецензент: препод. Чеканова н.Н.. Введение
- •Содержание
- •Практическая работа №1 Тема: Интерфейс пользователя
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Вариант 11.
- •Вариант 12.
- •Практическая работа №2 Тема: Обработка и генерация прерываний.
- •Практическая работа №3 (1 часть, 2 часа) Тема: Планирование процессов в различных ос
- •Литература
- •Практическая работа №3 (2 часть, 2часа) Тема: Планирование процессов в различных ос
- •Теоретическая часть
- •Практическая часть
- •Практическая работа №4 Тема: Конфигурация msdos. Создание многовариантной загрузочной дискеты
- •1. Драйвер Himem.Sys
- •2. Драйвер Emm386.Exe
- •3. Драйвер dysplay.Sys
- •4. Драйвер привода cd-rom
- •Практическая работа №5 Тема Изучение архитектуры ос Windows 95/98
- •Назначение флажков:
- •Практическая работа №6 Тема: Настройка Windows xp
- •Практическая работа №7 (1 часть, 4 часа) Тема: Изучение системы команд ос Linux
- •Практическая часть
- •Практическая работа №7 (2 часть, 4 часа) Тема: Конфигурирование ос Linux
- •Практическая работа №8 Тема: Работа с файлами в различных ос
- •Теоретическая часть
- •Практическая часть
- •Литература
- •Практическая работа №9 Тема: Планирование заданий в различных ос.
- •Теоретическая часть
- •Практическая часть
- •Практическая работа №10 Тема: Распределение ресурсов в различных ос
- •Практическая работа №11 Тема: Установка и настройка ос Windows
- •Практическая работа №12 Тема: установка и настройка ос linux, обновление (на примере manrake на жесткий диск.)
- •Приложение 1 Форма отчета по практической работе
- •Ход работы.
- •Литература
Практическая работа №2 Тема: Обработка и генерация прерываний.
Цель: приобретение практических навыков программирования прерываний с использованием процедур для прямого обращения к функциям MS-DOS и BIOS.
Теоретическая часть
Операционная система управляет программами, периферийными устройствами, словом, всем. Важную роль здесь играют прерывания. Прерывание представляет собой сигнал процессору, вырабатываемый программой, каким-либо устройством или самим процессором. Этот сигнал приостанавливает выполнение программы и запускает соответствующую функцию операционной системы для выполнения необходимых системных действий. Необходимость прерываний вызвана двумя причинами – специальными запросами на выполнение системных действий, например по вводу и выводу данных, а также возникновением ошибок при выполнении программ. Прерываниям присваиваются номера, например $10. Прерывания от $1F включительно зарезервированы для BIOS, а начиная с $20 до $62 - для операций MS-DOS. Прерывания хранятся в специальной таблице прерываний. В таблице 1 приведен перечень некоторых прерываний.
Таблица 1.
Прерывание |
Владелец |
Назначение |
$00 |
BIOS |
Прерывание из-за ошибки деления на нуль |
$04 |
BIOS |
Прерывания из-за переполнения при умножении |
$05 |
BIOS |
Функция печати копии экрана |
$06 |
BIOS |
Исключительная ситуация «неопределенный код операции» |
$07 |
BIOS |
Исключительная ситуация «код операции ESC» |
$10 |
BIOS |
Обслуживание видеокарты |
$11 |
BIOS |
Список установленного оборудования |
$12 |
BIOS |
Размер памяти |
$13 |
BIOS |
Обслуживание дискового ввода- вывода |
$14 |
BIOS |
Обслуживание последовательного ввода вывода |
$16 |
BIOS |
Обслуживание ввода- вывода с клавиатуры |
$17 |
BIOS |
Обслуживание принтера |
$19 |
BIOS |
Программа начальной загрузки системы |
$1A |
BIOS |
Обслуживание системного таймера и часов |
$1B |
BIOS |
Клавиши Control-Break |
$1C |
BIOS |
Часы таймера пользователя |
$21 |
MS-DOS |
Вызов функции MS-DOS |
$22 |
MS-DOS |
Адрес завершения программы |
$23 |
MS-DOS |
Адрес выхода Control-C |
$24 |
MS-DOS |
Адрес аварийного завершения из-за фатальной ошибки |
$25 |
MS-DOS |
Функция чтения по абсолютному адресу на диске |
$26 |
MS-DOS |
Функция записи по абсолютному адресу на диске |
$27 |
MS-DOS |
Функция «завершить и оставить резидентной» |
В Паскале есть две процедуры для прямого обращения к функциям MS-DOS и BIOS -MSDos и Intr. Прерывания зависят от состояния регистров центрального процессора и заносят в эти регистры результат своей работы. Регистр – это внутреннее запоминающее устройство процессора для временного хранения обрабатываемой или управляющей информации. В модуле System имеется специальный тип Registers, который описывается следующим образом:
type
Registers = record
сase Integer of
0: (AX, BX, CX, BP, SI, DI, DS, ES, Flags: Word);
1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte);
end;
тип Registers представляет собой запись, состоящую только из вариативной части. В табл. Дан список регистров процессора 80х86.
Таблица 2.
Регистры общего назначения |
|
Регистры данных (16-битные = 8 + 8 бит) |
|
Регистр |
Назначение |
AX = AH AL |
Сумматор |
BX = BH BL |
Базовый (индексный) регистр |
CX = CH CL |
Счетный регистр |
DX = DH DL |
Регистр данных |
Индексные регистры и регистровые указатели (16 бит) |
|
Регистр |
Назначение |
SP |
Указатель стека |
BP |
Указатель базы регистра |
SI |
Регистр- индекс источника |
DI |
Регистр- индекс назначения |
Сегментные регистры (16 бит) |
|
Регистр |
Назначение |
CS |
Сегмент кода |
DS |
Сегмент данных |
SS |
Сегмент стека |
ES |
Дополнительный сегмент |
Регистр командного указателя (16 бит) |
|
IP |
|
Флаговый регистр |
Сегментом называется область памяти размером 64 Кбайт, которая начинается по любому адресу, кратному 16. В области памяти, выделяемой программе, имеется три основных сегмента:
Сегмент кода содержит машинные команды, которые будут выполняться. Первая выполняемая команда находится в начале кодового сегмента и операционная система для выполнения программы передает управление по адресу данного сегмента.
Сегмент данных содержит данные и рабочие области, необходимые программе.
Сегмент стека содержит адреса для возврата в операционную систему и для возврата из программ в главную программу.
Особенность регистров общего назначения заключается в том, что возможна их адресация как в целом (т.е. одним словом), так и каждой однобайтовой части (например, AL- младшая половина, а AH – старшая половина). Регистр AX является сумматором и применяется для всех операций ввода – вывода, некоторых арифметических и строковых операций. Регистр BX может использоваться для расширенной адресации и вычислений. Регистр CX необходим для управления числом повторений циклов и операций сдвига. Регистр DX применяется для некоторых операций ввода- вывода и тех арифметических операций над большими числами, которые используют два регистра DX:AX. Регистровые указатели SP и BP обеспечивают системе доступ к данным в сегменте стека, реже они используются для вычислений. Индексные регистры SI (индекс источника) и DI (индекс назначений) могут применяться для расширенной адресации и операций сложения и вычитания. Регистр командного указателя содержит смещение указателя на команду, которая должна быть выполнена.
Флагом называют признак, установленный программно с целью указания особенностей выполнения стандартных операций,- это одноразрядный индикатор, отражающий выполнение или невыполнение определенного условия.
Процедуры, предназначенные для работы с регистрами процессора и прерывания MSDos и Intr модуля DOS:
Procedure MSDos (var regs: Registers);
Procedure Intr (number : Byte ; var regs: Registers);
Процедура Intr предназначена для обращения к прерыванию с указанным номером (первый параметр). Перед выполнением прерывания процедура загружает регистры процессора значением соответствующих полей записи regs. После выполнения прерывания содержимое этих регистров вновь записывается в соответствующую переменную. Процедура MSDos эквивалентна вызову процедуры Intr для прерывания $21.
Для прерывания $21 имеется несколько сотен функций MS-DOS , предназначенных для работы с файлами и дисками. Процедуры Паскаля, использующие все эти низкоуровневые операции, дают гораздо более удобные и безопасные способы их выполнения.
К работе с прерываниями следует прибегать, если в этом действительно есть необходимость. Это потенциально опасно, так как функции напрямую обращаются к операционной системе и выполняют системные операции. Неаккуратное обращение с ними может привести к потере части информации на дисках, и другим неприятным последствиям.
Практическая часть
Ввести программу.
Запустить на выполнение.
Пояснить работу процедур модуля DOS, предназначенных для выполнения системных операций (прерываний), обращения к памяти и портам ввода- вывода.
Ответить на контрольные вопросы
Оформить отчет
Задача 1 В качестве примера работы с прерываниями рассмотрим пример простой программы, в которой используется функция $2С для считывания показаний системных часов.
Program gettime;
Uses dos, crt;
Var
Regs: registers;
Begin
ClrScr;
regs.AH := $2C;
intr ($21, regs);
write (‘Системные часы показывают ’);
with regs do
begin
write (CH, ‘ час. ’ );
write (CL, ‘ мин. ’ );
write (DH, ‘. ’);
If DL < 10 then
Write(0);
Writeln(DL, ‘ сек. ’);
End;
Writeln(‘нажмите <Enter>’) ;
Readln;
End.
Задача 2 Так, прерывание с номером 18 ($12) возвращает в регистре AX объем оперативной памяти ПЭВМ. Пример программы выводящей на экран сообщение об этом объеме:
Program IntrDem;
Uses DOS;
Var
r: registers;
Begin
Intr($12, r);
writeln('Объем памяти = ', r.АХ, ' Кбайт')
END.
Задача 3 Процедура MSDOS инициирует прерывание с номером 33 ($21);
обращения: MSDOS(< регистры >);
Здесь < регистры > - переменная типа REGISTERS, содержащая значения регистров на входе и выходе процедуры обработки прерывания.
Программное прерывание с номером 33 ($21) стоит особняком: как уже говорилось, оно дает доступ к большому количеству функций ДОС (этим прерыванием вызывается 85 функций). Рассматриваемая процедура полностью эквивалентна вызову процедуры INTR c номером прерывания 33. Программа примера выведет на экран версию операционной системы:
Program MsDosDemo;
Uses DOS;
Var
R: registers;
Begin
r.AH: = $30;
MsDos(r);
write1n ('Версия операционной системы: г.АL, '.', г.АН)
END.
Задача 4. С помощью следующих двух процедур программист может прочитать содержимое любого вектора или установить его новое значение.
Процедура GETINTVECT. Возвращает вектор прерывания с указанным номером; формат обращения GETINTVECT(< N >, < вектор >> Здесь < N > - выражение типа ВYТЕ, содержащее номер прерывания; < вектор > -переменная типа РOINTER, в которой возвращается адрес точки входа в процедуру обработки прерывания.
Пример: программа выводит на экран содержимое всех ненулевых векторов прерываний.
Uses DOS;
var
i: byte;
p: pointer;
Begin
for i:= 0 to 255 do
Begin
GetIntVec(i, p);
if (Seg(p^) <> 0) or (Ofs(p^) <> 0) then
write1n('N = ', i:3, 'Seg = ', Seg(p^):5, 'Ofs =', Ofs(p^):5);
End;
End.
Прямое обращение к памяти и портам ввода-вывода
В Турбо-Паскале имеется пять предварительно объявленных массивов: МЕМ, МЕМW, МЕМL, РОRТ и РОRТW. Первые три обеспечивают доступ к любому участку оперативной памяти по абсолютному адресу, два другие - доступ к портам ввода-вывода. Компонентами массива МЕМ являются данные типа ВYТЕ, массива МЕМW - типа WORD, массива МЕМL - типа LONGINT. Обращение к элементам этих массивов, т.е. их индексация, имеет специальный вид: каждый индекс представляет собой абсолютный адрес и состоит из двух выражений типа WORD; первое дает сегментную часть адреса, второе - смещение; выражения разделяются двоеточием:
Mem[$0000:$1000]:= 0;
DataMem:= MemW[Seg(p):Ofs(p)];
MemLong:= MemL[64:i*SizeOf(rea1)];
Задача 5. Как следует из технического описания операционной системы МS DOS, в ПЗУ BIOS по адресу $F000:$FFFE зашит байт-идентификатор типа компьютера. Таким образом можно определить тип компьютера, на котором запускается программа:
Program DMA_Demo;
Begin
Write('Тип компьютера: ');
Case Mem[$FOOO:$FFFE] of
$FF: writeln('PC');
$FE: writeln('XT');
$FD: writeln('PCjr');
$FC: write1n('AT');
$F9: writeIn('совместимый c PC');
End
End.
Компонентами массива РОRТ являются байты, а массива РОRТW - слова. Индексами этих массивов должно быть выражение типа ВYТЕ, указывающее номер нужного порта. Присвоение значения элементу массива РОRТ или РОRТW приведет к записи в порт, упоминание элемента в выражении - к чтению из порта. Компоненты массивов РОRТ и РОRТW нельзя передавать в качестве параметров процедурам или функциям. Эти идентификаторы нельзя употреблять без индексных выражений.
Контрольные вопросы
Что представляют собой прерывания?
Какие номера прерываний зарезервированы за BIOS. MS-DOS?
Какие процедуры есть в Паскале для прямого обращения к функциям MS-DOS и BIOS?
Особенность регистров общего назначения
Процедуры, предназначенные для работы с регистрами процессора и прерывания MSDos и Intr модуля DOS
С помощью каких процедур можно прочитать любой вектор?
Охарактеризовать пять предварительно объявленных массивов: МЕМ, МЕМW, МЕМL, РОRТ и РОRТW.