Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 1436
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1431
∙ повысить рейтинг »
vladisslav
Статус: 5-й класс
Рейтинг: 1063
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Assembler (Ассемблер)

Номер выпуска:1297
Дата выхода:22.12.2009, 20:00
Администратор рассылки:Лысков Игорь Витальевич, Модератор
Подписчиков / экспертов:443 / 68
Вопросов / ответов:1 / 2
IRC-канал по теме:#assembler

Вопрос № 175365: Здравствуйте уважаемые эксперты! Помогите пожалуйста с ответами на вопросы(на некоторые я попробую ответить, а ответы на остальные честно говоря не знаю, по возможности поправьте меня пож...



Вопрос № 175365:

Здравствуйте уважаемые эксперты! Помогите пожалуйста с ответами на вопросы(на некоторые я попробую
ответить, а ответы на остальные честно говоря не знаю, по возможности поправьте меня пожалуйста):

1. Какие в MS-DOS есть способы обращения к файлам. (Насколько я понимаю - это обращения к записям и
если это так, то существуют два способа: последовательный и произвольный).

2. Какие существуют методы управления файловыми функциями.
(Я знаю только метод управления с помощью описателя и где-то читал о FCB, но я не знаю, что это такое...)

3. Как организовать прямой доступ к файлу, используя Handle-ориентированные функции обслуживания файлов.
(при создании, открытии или удалении файла в DS:DX мы помещаем путь к файлу и его имя, а в остальных функциях просто помещаем в BX описатель, т.е Handle файла, который был получен после создания/открытия файла.

4. Как организовать работу с устройствами ввода-вывода, кроме дисков, используя файловые функции. (?)

5. Что такое указатель файла и какие существуют функции для работы с ним.
(не знаю как по умному написать, что такое указатель, а для работы с ним используется функция 42h,
но с ней чесно говоря ещё не работал)

6. Как определить размер файла на диске. (?)

Спасибо

Отправлен: 16.12.2009, 19:31
Вопрос задал: Мироненко Николай Николаевич, Студент
Всего ответов: 2
Страница вопроса »


Отвечает 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 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает 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 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.12 от 30.11.2009

    В избранное