- Любовные романы
- Фантастика и фэнтези
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Создаем вирус и антивирус - Игорь Гульев
Шрифт:
Интервал:
Закладка:
Вход:
AH=14h
DS:DX – адрес открытого FCB (Таблица Б-2)Выход:
AL=00h, если чтение было успешным и DTA содержит данные
AL=01h, если достигнут конец файла (EOF) и данные не считаны
AL=02h, если произошел выход за сегмент (чтения не было)
AL=03h, если EOF и считана усеченная запись (дополнена нулями)Описание.
Функция читает файл, специфицированный в FCB. Затем соответственно увеличивает значения полей в FCB.
Перед началом последовательной обработки файла нужно сбрасывать CurRec в ноль, так как функция 0Fh не инициализирует это поле.
DOS, функция 15h Последовательная запись в файл через FCBВход: AH=15h
DS:DX – адрес открытого FCB (Таблица Б-2)Выход:
AL=00h, если запись была успешной
AL=01h, если ошибка переполнения диска (данные не записаны)
AL=02h, если произошел выход за сегмент (записи не было)Описание.
Функция записывает файл, специфицированный в FCB. Затем соответственно увеличивает значения полей в FCB.
Перед началом последовательной обработки файла нужно сбрасывать «Номер текщей записи» в ноль, так как функция 0Fh не инициализирует это поле.Примечание.
DOS буферизует данные, записывая полный сектор за один раз.
DOS, функция 16h Создание файла через FCBВход:
AH=16h
DS:DX – адрес неоткрытого FCB (Таблица Б-2)Выход:
AL=00h, если функция выполнена успешно FCB заполнен
AL=FFh, если при выполнении функции возникли ошибкиОписание. Файл, специфицированный неоткрытым FCB, создается на диске, указанном в FCB (0 – текущий, 1 – A и так далее). Он открывается в текущем оглавлении этого диска. FCB заполняется аналогично функции 0Fh. Если файл существует в момент вызова, его элемент оглавления перекрывается новым файлом, а длина файла сбрасывается в ноль.
Примечание.
Handle-ориентированные функции DOS 2.0+ гораздо удобнее в работе.
DOS, функция 17h Переименовать файл через FCBВход:
AH=17h
DS:DX – адрес измененного FCB (Таблица Б-2)Выход:
AL=00h, если функция выполнена успешно
AL=FFh, если при выполнении функции возникли ошибкиОписание.
Переименовывает файл в текущем оглавлении.
DOS, функция 19h Получить текущий диск DOSВход:
AH=19hВыход: AL – номер текущего диска (0 – A, 1 – B, и так далее)
Описание.
Возвращает номер дисковода текущего диска DOS.
DOS, функция 1Ah Установить адрес DTAВход:
AH=1Ah
DS:DX – адрес DTAОписание.
Устанавливает адрес DTA. Все FCB-ориентированные операции работают с DTA. DOS не позволяет операциям ввода/вывода пересекать границу сегмента. Функции поиска 11h, 12h, 4Eh и 4Fh помещают данные в DTA. DTA глобальна, поэтому надо проявлять осторожность при назначении ее в рекурсивной процедуре. При запуске программы ее DTA устанавливается по смещению 80h относительно PSP.
DOS, функция 1Bh Получить информацию FAT для текущего дискаВход:
AH=1BhВыход:
DS:BX – адрес байта FAT ID, отражающего тип диска (Таблица Б-3)
DX – всего кластеров (единиц распределения) на диске
AL – секторов на кластер
CX – байт на сектор
Таблица Б-3. Значения IDОписание.
Возвращает информацию о размере и типе текущего диска. Размер диска (в байтах) равен DX*AL*CX. Свободную память можно найти функциями 36h или 32h.Версии: DOS 1.x держит FAT в памяти и возвращает DS:BX => FAT. DOS 2.0+ может держать в памяти лишь часть всей FAT.
Примечание.
Эта функция изменяет содержимое регистра DS.
DOS, функция 1Ch Получить информацию FAT для указанного дискаВход:
AH=1Ch
DL – номер диска (0 – текущий, 1 – A и так далее)Выход:
DS:BX – адрес байта FAT ID, отражающего тип диска (приведен в описании функции 1Bh)
DX – всего кластеров (единиц распределения)
AL – секторов на кластер
CX – байт на секторОписание.
Аналогична функции 1Bh с той разницей, что регистр DL указывает диск, для которого нужно получить информацию.
DOS, функция 21h Считать произвольную запись файлаВход:
AH=21h
DS:DX – адрес открытого FCB (Таблица Б-2)Выход:
AL=00h, если чтение было успешным и DTA заполнена данными
AL=01h, если достигнут конец файла (EOF) и чтения не было
AL=02h, если произошел выход за сегмент (чтения нет)
AL=03h, если встречен EOF и усеченная запись дополнена нулямиОписание.
Данная функция читает из файла с текущей позиции как с указанной в полях FCB «Запись с текущей позиции» и «Номер записи при непосредственном доступе к файлу».
DOS, функция 22h Писать произвольную запись файлаВход:
AH=22h
DS:DX – адрес открытого FCB (Таблица Б-2)Выход:
AL=00h, если запись была успешной
AL=01h, при переполнении диска
AL=02h, если DTA+FCB выходит за сегмент (нет записи)Описание.
Данная функция записывает в файл с текущей позиции как с указанной в полях FCB «Запись с текущей позиции» и «Номер записи при непосредственном доступе к файлу».
DOS, функция 23h Получить размер файла через FCBВход:
AH=23h
DS:DX – адрес неоткрытого FCB (Таблица Б-2)Выход:
AL=00h, если функция выполнена успешно
AL=FFh, если при выполнении функции возникли ошибкиОписание.
Проще определить размер файла при помощи функции 3Dh с последующим выполнением 42h (при AL=2).
DOS, функция 24h Установить адрес произвольной записи в файлеВход:
AH=24h
DS:DX – адрес открытого FCB (Таблица Б-2)Описание.
Устанавливает поле «Номер записи при непосредственном доступе к файлу» в FCB на файловый адрес, соответствующий значениям полей «Текущий блок» и «Запись с текущей позиции».
DOS, функция 25h Установить вектор прерыванияВход:
AH=25h
AL – номер прерывания
DS:DX – вектор прерывания – адрес программы обработки прерыванияОписание. Устанавливает значение элемента таблицы векторов прерываний для прерывания с номером AL, равным DS:DX. Это равносильно записи 4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, DOS знает, что происходит, и гарантирует, что в момент записи прерывания будут заблокированы.
Примечание.
Восстановить DS (если необходимо) после этого вызова.
DOS, функция 26h Создать новый PSPВход:
AH=26h
DX – адрес сегмента (параграфа) для нового PSP
CS – сегмент PSP, используемый как шаблон для нового PSP (Таблица Б-4)Описание. Устанавливает PSP для порождаемого процесса по адресу DX:0000. Текущий PSP (100h байт, начиная с CS:0) копируется в DX:0000h, поле MemTop соответственно корректируется, векторы Terminate, Ctrl-Break и Critical Error копируются в PSP из векторов прерываний INT 22h, INT 23h и INT 24h. После этого можно загрузить программу с диска и передать ей управление посредством FAR JMP.
Примечание.
Если перехватывается INT 21h, нужно позаботиться о помещении в стек корректного CS: IP. Еще лучше использовать функцию 4Ch.
Таблица Б-4. Формат PSP DOS, функция 27h Читать произвольный блок файлаВход: AH=27h
DS:DX – адрес открытого FCB (Таблица Б-2)
CX – число считываемых записейВыход: AL=00h, если чтение успешно и DTA заполнена данными AL=01h если достигнут конец файла (EOF) и данные не считаны AL=02h, если при чтении произошел выход за границу сегмента AL=03h, если EOF и считана усеченная порция (дополнена нулями) CX – действительное число считанных записей
Описание.
Читает несколько записей из файла, начиная с файлового адреса, указанного полем «Номер записи при непосредственном доступе к файлу» в FCB. Помещает данные в память, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).
DOS, функция 28h Писать произвольный блок файлаВход:
AH=28h
DS:DX – адрес открытого FCB (Таблица Б-2)
CX – число записываемых блоков (если CX равен нулю, то размер файла усекается до указанного в поле FCB «Номер записи при непосредственном доступе к файлу»)Выход:
AL=00h, если запись успешна
AL=01h, при переполнении диска
AL=02h, если при записи произошел выход за границу сегмента
CX – действительное число сделанных записейОписание. Записывает несколько блоков в файл, начиная с файлового адреса, указанного полем «Номер записи при непосредственном доступе к файлу» в FCB. Читает данные из памяти, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).
DOS, функция 29h Разобрать имя файла
Вход:
AH=29h
DS:SI – адрес исходной текстовой строки для разбора
ES:DI – адрес буфера для результирующего неоткрытого FCB (Таблица Б-2)
AL – битовые флаги, указывающие опции разбора (Таблица Б-5).Выход:
AL=00h, если результирующий FCB не содержит обобщенных символов
AL=01h, если результирующий FCB содержит обобщенные символы