Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
В СХ, а точнее, в СL – аттрибут файла
0 – отсутствие аттрибутов 1 – только чтение 2 – скрытый файл 4 – системный 8 – метка тома 16 = 10h – подкаталог 32 = 20h – архив – этот разряд сброшен для всех файлов, которые изменялись после последнего копирования.
После выполнения всех необходимых действий по созданию файла, функция 3Сh возвращает в регистре АХ дескриптор созданного файла, которым могли в дальнейшем пользоваться для записи в файл или чтения из него. Если файл с заданным именем уже существовал, функция 3Сh фактичеки уничтожит имеющийся файл и создаст новый с тем же именем. Так как АХ используется для возврата как логического номера, так и кода ошибки, то в качестве признака ошибки необходимо использовать флаг CF (флаг переноса). Возможны коды возврата: 3 – путь не найден 4 – нет свободного логического номера 5 – отказ в доступе – либо в каталоге нет места Для новой записи, либо уже существующий файл защищен от записи и не может быть открыт для вывода данных.
Функция 3Dh - открыть файл (OPEN)
DS:DX – адрес строки, содержащей путь и имя файла AL - код режима открытия Рассмотрим только разряды 0¸2.
Бит 7 – бит наследования Биты 4-6 – режимы совместного использования. Коды возврата в АХ: 2 – файл не найден 3 – путь не найден 4 – нет свободного логического номера файла 5 – отказ в доступе 12 – недопустимый код доступа
Eh – закрытие файла Логический номер в ВХ. Код ошибки 6 – ошибочный логический номер.
Fh – читать данные изфайла или устройства Логический номер - ВХ. Число байт – СХ Адрес буфера – DS:DX В АХ возвращается число действительно считанных байтов. Если в АХ 0, то программа пыталась считать данные за концом файла. Код ошибки: 5 – отказ в доступе 6 – ошибочный логический номер.
40h – вывести данные в файл или на устройство (WRITE) Логический номер - ВХ. Число байт – СХ Адрес выводимых данных – DS:DX В АХ возвращается число действительно выведенных байтов. Проверка состоит их 2х шагов 1) СF 2) AX =? CX. Если АХ<СХ – на диске не хватило места.
H – удалить файл. DS:DX – адрес строки, определяющей имя файла. Заполнители? и * в имени файла использовать нельзя.
H – переместить указатель текущей позиции в файле. Логический номер – ВХ. Новое положение указателя задается путем загрузки в регистр AL исходного положения указателя, а в пару регистров СХ:DX – число байтов, на которое необходимо переместить указатель. Загружаемое в пару регистров СХ:DX смещение в байтах – это 32-битовое число без знака. В СХ – старшая часть, в DX – младшая. Если смещение меньше 65535, то СХ = 0. Исходное положение в АL задается с помощью так называемого кода метода: АL = 0 – смещение берется от начала файла и указатель изменяется на СХ:DX от этой точки АL = 1 – смещение берется от текущей позиции АL = 2 – смещение берется от конца файла. В последнем случае в паре регистров СХ:DX обычно ноль, чтобы определить текущий размер файла. Если задать смещение 0 и запросить метод 0 – то возврат в начало файла. Коды ошибок: 1 – ошибочный номер функции 6 – ошибочный логический номер
Пример
; создание файла MOV AH, 3Ch; Функция CREATE MOV CX, 0; Без аттрибутов MOV DX, OFFSET Filename; Адрес имени Файла INT 21h; ВЫзов DOS Jc error1; ошибка Mov Handler, AX; сохраним дескриптор ; запись строки в файл MOV AH, 40h; Функция записи MOV BX, Handler; Дескриптор MOV CX, BufLen; Число записываемых байтов MOV DX, OFFSET Buf; Адрес буфера INT 21h Jc error2 ; закрытие файла MOV AH, 3Eh; MOV BX, Handler INT 21h Jc error3 ; завершение программы MOV AX, 4C00h; Функция завершения INT 21h error1: … error2: … error3: …
; данные Buf DB ‘0123456789’; Данные, записываемые в файл BufLen EQU $ - Buf; Длина данных. $ - текущее значение счетчика Handler DW?; Ячейка для дескриптора Filename DB ‘D:\test\myfile.001’,0; ASCIIZ строка спецификации файла В простых программах файлы можно не закрывать, так как функция завершения 4Ch закрывает все открытые файлы программы.
Рассмотрим пример программы с имеющимся файлом: ; Открыть файл MOV AH, 3Dh; функция OPEN MOV AL, 2; Доступ для чтения/записи MOV DX, OFFSET Filename; Адрес имени файла INT 21h Jc error1 MOV Handler, AX; Сохранение дескриптора ; Пытаемся прочитать 65535 байт MOV AH, 3Fh; Функция READ MOV BX, Handler; Дескриптор MOV CX, 65535; Сколько читать MOV DX, OFFSET BufIn; Сюда читать INT 21h Jc error2 MOV CX, AX; сколько реально прочитано ; Вывод прочитанного на экран MOV AH, 40h; функция WRITE MOV BX, 1; Дескриптор стандартного вывода
MOV DX, OFFSET BufIn; отсюда выводить (СХ байт) Int 21h ; завершение программы MOV AX, 4C00h; Функция завершения INT 21h error1: … error2: … error3: … ; Данные BufIn DB 256 dup (‘ ‘); буфер ввода Handler DW? Filename DB ‘D:\test\myf.001’,0; спецификация файла
В данном случае на экран. Удобнее вывести с помощью 40h, так какмы не занем длину выводимого сообщения, то есть не знаем, куда поставить ‘$’ для функции 9h.
Анализ системных ошибок MOV AH, Function; Номер функции ; Заполнение регистров параметрами, необходимыми для ; выполнения данной функции INT 21h JC Error; флаг СF установлен ; Нет, нормальное продолжение программы ………….. Error: …. ; Да, анализ ошибок в АХ CMP AX, 1 JE Error1 CMP AX, 2 JE Error2 ….. 43h – получить, установить аттрибуты файла 56h – переименовать файл 57h – получить/установить дату и время последнего изменения файла
В DOS 3.00 5Ah – создать временный файл CX - аттрибут DS:DX – имя пути, должно заканчиваться ‘ \’ Строка должна иметь длину на 12 байт больше длины имени пути, чтобы DOS могла бы дополнить уникальным именем файла. 5Bh – создать новый файл В отличие от 3Сh, если файл уже существует, то 5Bh сообщает об ошибке.
5Сh – блокировать/разблокировать доступ к файлу.
|
||||||||||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 208; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.120.8 (0.022 с.) |