Вопрос № 175365: Здравствуйте уважаемые эксперты! Помогите пожалуйста с ответами на вопросы(на некоторые я попробую ответить, а ответы на остальные честно говоря не знаю, по возможности поправьте меня пож...
Вопрос № 175365:
Здравствуйте уважаемые эксперты! Помогите пожалуйста с ответами на вопросы(на некоторые я попробую ответить, а ответы на остальные честно говоря не знаю, по возможности поправьте меня пожалуйста):
1. Какие в MS-DOS есть способы обращения к файлам. (Насколько я понимаю - это обращения к записям и если это так, то существуют два способа: последовательный и произвольный).
2. Какие существуют методы управления файловыми функциями.
(Я знаю только метод управления с помощью описателя и где-то читал о FCB, но я не знаю, что это такое...)
3. Как организовать прямой доступ к файлу, используя Handle-ориентированные функции обслуживания файлов. (при создании, открытии или удалении файла в DS:DX мы помещаем путь к файлу и его имя, а в остальных функциях просто помещаем в BX описатель, т.е Handle файла, который был получен после создания/открытия файла.
4. Как организовать работу
с устройствами ввода-вывода, кроме дисков, используя файловые функции. (?)
5. Что такое указатель файла и какие существуют функции для работы с ним. (не знаю как по умному написать, что такое указатель, а для работы с ним используется функция 42h, но с ней чесно говоря ещё не работал)
Отвечает Airyashov, Студент :
Здравствуйте, Николай // Programmator . мой ответ будет такой 1. К файлу можно обращаться с помощью имени, полного имени, спецификации. подробнее например URL >>пример 2. через описатель и через FCB. подробнее URL >>FCB 3. сами ответели 4. через чтандартные описатели 3-AUX (COM1-обычно), 4-PRN (LPT1-обычно) 5.
число, номер который идентифицирует структуру внутри ОС для работы с файлом (42р + открытие и закрытие тоже) 6. вызвать функцию 42h c AL=2, CX:DX=0:0 получите длину
Ответ отправил: Airyashov, Студент
Ответ отправлен: 16.12.2009, 21:18
Оценка ответа: 5 Комментарий к оценке: Спасибо Вам большое за ответ!!!
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 257819
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает amnick, 7-й класс :
Здравствуйте, Николай // Programmator .
(2) В DOS есть 2 группы функций для работы с файлами: - через FCB (File Control Block) - устаревшие, забудьте о них, как о страшном сне; - Handle-ориентированные (современные)
(1)Последовательный и произвольный доступ, (5) указатель файла. Насколько я понимаю, Вы имеете в виду указатель текущей позиции файла (read/write pointer). А указатель файла — иногда так называют описатель файла (handle).
После открытия/создания файла указатель
текущей позиции устанавливается на начало файла, каждая операция ввода/вывода продвигает его на соответствующее кол-во байт вперед (к концу файла). Иначе говоря, чтение и запись файла осуществляется начиная с текущей позиции, по окончании указатель продвигается на записанное/прочитанное кол-во байт. Указатель текущей позиции можно передвигать с помощью функции LSEEK (AH=42h).
После того, как Вы открыли файл, все операции осуществляются последовательно, если то
лько Вы не перемещаете указатель текущей позиции файла. Таким образом, в DOS только от Вас зависит, как обращаться к файлу — последовательно (не меняя текущую позицию с помощью ф-и LSEEK) или произвольно — устанавливая перед операцией текущую позицию в требуемое значение.
(3) - Открываете (AH=3Ch) или создаете (AH=3Dh) файл, получаете описатель (handle) файла в регистре AX, запоминаете его где-нибудь. Если CF=1, то произошла ошибка. - читаете (AH=3Fh)/пишете (AH=40h) файл. - функция lseek (AH=42h)
позволяет переместить указатель текущей позиции в произвольное место файла. - закрываете файл (AH=3Eh)
(4) стандартные описатели (handle) устройств: 0 - стандартное устройство ввода (обычно, клавиатура) 1 - стандартное устройство вывода (обычно, экран) 2 - стандартное устройство вывода ошибок (всегда - экран) 3 - стандартное последовательное устройство (COM1) 4 - стандартный принтер (LPT1)
(6) для определения размера файла переместите
указатель текущей позиции в конец:
; определяем длину файла mov ax,4202h ; AL = 2 - смещение задается от конца файла mov bx,[hFile] xor cx,cx ; CX:DX - смещение от конца файла = 0 xor dx,dx int 21h jc _lseek_error ; на выходе DX:AX - новая текущая позиция от начала файла. В данном случае - размер файла mov word ptr [nFileSize],ax mov word ptr [nFileSize+2],dx
Успехов!
Ответ отправил: amnick, 7-й класс
Ответ отправлен: 16.12.2009, 21:47
Оценка ответа: 5 Комментарий к оценке: Подробно и понятно, спасибо Вам огромное))))
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 257820
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.