Читайте также: |
|
DOS версии 1.0 не имело каталожную организацию данных, а также не использовался механизм переназначения потока ввода/вывода (в/в). Для организации в/в с диска необходимо было для каждого файла определять блок управления файлом FCB. Адрес этого блока указывался для всех операций FCB- ориентированного в/в. Поскольку FCB не поддерживает путь доступа к файлу, FCB- ориентированные операции способны обрабатывать файлы только в текущем каталоге. В связи с этим такие функции DOS из-за своей архаичности не рекомендуется использовать.
Начиная с версии DOS 2.0 введены UNIX- подобные способы организации файлов и операций с файлами. Вместо FCB используется файловый номер (дескриптор handler), двухбайтовое число, назначаемое DOS. Для операций чтения и записи с последовательным доступом можно переопределять направление в/в, не изменяя программы, а указывая только файловый номер согласно направлению. Для стандартных устройств в/в это следующие номера:
0 - системный ввод - обычно консоль (клавиатура с экраном),
1 - системный вывод - обычно экран,
2 - вывод сообщений об ошибках - обычно экран,
3 - последовательный порт,
4 - принтер.
Для файлов на дисках файловый номер назначается DOS при открытии файла и возвращается через AX. В последующих операциях его необходимо указывать как один из обязательных параметров. Для стандартных устройств открытие файла не обязательно выполнять. Достаточно в операциях чтения и записи указывать стандартный файловый номер.
При открытии файла или его создании DS:DX должен содержать адрес строки ASCIIZ с полным путем и именем файла или с частью пути, если текущим каталогом является каталог на требуемом дисководе, либо каталог, находящийся на пути к каталогу с файлом.
Если в качестве пути и имени файла указано стандартное устройство:
CON - консоль (дисплей + клавиатура),
PRN - основной (первый) принтер,
AUX - основной (первый) коммуникационный канал,
NUL - "пустое устройство" и др.,
то после открытия в AX вернется файловый номер стандартного устройства.
Помимо возврата файлового номера в AX возвращается код ошибки, но это только в случае, если флаг CF установлен в "1", поэтому вначале проверяется флаг CF. Если он в "0", то в AX не код ошибки, а файловый номер.
Основные функции DOS по прерыванию int 21h, работающие с файловыми номерами:
3Ch - создание файла;
3Dh - открытие существующего файла;
3Eh - закрытие файла;
3Fh - чтение файла;
40h - запись файла;
41h - удаление файла;
42h - установка файла на указанное смещение от начала файла или от текущего расположения файла;
43h - проверка или изменение атрибутов файла;
4Eh - начало поиска файла по шаблону;
4Fh - продолжение поиска файла по шаблону;
56h - переименование файла.
Дата добавления: 2015-10-02; просмотров: 49 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Функции СУФ | | | Командный язык |