Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прогр.docx
Скачиваний:
23
Добавлен:
21.12.2018
Размер:
2.58 Mб
Скачать

Лабораторная работа № 8. Тема: Работа с файлами

Пример №1. Создание файла и запись в него данных

;В сегменте команд

;Создадим файл

mov АН,3Ch ; Функция создания файла

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

mov DX, offset fname ; Адрес имени файла

int 21h

mov handle,AX ; Сохраним дескриптор файла

; Запишем в файл данные (в данном примере - текстовую строку)

mov AH,40h ; Функция записи в файл

mov BX,handle ; Дескриптор

mov CX,buflen ; Число записываемых байтов

mov DX,offset bufout ; Адрес данных

int 21h

; Закроем файл (нет необходимости)

mov АН,3Eh ; Функция закрытия файла

mov BX,handle ; Дескриптор

int 2lh

; В сегменте данных

bufout db 'Файл номер 1' ; Данные для записи в файл

buflen=$-bufout ; Ee длина (12 байт)

handle dw 0 ; Ячейка для дескриптора

fname db 'MYFILE.001',0 ;Имя файла в формате ASCIIZ

Пример №2. Прямой доступ к файлу. Модифицируем созданный ранее файл в примере 1 MYFILE.txt, содержащий строку “Файл номер 1”, в которой следует заменить 1 на 2а.

; В сегменте команд

; Откроем файл

mov AH,3Dh ;Функция открытия файла

mov AL,2 ;Доступ для чтения-записи

mov DX,offset fname ;Адрес имени файла

int 21h

mov handle,AX ;Сохраним дескриптор

;Установим указатель на байт номер 11

mov AH,42h ;Функция установки указателя

mov AL,0 ;Режим - от начала файла

mov BX,handle ;Дескриптор

mov CX, 0 ;Старшая половина указателя

mov DX, 11 ;Младшая половина указателя

int 21h

;Модифицируем файл

mov AH,40h ;Функция записи

mov BX,handle ;Дескриптор

mov CX,2 ;Число записываемых байтов

mov DX,offset mod ;Отсюда выводить

int 21h

;В сегменте данных

mod db '2a' ;Буфер вывода

handle dw 0 ;Ячейка для дескриптора

fname db 'MYFILE.txt', 0 ;Имя файла в формате ASCIIZ

Пример №3. Чтение файла

;В сегменте команд

;Откроем файл

mov AH,3Dh ; Функция открытия файла

mov AL,2 ; Доступ для чтения-записи

mov DX,offset fname ; Адрес имени файла

int 21h

mov handle,AX ; Сохраним дескриптор

; Поставим запрос на чтение 80 байт

mov AH,3Fh ; Функция чтения

mov BX,handle ; Дескриптор

mov cx,80 ; сколько читать

mov DX,offset bufin ; СЮда

int 21h

mov CX,AX ; Сколько реально прочитали

; Выведем прочитанное на экран

mov AH,40h ; Функция записи

mov 3X,1 ; Дескриптор стандартного вывода

mov DX,offset bufin ; Отсюда выводить (СХ байт)

int 21h

; В сегменте данных

bufin db 80 dup (' ') ; Буфер ввода

handle dw 0 ; Ячейка для дескриптора

fname db 'MYFILE.001',0 ; Имя файла в формате ASCIIZ

Пример №4. Назначение файлу даты и времени создания

;В сегменте команд

;Откроем файл

mov AH,3Dh ; Функция открытия файла

mov AL,2

mov DX,offset fname ; Адрес имени файла

int 21h

mov handle,ax ; Получили дескриптор

; Изменим дату и время создания

;Изменим дату и время создания файла

mov ah,57h ; Функция даты/времени

mov al,1 ; Установить дату/время

mov bx,handle ; Дескриптор файла

mov сх.,0 ; очистим Сх

or cx,sec ; добавим секунды

or cx,min ; добавим минуты

or cx,hour ;добавим часы

xor dx,dx ; очистим dx

or dx,day ; добавим день

or dx,month ;добавим месяц

or dx,year ; добавим год

int 21h

;В сегменте данных

handle dw 0 ; ячейка для дескриптора

fname db ‘MYFILE.TXT’,0 ; имя файла

sec dw 6/2 ; 6 секунд

min dw 15*32 ; 15 минут

hour dw 12*2048 ; 12 часов

day dw 10 ; 10 число

month dw 3*32 ; март

year dw 21*512 21 год от 1980, то есть 2001 г.

Задание для самостоятельной работы:

Разработать программу для создания файла и записи в него своих данных. При этом, программа должна предусмотреть случай, когда нужно будет поменять данные в созданном файле по требованию пользователя.