Игорь Гульев - Создаем вирус и антивирус
Вход:
AH=02h
DL – символ, выводимый в стандартный выводОписание.
Посылает символ из DL в стандартное устройство вывода. Обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции. При обнаружении Ctrl-Break выполняется INT 23h.
DOS, функция 03h Считать символа со стандартного вспомогательного устройстваВход:
AH=03hВыход: AL – символ, введенный со стандартного вспомогательного устройства
Описание. Считывает (ожидает) символ со стандартного вспомогательного устройства, COM1 или AUX и возвращает этот символ в AL.
Примечание.
Ввод не буферизуется и должен опрашиваться (не управляется прерываниями). При запуске DOS порт AUX (COM1) инициализируется так: 2400 бод, без проверки на четность, 1 стоп-бит, 8-битные слова. Команда DOS MODE используется для установки иных характеристик.
DOS, функция 04h Записать символ в стандартное вспомогательное устройствоВход:
AH=04h
DL – символ, выводимый в стандартное вспомогательное устройствоОписание.
Посылает символ, находящийся в регистре DL, на стандартное вспомогательное устройство, COM1 или AUX.
DOS, функция 05h Вывести на принтерВход:
AH=05h
DL – символ, записываемый на стандартный принтерОписание.
Посылает символ в DL на стандартное устройство печати, обычно LPT1.
DOS, функция 06h Консольный ввод-выводВход:
AH=06h
DL=00h-FEh – символ, посылаемый на стандартный вывод
DL=FFh – запрос ввода со стандартного вводаВыход:
ZF=0, если осуществлялся ввод символа и символ готов при запросе ввода
AL – считанный символ
ZF=1, если осуществлялся ввод символа и символа в консоли нетОписание.
При DL=0FFh выполняет ввод с консоли «Без ожидания», возвращая включенный флаг нуля ZF, если на консоли нет готового символа. Если символ готов, сбрасывает флаг ZF и возвращает считанный символ в AL. Если DL не равен 0FFh, то DL направляется на стандартный вывод.
DOS, функция 07h Нефильтрующий консольный ввод без эхаВход:
AH=07hВыход: AL – символ, полученный через стандартный ввод
Описание. Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. Не проверяет на Ctrl-Break, BackSpace и другие.
Примечание.
Для ввода расширенного символа ASCII должна быть вызвана дважды. Для проверки статуса используется функция DOS 0Bh (чтобы не ожидать нажатия клавиши).
DOS, функция 08h Консольный ввод без эхаВход:
AH=08hВыход: AL – символ, полученный через стандартный ввод
Описание. Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. При обнаружении Ctrl-Break выполняется прерывание INT 23h.
Примечание.
Для ввода расширенного символа ASCII должна быть вызвана дважды.
DOS, функция 09h Запись строки на стандартный выводВход:
AH=09h
DS:DX – адрес строки, заканчивающейся символом «$» (ASCII 24h)Описание.
Строка, исключая завершающий ее символ «$», посылается на стандартный вывод. Символы Backspace обрабатываются как в функции 02h (вывод на дисплей). Чтобы перейти на новую строку, обычно включают в текст пару CR/LF (ASCII 0Dh и ASCII 0Ah). Строки, содержащие «$», можно передать на стандартное устройство вывода с помощью функции 40h (BX=0).
DOS, функция 0Ah Ввод строки в буферВход:
AH=0Ah
DS:DX – адрес входного буфера (Таблица Б-1)
Таблица Б-1. Формат входного буфераВыход:
Буфер содержит введенные данные, в конце – символ CR (ASCII 0Dh)
DOS, функция 0Bh Проверка статуса вводаВход:
AH=0BhВыход: AL=FFh, если символ доступен со стандартного ввода AL=00h, если нет доступного символа
Описание. Проверяет состояние стандартного ввода. При распознавании Ctrl-Break выполняется INT 23h.
Примечания.
Используется перед функциями 01h, 07h и 08h, чтобы избежать ожидания нажатия клавиши.
Эта функция дает простой неразрушающий способ проверки Ctrl-Break в процессе длинных вычислений или другой обработки, обычно не требующей ввода. Это позволяет снимать счет по нажатию Ctrl-Break.
DOS, функция 0Ch Ввод с очисткойВход:
AH=0Ch
AL – номер функции ввода DOS:
AL=01h – ввод с клавиатуры
AL=06h – ввод с консоли
AL=07h – нефильтрующий без эха
AL=08h – ввод без эха
AL=0Ah – буферизованный вводОписание.
Очищает буфер опережающего ввода стандартного ввода, а затем вызывает функцию ввода, указанную в AL. Это заставляет систему ожидать ввод очередного символа.
DOS, функция 0Dh Сброс дискаВход:
AH=0DhОписание.
Сбрасывает диск (записывает на диск все файловые буферы). Файл, размер которого изменился, должен быть предварительно закрыт (при помощи функций 10h или 3Eh).
DOS, функция 0Eh Установить текущий диск DOSВход:
AH=0Eh
DL – номер диска (0 – A, 1 – B и так далее), который становится текущимВыход: AL – общее число дисководов в системе
Описание. Диск, указанный в DL, становится текущим. Проверка: используется функция 19h (дать текущий диск). В регистре AL возвращается число дисководов всех типов, включая жесткие диски и «логические» диски (как диск B: системе с одним гибким диском).
Примечание.
AL имеет то же значение, что и LASTDRIVE, указанное в файле CONFIG.SYS, и по умолчанию равно 5.
DOS, функция 0Fh Открыть файл через FCBВход:
AH=0Fh
DS:DX – адрес неоткрытого FCB (Таблица Б-2)
Таблица Б-2. Формат FCBВыход:
AL=00h, если функция выполнена успешно (FCB заполнен)
AL=FFh, если файл не найден или доступ к файлу не разрешенОписание.
Файл, описываемый неоткрытым FCB, должен существовать в текущем оглавлении на диске, специфицированном в FCB (0 – текущий, 1 – A, 2 – B и так далее). Если файл не существует, возвращается AL=0FFh. Файл открывается в режиме совместимости. Если поле «Номер диска» в FCB равно нулю в момент вызова, то оно заполняется номером текущего дисковода (1 – A, 2 – B и так далее). Поле FCB «Номер текущего блока» устанавливается в ноль. Поле FCB «Размер логической записи» устанавливается в 80h. Поля даты и размера файла в FCB устанавливаются из оглавления.
DOS, функция 10h Закрыть файл через FCBВход: AH=10h
DS:DX – адрес открытого FCB (Таблица Б-2)Выход:
AL=00h, если функция выполнена успешно
AL=FFh, если файл не найден там, где он находился при открытии с помощью функции 0FhОписание.
Закрывает файл, открытый функцией 0Fh. Файл должен находиться на своем первоначальном месте в текущем оглавлении диска, на котором он был открыт. Если файл найден, оглавление обновляется, файловые буфера сбрасываются и возвращается AL=00h. Если файл не найден, оглавление не обновляется и возвращается AL=FFh.
DOS, функция 11h Найти первый совпадающий файл через FCBВход:
AH=11h
DS:DX – адрес неоткрытого FCB (Таблица Б-2)Выход:
AL=00h, если подходящее имя найдено
DTA заполнен
AL=FFh, если подходящего имени нетОписание.
В текущем оглавлении DOS происходит поиск файлов с именем, соответствующим заданному шаблону. При неудаче возвращается AL=0FFh. Если имя найдено, AL очищается, в первый байт DTA помещается номер дисковода (A – 1, B – 2 и так далее), а в следующие 32 байта помещается элемент оглавления для найденного файла.
Можно использовать при вызове расширенный FCB, чтобы выбирать файлы с указанными атрибутами. В этом случае в DTA помещаются: байт FFh, 7 байт нулей, номер диска и элемент оглавления.
DOS, функция 12h Найти следующий совпадающий файл через FCBВвод:
AH=12h
DS:DX – адрес неоткрытого FCB (Таблица Б-2)Выход:
AL=00h, если подходящее имя найдено
DTA заполнен AL=FFh, если подходящего имени нетОписание.
Используется после вызова функции 11h (Найти первый совпадающий файл через FCB) с обобщенным именем файла. Каждый последующий вызов заполняет DTA очередным подходящим элементом оглавления и возвращает AL=00h. Если подходящих имен больше нет, возвращается AL=FFh.
Резервируемая область в FCB сохраняет информацию, необходимую для продолжения поиска. Поэтому не стоит открывать и изменять FCB между вызовами.
DOS, функция 13h Удалить файл через FCBВход:
AH=13h
DS:DX – адрес неоткрытого FCB (Таблица Б-2)Выход:
AL=00h, если функция выполнена успешно
AL=FFh, если файл не найден или доступ к файлу не разрешенОписание.
Эта функция удаляет все подходящие файлы в текущем оглавлении указанного диска согласно спецификации в FCB. Если подходящие файлы не найдены или если доступ отвергнут (как при попытке удалить файл с атрибутом Read-Only), функция возвращает в регистре AL значение FFh.