Прерывания DOS и работа с файлами

Страницы работы

9 страниц (Word-файл)

Содержание работы

Министерство образования РФ

Хабаровский государственный технический университет

Заочный факультет ускоренного обучения

Кафедра «Вычислительная техника»

ЛАБОРАТОРНАЯ РАБОТА № 7

По дисциплине «Организация ЭВМ и систем»

Прерывания DOS и работа с файлами

Работу выполнил: студент Войтенок А.А.

Шифр № 4кПОв  0013796

Проверил: доцент к.т.н. Шоберг А.Г.

г. Хабаровск

2002 г.

Цель работы: Изучить основные функции DOS, предназначенные для обработки файлов.

Прерывание DOS 21h обеспечивает набор функций для работы с дисковой памятью(файлами и каталогами). В лабораторной работе использованы следующие функции прерывания 21h.

Операция

Код

(функция)

Входные параметры

Выходные параметры

Установка текущего дисковода

0E

DL=номер текущего дисковода

AL= число дисководов

Определение текущего оглавления

47

DL=номер дисковода(0- текущий, 1- А)

DS:SI – адрес области памяти для записи полного имени оглавления

Строка с именем оглавления, оканчивающаяся нулевым байтом(00h)

Создание файла

DX- адрес ASCIIZ- строки

CX- атрибут создаваемого файла

(0-  обычный файл,

10h- подкаталог)

AX- файловый номер или код ошибки

Открытие файла

3D

DX- адрес ASCIIZ- строки имени файла

AL=код доступа(0-только для чтения,

1-  только для записи,

2-  чтение и запись)

AX- файловый номер или код ошибки

Запись файла

40

BX= файловый номер

CX= число записываемых байт

DX=адрес области вывода

AX= число записанных байтов или код ошибки

Чтение файла

3F

BX- файловый номер,

CX- число байтов,

DX- адрес области ввода

AX= число прочитанных байтов или код ошибки

Закрытие файла

3E

BX- файловый номер

в случае ошибки AX=06

В случае успешного завершения операции функции сбрасывают флаг CF регистра флагов. При возникновении ошибки устанавливают CF=1 и помещают код ошибки в регистр AX.

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

1.  Порядок работы с файлами в DOS. Используются функции прерывания 21h. Файл открывается (3D) или создаётся(3С). Полученный файловый номер используется при операциях чтения и записи. По окончании работы файл должен быть закрыт (3E).

2.  Для доступа к  диску по секторам применяются прерывания BIOS 13h (физическая адресация по номеру головки, дорожки, сектора) и прерывания DOS 25h и 26h(логическая адресация по номеру сектора в пределах логического диска).

3.  Ошибка при чтении диска определяется по значению флага CF=1, код ошибки помещается в регистр AX.

4.  Номер возврата(файловый номер) – дескриптор, который присваивается открытому файлу. Используется в дальнейшем при операциях чтения, записи, закрытия файла.

5.  Изменение атрибута файла производится функцией 43h. В регистре DX устанавливается адрес ASCIIZ- строки, AL=01, CX=новое значение атрибута.

6.  Поиск файлов по шаблону. Функции 4E и 4F. DX= адрес ASCIIZ-строки с именем пути и шаблоном поиска (включая символы * и ?). В CX- значение атрибута. Имя файла и расширение помещаются в текущую дисковую область переноса.

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

data segment para public 'data'

BUFFER db 512 dup(?)

PATH           db 512 dup (?)

MESSAGE db 'Drive number: $'

FILEDESC dw 0 ;дескриптор файла

M_CATALOGDETECT db 0dh,0ah,0dh,0ah,'Current katalog and disk        1 $'

M_DRIVECOUNT    db 0dh,0ah,'Drives count                    2 $'

M_CREATECATALOG db 0dh,0ah,'Create catalog                  3 $'

M_CREATEFILE    db 0dh,0ah,'Create file                     4 $'

M_OPENFILE         db 0dh,0ah,'Open file                    5 $'

M_WRITE     db 0dh,0ah,'Write to file                6 $'

M_CLOSE     db 0dh,0ah,'Close file                   7 $'

M_QUIT      db 0dh,0ah,'QUIT                         Esc $'

T_DRIVE        db 0dh,0ah,'Drive      :       $'

T_FOLDER               db 0dh,0ah,'Current catalog:  $'

T_DISKCOUNT            db 0dh,0ah,'Disk count:    $'

T_CATALOG_NAME db 0dh,0ah,'Folder name:   $'

M_FOLDER_CREATED  db 0dh,0ah,'Folder created!$'     

M_FILE_CREATED db 0dh,0ah,'File created, descriptor: $'                   

M_ERROR        db 0dh,0ah,'Error : $'

T_FILE_NAME            db 0dh,0ah,'File name : $'

M_FILE_OPENED  db 0dh,0ah,'File opened, descriptor: $'

M_FILE_CLOSE   db 0dh,0ah,'File close                1 $'

M_FILE_WRITE   db 0dh,0ah,'File write                2 $'

M_FILE_READ            db 0dh,0ah,'File read                 3 $'

T_READED_BYTES db 0dh,0ah,'Readed bytes :$'

M_INPUT_STRING db 0dh,0ah,'Input string $'

NL dw 0D0Ah

FILESYSTEM db 'Type of file system: $'

BYTEPERSECTOR  db 'Bytes per sector: $'

RESERVEDSECTORS db 'Reserved sectors: $'

FATCOUNT db 'FAT count: $'

MAXDESCCOUNT db 'Max descriptors count in root catalog: $'

SECTORPERFAT db 'Sectors count in FAT: $'

ROOTOFFSETSTRING db 'Root offset: $'

FOUNDMESSAGE db 'File found $'

NOTFOUNDMESSAGE db 'File not found $'

NAMESTRING db 'Name: $'

EXTSTRING db 'Extension: $'

STRING db 10 dup(?)

MESSAGE_FILE db 0ah,0dh,'File name : $'

FILENAME db 20 dup (0)

FNAME db 10 dup (0) ; имя файла

EXT db 3 dup (0)   ; расширение

NAMELEN db     0 ;длина имени

EXTLEN db      0 ;длина расширения

DISK db        0       ; номер диска

TYPEFAT db     0       ; тип FAT 0-12,1-16

FAT16 db 'FAT16'

RESSECT dw     0       ; зарезервировано секторов

FAT_SIZE dw    0       ; секторов в FAT

FAT_CNT db     0       ; количество FAT

DESC_CNT dw    0       ; количество дескрипторов в корневом каталоге

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
69 Kb
Скачали:
0