Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Получить информацию о разделе файловой системы





Вход: AX=71A0h;

DS:DX – адрес ASCIIZ – спецификации с именем раздела (например, db «C:\»,0);

ES:DI – адрес буфера для имени файловой системы (FAT, NTFS, CDFS);

CX=размер буфера в ES:DI (достаточно 32 байта).

Выход: BX=флаги файловой системы:

Бит 0 – учет регистра символов;

Бит 1 – учет регистра символов для каталогов;

Бит 2 – использование символов Unicode;

Бит 14 – поддержка функций LFN;

Бит 15 – включено сжатие (DBLSpase);

CX=max длина имени файла (£255 символов)

DX=max длина пути (£260 символов)

CF=1 – ошибка, AX – код ошибки.

Задача. В каталоге С:\TEMP\ создать файл file1.txt и записать в него символьную строку длиной не менее 25 символов. Скопировать из file1.txt 15 символов, начиная с 10-ого символа, и сохранить их по спецификации С:\TEMP\1\file2.txt. Переименовать file2.txt в text.doc и вывести его на экран.

Решение.

Для работы с файлами необходимо в сегменте данных задать ASCIIZ-спецификации создаваемых файлов и ASCIIZ-спецификацию пути создания каталога 1.

filename1 db'C:\temp\file1.txt',0

filename2 db'C:\temp\1\file2.txt',0

newname db'C:\temp\1\text.doc',0

directory db 'C:\temp\1',0

Кроме того, выполнение файловых операций чтения/записи связано с использованием двух промежуточных буферов buffer и copy, которые также должны быть объявлены в сегменте данных.

buffer db 80; максимальный размер буфера

buf_len db?; фактическая длина буфера

cont db 78 dup (?); содержимое буфера

copy db 15 dup (?)

Граф-схема решения задачи имеет следующий вид (рис.1)

Рис.1

Текст программы

.model small

.stack 512

.data

filename1 db'C:\temp\file1.txt',0

filename2 db'C:\temp\1\file2.txt',0

newname db'C:\temp\1\text.doc',0

handle1 dw?

handle2 dw?

buffer db 80; максимальный размер буфера

buf_len db?; фактическая длина буфера

cont db 78 dup (?); содержимое буфера

len1=25; минимальная длина строки

len2=15; длина копируемого фрагмента

msg db 'введите строку в file1.txt не более 25 символов$',10,13

copy db 15 dup (?)

directory db 'C:\temp\1',0

.code

mov ax,@data

mov ds,ax

; создание директории C:\temp\1

mov ah,39h

mov dx,offset directory

int 21h

;создание файлов по спецификациям filename1,;filename2

mov AH,3Ch

mov CX, 0; без атрибутов

mov DX, offset filename1

int 21h

mov handle1, ax; дескриптор file1 в handle1

mov ax,3c00h

mov dx, offset filename2

int 21h

mov handle2, AX; дескриптор file2 в handle2

; ввод символьной строки в file1.txt

vvod: mov ah,09h

mov dx,offset msg

int 21h

mov AH,0Ch; очистка буфера

mov AL,0Ah; и ввод строки

mov DX, offset buffer

int 21h; в buf_len - фактическая длина строки

mov AL,buf_len

cmp al, len1

jb vvod

; запись из буфера в FILE1.TXT

mov AH, 40h

mov BX, handle1

xor cx,cx

mov Cl, buf_len

mov DX, offset cont; содержимое buffer

int 21h

; установка указателя в FILE1.TXT

mov AH, 42h

mov BX, handle1

mov AL, 0; указатель относительно начала файла

mov CX, 0

mov DX, 10; CX:DX - адрес смещения

int 21h

; чтение из file1.txt фрагмента 15 символов

mov ah,3fh

mov bx,handle1; идентификатор file1.txt

mov cx, len2; длина копируемого фрагмента

mov dx, offset copy

int 21h

; запись copy в file2.txt

mov ah,40h

mov bx,handle2; идентификатор file2.txt

xor cx,cx

mov cl,buf_len

mov dx, offset copy

int 21h

; переименование file2.txt в text.doc

push DS

pop ES

mov AH, 56h

mov DX, offset filename2

mov DI, offset newname

int 21h

; вывод text.doc на экран

mov AH, 40h

