русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Процедуры и функции модуля Dos


Дата добавления: 2013-12-23; просмотров: 929; Нарушение авторских прав


Program Txt;

Прерывания.

Модуль DOS - работа с файловой системой.

Лекция 14

Модуль Dos реализует ряд очень полезных программ операционной системы и обработки файлов. Ни одна из программ модуля Dos не определена стандартом Паскаля и поэтому они размещены в собственном модуле

DiskFree(d:word):longint; - свободных байт на диске d (0-тек, 1-a:, ...)

DiskSize(d:word):longint; - полный объем.

 

Переменная DosError:integer;

0 нет ошибки
2 файл не найден
3 путь не найден
5 доступ запрещен
6 неверный обработчик
8 нет памяти
10 неправильная среда
11 неправильный формат
18 больше нет файлов

 

FindFirst(path:string; attrib:byte; var s:SearchRec);

FindNext(var s:SearchRec);

type SearchRec=record

Fill:array[1..21]of byte;

Attr:byte;

Time:longint;

Size:longint;

Name:string[12]

end;

 

const

ReadOnly=$01;

Hidden=$02;

SysFile=$04;

VolumeId=$08;

Directory=$10;

Arhive=$20;

AnyFile=$3F;

 

GetAttr(var F; var Attr:byte) - Возвращает атрибут файла

SetAttr (var F; var Attr:byte) - Устанавливает атрибут файла

Примитивы ввода-вывода и других системных операций BIOS и DOS.

Схема: регистры - прерывание - регистры.

 

Registers=record

case integer of

0:(AX,BX,CX,DX,BP,SI,DI,DS,ES,Flag:word);

1:(AL,AH,BL,BH,CL,CH,DL,DH:byte);

end;

Intr(nom:byte; var R:Registers);

MsDos(var R:Registers); - прерывание номер $21 DOS.

 

Пример: прерывание $10(BIOS) - обмен данными с дисплеем

 

Функц. Исходные данные Результат
8 AH=8; BH=0 - страница дисплея; (AL) - символ в тек поз курс;(AH) - атрибут
9 AH=9; BH=0 - страница дисплея; (BL) - атрибут символа; (CX) - счетчик; (AL) - символ; Помещает в текущую позицию курсора (СХ) штук символов (AL) с атрибутом (BL)
10 AH=10; BH=0 - страница дисплея; (CX) - счетчик; (AL) - символ; Помещает в текущую позицию курсора (СХ) штук символов (AL) с текущим атрибутом

 



$11 чтение конфигурации системы
$13 обмен данными с диском
$20 - $3F прерывания DOS.
$21 функции DOS.
$25 абсолютное чтение с диска.
$26 абсолютная запись на диск.
$27 завершение программы с сохранением ее в памяти (резидентная программа).

 

{Ex_07_10}

uses Crt,Dos;

var R:registers; i,j,k :integer;

begin

ClrScr;

GotoXY(20,10);

R.AH:=10; R.BH:=0;

R.CL:=255; R.CH:=0;

R.AL:=ord('A');

Intr(16,R);

readln

end.

 

procedure PutTxtImege(x1,y1,x2,y2:integer; var p:pointer);

var R:registers; i,j,k :integer; pr:^byte;

begin

GetMem(p,(x2-x1+1)*(y2-y1+1)*2);

k := 0;

for i:=x1 to x2 do

for j:=y1 to y2 do

begin

GotoXY(i,j);

R.AH:=8; R.BH:=0;

Intr(16,R);

pr:=ptr(seg(p^),ofs(p^) + k);

pr^:=R.AL;

pr:=ptr(seg(p^),ofs(pr^)+1);

pr^:=R.AH;

k := k + 2;

end;

end;

 

procedure GetTxtImege(x1,y1,x2,y2:integer;

var p:pointer);

var R:registers; i,j,k :integer; pr:^byte;

begin

k := 0;

for i:=x1 to x2 do

for j:=y1 to y2 do

begin

GotoXY(i,j);

R.AH:=9; R.BH:=0;

R.CL:=1; R.CH:=0;

pr:=ptr(seg(p^),ofs(p^) + k);

R.AL:=pr^;

pr:=ptr(seg(p^),ofs(pr^)+1);

R.BL:=pr^;

Intr(16,R);

k := k + 2;

end;

FreeMem(p,(x2-x1+1)*(y2-y1+1)*2);

end;

 

 

Процедуры даты и времени

GetDate - Возвращает текущую дату, установленную в DOS

GetFTime - Возвращает дату и время последней записи в файл

GetTime - Возвращает текущее время, установленное в DOS

PackTime - Преобразует запись в 4 байтовое упакованное значение даты и времени типа longint, используемое процедурой SetFTime. Поля записи DateTime не проверяются на диапазон

SetData - Устанавливает текущую дату в DOS

SetFTime - Устанавливает время и дату последней записи в файл

SetTime - Устанавливает текущее время в DOS

UnpackTime - Преобразует 4-х байтовое упакованное значение даты и времени, возвращаемое GetFTime, FindFirst или FindNext в распакованную запись типа DateTime

Процедуры обслуживания прерываний

GetIntVeс - Возвращает адрес, хранящийся в указанном векторе прерывания

Intr - Выполняет указанное программное прерывание

MSDos - Выполняет функцию операционной системы

SetIntVec - Устанавливает адрес для указанного вектора прерывания

Функция статуса диска

DiskFree - Возвращает число свободных байт на указанном диске

DiskSize - Возвращает полный объем указанного диска в байтах

Процедуры обработки файлов

FindFirst - Ищет в указанном или текущем справочнике первый файл, соответствующий заданному имени файла и набору атрибутов

FindNext - Возвращает следующий файл,соответствующий имени и атрибутам, указанным в предыдущем вызове FindFrst

GetFAttr - Возвращает атрибуты файла

SetFAttr Устанавливает атрибуты файла

FSplit - Разбивает имя файла на 3 составные части (справочник, имя файла, расширение)

Функции обработки файла

FExpand - Берет имя файла и возвращает полное имя файла (устройство, справочник, имя и расширение)

FSearch - Ищет файл в списке справочников

Процедуры обработки процессов

Exec - Выполняет заданную программу с указанной командной строкой

Keep - Завершает программу и оставляет ее в памяти (реализует прерывание "завершить и оставить резидентным"- TSR)

SwapVectors - Меняет сохраненные вектора прерываний с текущими векторами

Функции обработки процессов

DosExitCode - Возвращает код завершения подпроцесса

Функции управления средой

EnvCount - Возвращает число строк, содержащихся в среде DOS

EnvStr - Возвращает указанную строку среды

GetEnv - Возвращает значение указанной переменной среды

Дополнительные процедуры

GetCBreak - Возвращает состояние проверки Ctrl-Break в DOS

SetCBreak - Устанавливает состояние проверки Ctrl-Break в DOS

GetVerify - Возвращает состояние флага верификации в DOS

SetVerify - Устанавливает состояние флага верификации в DOS

Дополнительные функции

DosVersion - Возвращает номер версии DOS



<== предыдущая лекция | следующая лекция ==>
Процедуры и функции модуля Crt | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.593 сек.