Создаем вирус и антивирус
Шрифт:
Выход: AL=00h, если чтение успешно и DTA заполнена данными AL=01h если достигнут конец файла (EOF) и данные не считаны AL=02h, если при чтении произошел выход за границу сегмента AL=03h, если EOF и считана усеченная порция (дополнена нулями) CX – действительное число считанных записей
Описание.
Читает несколько записей из файла, начиная с файлового адреса, указанного полем «Номер записи при непосредственном доступе к файлу» в FCB. Помещает данные в память, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).
DOS,Вход:
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 содержит обобщенные символы
AL=FFh, если неверно обозначение диска в имени файла
DS:SI – изменен – указывает на символ сразу вслед за именем файла
ES:DI – не изменен – указывает на неоткрытый FCBОписание.
Создает неоткрытый FCB из строки текста или параметра команды. Текст, начиная с DS:SI, анализируется как имя файла в формате D: FILENAME.EXT, и буфер по адресу ES:DI заполняется как соответственно форматированный FCB.
Таблица Б-5. Битовые флагиВход:
AH=2AhВыход:
AL – день недели (0 – воскресенье, 1 – понедельник, … 6 – суббота), DOS 3.0+
CX – год (от 1980 до 2099)
DH – месяц (1 до 12)
DL – день (1 до 31)Описание. Возвращает текущую дату, которая известна системе.
Версии.
DOS 2.x не гарантирует возврата в AL значения дня.
DOS 1.0+ возвращает правильный день недели.
Версии до 2.1 имеют проблемы с переходом через дату.
DOS, функция 2Bh Установить системную датуВход:
AH=2Bh
CX – год (от 1980 до 2099)
DH – месяц (от 1 до 12)
DL – день (от 1 до 31)Выход:
AL=00h, если дата корректна
AL=FFh, если дата некорректна и не измененаОписание.
Устанавливает системную
Вход:
AH=2ChВыход:
CH – часы (от 0 до 23)
CL – минуты (от 0 до 59)
DH – секунды (от 0 до 59)
DL – сотые доли секунды (от 0 до 99)Описание. Возвращает текущее время, которое известно системе.
Примечание.
Поскольку системные часы имеют частоту 18.2 Гц (интервал 55мс), DL имеет точность примерно 0.04 сек.
DOS, функция 2Dh Установить время DOSВход:
AH=2Dh
CH – часы (от 0 до 23)
CL – минуты (от 0 до 59)
DH – секунды (от 0 до 59)
DL – сотые доли секунды (от 0 до 99)Выход:
AL=00h, если время корректно
AL=FFh, если время некорректно и не измененоОписание.
Устанавливает системное время DOS.
DOS, функция 2Eh Установить/сбросить переключатель верификацииВход:
AH=2Eh
AL=00h – отключить верификацию
AL=01h – включить верификациюОписание. Задает, должна ли DOS верифицировать (считывать обратно) каждый сектор, записываемый на диск. Это замедляет операции записи на диск, но гарантирует максимальную надежность записи.
DOS, функция 2Fh Получить адрес текущей DTA
Вход:
AH=2FhВыход: ES:BX – адрес начала текущей DTA
Описание. Возвращает адрес начала области ввода-вывода (DTA). Поскольку DTA глобальна для всех процессов, в рекурсивной процедуре (например, при проходе по дереву оглавления) может потребоваться сохранить адрес DTA, а впоследствии восстановить его посредством функции 1Ah.
Примечание. Эта функция изменяет сегментный регистр ES.
Версии: DOS 2.00 и выше DOS, функция 30h Получить номер версии DOS
Вход:
AH=30hВыход:
AL – старший номер версии
AH – младший номер версии
BL:CX – 24-битный серийный номер (большинство версий не поддерживают этот параметр)Описание. Возвращает в AX значение текущего номера версии DOS. Например, для DOS 3.20 в AL возвращается 03h, в AH – 14h.
Примечание. Если в AL возвращается 00h, можно предполагать, что работает DOS более ранней версии, чем DOS 2.0.
Версии: DOS 2.00 и выше. DOS, функция 31h Завершиться и остаться резидентным
Вход:
AH=31h
AL – код выхода
DX – объем памяти, оставляемой резидентной (в параграфах)Описание. Выходит в родительский процесс, сохраняя код выхода в AL. Код выхода можно получить через функцию 4Dh. DOS устанавливает начальное распределение памяти, как специфицировано в DX, и возвращает управление родительскому процессу, оставляя указанную память резидентной (число байт равно DX*16). Эта функция перекрывает функцию INT 27h, которая не возвращает код выхода и не способна установить резидентную программу, размер которой превышает 64 Кбайт.