Системный файловый сервис. (Лекция 17)

Содержание

Слайд 2

Создание файла (функция 3Ch ) Создает новый файл с нулевым размером

Создание файла (функция 3Ch )

Создает новый файл с нулевым размером (в

байтах). Если файл существовал ранее, данные в нем теряются.
Вход: DS:DX - адрес строки, содержащей путь к файлу. Строка должна заканчиваться числовым нулевым байтом (ASCIIZ –строка)
СХ - атрибуты файла в младшем байте
Байт атрибутов содержит признаки свойств файла:
00h – стандартные атрибуты; 01h - только для чтения;
02h - скрытый и т.д
Выход: АХ - логический номер файла
Слайд 3

Пример: создать файл по заданному пути . . . pathname db

Пример: создать файл по заданному пути

. . .
pathname db

‘d:\asm\file.asm’, 0 ; путь к файлу
handle dw ? ; для логического номера файла
. . .
mov cx, 0 ; стандартные атрибуты файла
lea dx, pathname
mov ah, 3ch
int 21h
jc short error ; ошибка (CF=1)
mov ds:handle, ax ; сохраним логический номер
. . . .
error: . . . .
Слайд 4

Открытие файла ( функция 3Dh ) Существующий файл «открывается» для доступа.

Открытие файла ( функция 3Dh )

Существующий файл «открывается» для доступа. Указатель

позиции в файле устанавливается на первый байт.
Вход: DS:DX - адрес в памяти ASCIIZ-строки с путем к файлу ;
АL - код доступа к файлу: 0 – для чтения, 1- для записи, 2 – для чтения/записи
Выход: АХ - логический номер файла
Слайд 5

Чтение/изменение атрибутов файла (функция 43h ) Сервис считывает или изменяет атрибуты

Чтение/изменение атрибутов файла (функция 43h )

Сервис считывает или изменяет атрибуты

файла
Вход: DS:DX - адрес в памяти ASCIIZ-строки с путем к файлу
АL - признак:
0 – чтение атрибутов в регистр CL
1 - придать файлу атрибуты, заданные в СL
Слайд 6

Чтение байтов из файла или с клавиатуры ( функция 3Fh )

Чтение байтов из файла или с клавиатуры ( функция 3Fh )

Универсальный

сервис: пригоден для чтения байтов с клавиатуры (логический номер устройства - 0) или из файла.
Чтение из файла начинается с текущей позиции. Затем, указатель позиции сместится на число прочитанных байт.
Вход: ВX - логический номер файла/устройства
СХ - количество считываемых байтов
DS:DX – адрес памяти для размещения байтов
Выход: АХ - количество фактически прочитанных байтов
!! Значение в АХ будет меньше СХ, если был достигнут конец файла
Слайд 7

Использование функции 3Fh для ввода с клавиатуры Требования: ВX =0 -

Использование функции 3Fh для ввода с клавиатуры

Требования:
ВX =0 - логический

номер клавиатуры
Ввод должен завершаться нажатием «Enter»
Макс. количество считываемых байтов – 127, включая «Enter»
Слайд 8

Пример: На клавиатуре были нажаты 5 символов и Еnter. Прочитать все

Пример:

На клавиатуре были нажаты 5 символов и Еnter. Прочитать все коды

из буфера клавиатуры в память.
Buf db 7 dup (?) ; область памяти для записи кодов
. . . . .
; подготовка параметров для вызова сервиса
mov bx, 0 ; логический № клавиатуры
lea dx, Buf ; адрес области Buf в dx
mov cx, 7 ; количество считываемых байт в сх
mov ah, 3fh
int 21h
Слайд 9

Запись в файл или символьное устройство ( функция 40h ) Производит

Запись в файл или символьное устройство ( функция 40h )

Производит запись

байтов из памяти в файл, начиная с текущей позиции в файле. После записи указатель позиции в файле перемещается на число записанных байтов.
Вход: ВX - логический № файла/устройства
СХ - количество записываемых байтов
DS:DX – адрес памяти
Выход: АХ - количество фактически записанных байтов
!! Если при вызове задать СХ=0, то файл будет «укорочен» до текущего значения указателя.
Слайд 10

Сместить позицию в файле (функция 42h ) Вход: ВX - логический

Сместить позицию в файле (функция 42h )

Вход: ВX - логический №

файла
AL - код, задающий начало смещения:
0 – от начала, 1- от текущей позиции, 2 - от конца файла
СХ (ст) и DX(мл) – 4-х байтная знаковая величина смещения в байтах
Выход: DX (ст) и АХ (мл) - 4-х байтное текущее значение указателя позиции от начала файла
!! Функцию можно использовать для определения размера файла, сделав вызов с параметрами: AL =2 и СХ-DX=0
Слайд 11

Закрыть файл ( функция 3Еh ) Вход: BX - логический номер файла

Закрыть файл ( функция 3Еh )

Вход: BX - логический номер

файла