Автор: Пользователь скрыл имя, 11 Декабря 2011 в 17:28, лабораторная работа
Цель работы: изучение принципов разработки низкоуровневых функций с использованием сервиса операционной системы MS-DOS. Изучение файловой системы и методов работы с файловой системой. Углубленное изучение метода реализации модуля на языке высокого уровня Турбо Паскаль, его синтаксиса.
Дагестанский Государственный Технический Университет
Кафедра
ПОВТиАС
Лабораторная работа №3
по дисциплине «Операционные системы»
на тему:
“
Реализация низкоуровневых
функций работы с каталогами
”.
Преподаватель:
Выполнил:
Махачкала 2011г.
|
Цель работы: изучение принципов разработки низкоуровневых функций с использованием сервиса операционной системы MS-DOS. Изучение файловой системы и методов работы с файловой системой. Углубленное изучение метода реализации модуля на языке высокого уровня Турбо Паскаль, его синтаксиса.
Задание: разработать низкоуровневые функции работы с каталогами с использованием возможностей предоставляемых системным сервисом ОС MS-DOS на языке высокого уровня Турбо Паскаль. Законченные функции оформить в виде модуля.
unit dir;
interface
uses dos;
var REG:registers;
{proverka flaga CF}
function FLAGS_CF(R:registers):
word;
{Sozdanie kataloga}
function MKDIR1(Path:pchar):word;
{Udalenie kataloga}
function RMDIR1(Path:pchar):word;
{Ustanovit' umalchivaemoe oglavlenie}
function CHDIR1(Path:pchar):word;
{Vozvrashaet tekushij katalog}
function CURDIR1(D:BYTE; var Path:pchar):word;
implementation
{proverka flaga CF}
function FLAGS_CF(R:registers): word;
begin
FLAGS_CF:=(R.FLAGS and $1) {proverka flaga CF (pervui bit registers.flags)}
end;
{Sozdanie kataloga}
function MKDIR1(Path:pchar):word;
begin
with REG do
begin
ah:=$39;
ds:=seg(path[0]);
dx:=ofs(path[0]);
end;
msdos(REG);
MKDIR1:=REG.ah;
end;
{Udalenie kataloga}
function RMDIR1(Path:pchar):word;
begin
with REG do
begin
ah:=$3A;
ds:=seg(path[0]);
dx:=ofs(path[0]);
end;
msdos(REG);
RMDIR1:=REG.ah;
end;
{Ustanovit' umalchivaemoe oglavlenie}
function CHDIR1(Path:pchar):word;
begin
with REG do
begin
ah:=$3B;
ds:=seg(path[0]);
dx:=ofs(path[0]);
end;
msdos(REG);
CHDIR1:=REG.ah;
end;
function CURDIR1(D:BYTE; var Path:pchar):word;
begin
with REG do
begin
ah:=$47;
dl:=D;
ds:=seg(path[0]);
si:=ofs(path[0]);
end;
msdos(REG);
CURDIR1:=REG.ah;
end;
end.
Основная
программа
uses dir,crt,strings;
var s:pchar;
BEGIN
writeln('Создание каталога');
s:='c:\myfolder';
MKDIR1(s);
readkey;
writeln('Изменение текущего каталог');
s:='c:\tc';
CHDIR1(s);
writeln('Текущий каталог');
s:='';
CURDIR1(0,s);
writeln(strpas(s));
writeln('Удаление каталога');
s:='c:\bp';
CHDIR1(s);
s:='c:\myfolder';
RMDIR1(s);
readkey;
END.
Информация о работе Реализация низкоуровневых функций работы с каталогами