mov BX,1; дескриптор монитора

mov CX, len2

mov dx, offset copy

int 21h

; закрытие file1.txt

mov AH, 3Eh

mov BX, handle1

int 21h

; закрытие text.doc

mov bx,handle2

int 21h

mov ax,4c00h

int 21h

end


Варианты заданий

1. В каталоге C:\USERS\GUEST создать файл с произвольным именем (не более 8 символов) и записать в него символьную строку с клавиатуры. Инвертировать полученный файл и вывести его на экран.

2. В каталоге C:\TEMP создать файл с заданным именем, записать в него данные с входного файла (не менее 25 символов). Добавить в созданный файл заданную символьную строку. Полученный файл вывести на экран.

3..В каталоге C:\TEMP создать файл с произвольным именем, записать в него заданную символьную строку. Добавить в созданный файл произвольную символьную строку с 5-ой позиции. Полученный файл переименовать.

4. В каталоге C:\USERS\GUEST создать файл с произвольным именем, записать в него данные с входного файла, подсчитать длину файла и вывести ее на экран. Добавить в начало файла произвольную символьную строку. Осушествить вывод полученного файла в выходной файл OUT.DOC по данному пути, а также скопировать полученный файл по спецификации С:\TEMP.

5. *В каталоге C:\TEMP создать временный файл, записать в него данные с клавиатуры, установить атрибут “чтение”, выполнить попытку записи в конец файла с подачей звукового сигнала. Переименовать файл (имя определяется программистом) и вывести его на экран.

6. *В каталоге C:\USERS\GUEST создать временный файл, записать в него данные с входного файла. Вывести на экран дату и время создания файла.

7. В каталоге C:\TEMP создать временный файл, записать в него данные с входного файла. Инвертировать поле файла с 5-ого по 10-ый символы. Полученный файл переименовать (имя определяется программистом) и переместить по спецификации C:\USERS\GUEST.

8. *В каталоге C:\ создать временный файл, записать в него символьную строку с клавиатуры. Исходный файл скопировать по спецификациям C:\TEMP, C:\TIT (подразумевается, что каталог TEMP существует, а TIT еще не создан). Исходный файл удалить.

9. В каталоге C:\ создать временный файл, записать в него данные с входного файла. Удалить в исходном файле первые 10 символов и подсчитать длину измененного файла. Поставить файлу атрибут скрытый. Вывести файл на экран.

10. В каталоге C:\ создать файл, записать в начало файла символьную строку с клавиатуры. Исходный файл переместить по спецификации C:\TEMP, D:\TEMP (подразумевается, что каталог TEMP существует на обоих дисках).

11. Найти в корневом каталоге все файлы, имеющие расширения DOC и TXT. Вывести количество найденных файлов по расширениям.

12. Найти в каталогахC:\ D:\ все файлы маской C*.DOC имеющие расширения DOC и TXT. Первый найденный файл вывести на экран.

13. Найти в корневом каталоге все файлы, имеющие расширения DOC и TXT. Вывести количество найденных файлов по расширениям.

14. *В текущем каталоге найти первые два файла LFN с расширением.DOC. Выполнить поиск вхождений первого слова из первого найденного файла во втором файле. Сохранить количество вхождений в файл found.txt.

15. Выполнить замену русской буквы «Н» на латинскую букву «Н» во всех файлах с расширением.TXT в текущем каталоге.

 

 
 


* - задание повышенной трудности

Контрольные вопросы

1. Как изменить формат записи каталога для использования длинных имен файлов и как при этом сохранить совместимость.

2. Укажите на различия между функциями “создать файл”, “создать новый файл”, “создать временной файл”. Что такое ASCIIZ-строка.

3. *Объясните, почему открытие, удаление и переименование файла выполняется через ASCIIZ-спецификацию, а не через дескриптор файла.

4. Какие предварительные действия необходимо выполнить для использования файловых функций LFN.

5. *Как удалить содержимое файла.

6. Укажите различия между элементом корневого каталога и дескриптором файла.

7. Укажите количество и назначение элементов главного корневого каталога для создания каталога.

8. Как реализовать функцию APPEND (добавление данных) в файл, как определить размер файла.

9. Назначение DTA.

10. Назначение стандартных дескрипторов файлов.

Date: 2015-05-22; view: 490; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию