
Практическая часть
-
Ввести программу.
-
Запустить на выполнение.
-
Пояснить работу процедур модуля 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.АХ, ' Кбайт')
Readln;
END.
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[$F000:$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.
Литература
-
Попов,И.И. Операционные системы, среды и оболочки: Учебное пособие[Тескт]/И.И.Попов, Т.Л.Партыка - М.:ФОРУМ: ИНФРА-М,2009 -400с
-
Олифер, В.Г. Сетевые операционные системы / В.Г. Олифер, А.А. Олифер – Спб.: Питер, 2006- 545с.
-
Спицына,О.И. Операционные системы и среды: лекционные материалы[Текст]/О.И.Спицына –Старый Оскол:ООО ТНТ, 2004-80с.