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

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 211
от 15.08.2005, 00:24

Администратор:Калашников О.А.
В рассылке:Подписчиков: 247, Экспертов: 16
В номере:Вопросов: 1, Ответов: 1


Вопрос № 24687: файловых FCB-операций что это такое? И дайте плиз. Примерчик: 16H создать файл <<<<? 0fH открыть файл 10H закрыть файл 13H удалить файл ???? типа такой: :-( CSEG segment assume cs:CSEG, ds:CSEG, ss:CSEG...

Вопрос № 24.687
файловых FCB-операций
что это такое? И дайте плиз. Примерчик:
16H создать файл <<<<?
0fH открыть файл
10H закрыть файл
13H удалить файл
????
типа такой: :-(
CSEG segment
assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG
org 100h
start:
mov ah,03ch <<<<
mov dx,offset booz
mov cx,00h
int 21h
int 20h
BOOZ db 'pret',0
Отправлен: 10.08.2005, 00:24
Вопрос задал: IngineringG (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>>

Отвечает: Стас
Здравствуйте, IngineringG!

FCB - File control block - метод доступа к файлам не через указатель (как сейчас), а через своеобразную структуру длинной 25h байт. В которой указывался диск, имя файла, дата время создания файла, размер файла хранились указатели на текущую позицию чтения/записи в файле, а также размер блока записи/чтения при блочном доступе. Для каждой функции (открытия, закрытие, чтение, запись) требовалось DS:DX указывать на эту структуру, а её саму заботливо хранить.
(Сейчас при доступе через handle, вероятннее всего такуюже структуру хранит сама система, а мы имеем её адрес.)
Для начала работы с FCB необходимо было задать диск имя файла (в формате 11 символов - 8 ися 3 расширение без точки) и открыть файл. Все остальные поля заполнялись системой.

CSEG segment
assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG
org 100h
start:
mov ah,0fh ;<<<<
mov dx,offset booz
int 21h
mov ah,1ah ; установить DMA (за размером сам следи)
mov dx,offset buf
int 21h
mov ah,27h ; чтение CX байт
mov dx,offset booz
mov bx,dx
mov word ptr [bx+0eh],1;размер записи - 1 байт чтобы было проще
mov cx,3
int 21h

mov bx,offset buf
mov [bx],13ebh; вставляем свой jmp
mov bx,offset booz
mov word ptr [bx+21h],0 ;сбрасываем номер записи в 0 DWORD
mov word ptr [bx+21h+2],0 ;

mov ah,28h ; записываем CX (3) байта - т.е. наш JMP
mov dx,offset booz
mov cx,3
int 21h

mov ah,10h ; закрываем файл (до этого можно изменить дату, время, и даже размер файла в FCB - и это все сохранится... файл урежется или увеличится)
int 21h

int 20h

BOOZ db 0 ; диск = 0 - текущий, 1=дискета, 3-C, 4-D и так далее
name db 'PRET EXE' ;файл PRET.EXE
db 25h-12 dup (0) ; остальное система заполнит сама

buf db 512 dup (0) ; буффер для чтения записи т.н. DMA по умолчанию 128 байт по адресу cs:80h
ends cseg
end start

вот примерно так.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 10.08.2005, 01:46
Оценка за ответ: 5


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

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться
Вспомнить пароль

В избранное