Игорь Гульев - Создаем вирус и антивирус
AL=FFh – установить данные для кода страны > 255
BX – 16-битный код страны (Таблица Б-8)
DX=FFFFhВыход:
CF=0, если функция выполнена успешно
BX – код страны
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. Если DX=FFFFh, то текущий код страны устанавливается равным AL (если AL=FFh, то код страны устанавливается равным BX). Обычно код страны устанавливается в файле CONFIG.SYS. Если DX<FFFFh, то DS:DX адресует буфер пользователя, в который помещается 20h-байтный блок данных для указанной страны.
Версии: DOS 2.00 и выше. Таблица Б-7. Формат блока данных страны
DOS, функция 39h Создать новое оглавлениеВход:
AH=39h
DS:DX – адрес строки ASCIZ с именем оглавленияВыход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Таблица Б-8. Коды некоторых странОписание.
Если диск и/или корневой путь не указаны, то новое оглавление создается в текущей директории. Поддиректория создается и связывается с существующим деревом. Если флаг CF установлен при возврате, то AX содержит код ошибки, и оглавление не создается.Версии: DOS 2.00 и выше. DOS, функция 3Ah Удалить оглавление
Вход:
AH=3Ah
DS:DX – адрес строки ASCIZ с именем оглавленияВыход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. Если диск и/или корневой путь не указаны, принимаются значения по умолчанию. Поддиректория удаляется из структуры оглавлений. Если флаг CF установлен при возврате, то AX содержит код ошибки, и оглавление не удаляется.
Примечание. Оглавление не должно содержать файлов и поддиректорий, оно не должно попадать под влияние возможных ограничений DOS (например, не должно быть задействовано в активных командах JOIN или SUBST).
Версии: DOS 2.00 и выше. DOS, функция 3Bh Установить текущую директорию
Вход:
AH=3Bh
DS:DX – адрес строки ASCIZ с именем оглавленияВыход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. Если диск и/или корневой путь не указаны, принимаются значения по умолчанию. Указанная поддиректория становится текущим оглавлением DOS для этого (или текущего) диска. Если флаг CF установлен при возврате, то AX содержит код ошибки, и текущее оглавление для выбранного диска не изменяется.
Версии: DOS 2.00 и выше. DOS, функция 3Ch Создать файл через описатель
Вход:
AH=3Ch
DS:DX – адрес строки ASCIZ с именем файла
CX – атрибут файла (атрибуты приведены в описании функции DOS 43h)Выход:
CF=0, если функция выполнена успешно
AX – описатель файла
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. Если диск и/или путь не указаны, принимаются значения по умолчанию.
Версии: DOS 2.00 и выше. DOS, функция 3Dh Открыть описатель файла
Вход:
AH=3Dh
DS:DX – адрес строки ASCIZ с именем файла
AL – режим открытия:
AL=00h, чтобы открыть для чтения
AL=01h, чтобы открыть для записи
AL=02h, чтобы открыть для чтения и записиВыход:
CF=0, если функция выполнена успешно
AX – описатель файла
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. Файл открывается в выбранном режиме доступа (режиме открытия). Если диск и/или путь не указаны, принимаются указанные по умолчанию. Файл должен существовать. Указатель чтения/записи устанавливается в ноль.
Версии: DOS 2.00 и выше. DOS, функция 3Eh Закрыть описатель файла
Вход:
AH=3Eh
BX – описатель файлаВыход:
CF=0, если функция выполнилась успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. BX содержит описатель файла (handle), возвращенный при открытии. Файл, представленный этим описателем, закрывается, его буферы сбрасываются и оглавление обновляется корректными размером, временем и датой. Из-за недостатка описателей файлов (максимум 20, по умолчанию установлено 8), возможно, придется закрыть часть текущих описателей, как, например, описатель 3 (стандартный AUX).
Версии: DOS 2.00 и выше. DOS, функция 3Fh Читать файл через описатель
Вход:
AH=3Fh
BX – описатель файла
DS:DX – адрес буфера для чтения данных
CX – число считываемых байтВыход:
CF=0, если функция выполнена успешно
AX – число действительно прочитанных байт
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. CX байт данных считываются из файла или устройства с описателем, указанным в BX. Данные читаются с текущей позиции указателя чтения/записи файла и помещаются в буфер вызывающей программы, адресуемый через DS:DX. Если необходимо установить позицию чтения/записи, можно использовать функцию 42h. Эта функция обновляет указатель чтения/записи файла, чтобы подготовиться к последующим операциям чтения или записи.
Версии: DOS 2.00 и выше. DOS, функция 40h Писать в файл через описатель
Вход:
AH=40h
BX – описатель файла
DS:DX – адрес буфера, содержащего записываемые данные
CX – число записываемых байтВыход:
CF=0, если функция выполнена успешно
AX – число действительно записанных байт
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. CX байт данных записываются в файл или на устройство с описателем, заданным в BX. Данные берутся из буфера, адресуемого через DS:DX, и записываются, начиная с текущей позиции указателя чтения/записи файла. Чтобы установить указатель файла, если необходимо, можно использовать функцию 42h. Обновляет указатель чтения/записи файла, чтобы подготовиться к последующим операциям чтения или записи.
Версии: DOS 2.00 и выше. DOS, функция 41h Удалить файл
Вход:
AH=41h
DS:DX – адрес строки ASCIZ с именем файлаВыход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. Файл удаляется из оглавления заданного диска. Если диск и/или путь не указаны, принимаются значения по умолчанию. Имя файла не может содержать обобщенные символы («?» и «*»). Если файл имеет атрибут «только чтение», то перед удалением необходимо изменить этот атрибут через функцию 43h.
Версии: DOS 2.00 и выше. DOS, функция 42h Переместить указатель файла
Вход:
AH=42h
BX – описатель файла
CX:DX на сколько передвинуть указатель: (CX*65536)+DX
AL=00h переместить относительно начала файла +CX:DX
AL=01h переместить относительно текущей позиции +CX:DX
AL=02h переместить относительно конца файла +CX:DXВыход:
CF=0, если функция выполнена успешно
DX:AX новая позиция указателя файла (если нет ошибки)
CF=1, если при выполнении функции возникли ошибки
AX – код ошибкиОписание. Перемещает логический указатель чтения/записи к нужной позиции. Очередная операция чтения или записи начнется с этого адреса.
Примечание.
Вызов с AL=2, CX=0, DX=0 возвращает длину файла в DX:AX.
Действительная длина файла равна (DX*65536)+AX.Версии: DOS 2.00 и выше. DOS, функция 43h Установить/опросить атрибуты файла
Вход:
AH=43h
DS:DX – адрес строки ASCIZ с именем файла
AL=00h – извлечь текущий атрибут файла
AL=01h – установить атрибут файла
CX – новый атрибут файла (для подфункции 01h)(Таблица Б-9)Выход:
CF=0, если функция выполнена успешно
CX – текущий атрибут файла (для подфункции 00h)(Таблица Б-9)
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Таблица Б-9. Атрибуты файлаОписание.
Атрибут файла читается или устанавливается, согласно коду в AL. Если диск и/или путь не указаны, принимаются значения по умолчанию.Примечание. Чтобы скрыть оглавление, нужно использовать CX=02h (а не 12h, как можно было ожидать).
Версии: DOS 2.00 и выше. DOS, функция 44h Управление устройством ввода/вывода
Вход:
AH=44h
AL – код подфункции:
AL=00h – получить информацию об устройстве
AL=01h – установить информацию об устройстве
AL=02h – читать с символьного устройства
AL=03h – писать на символьное устройство
AL=04h – читать с блочного устройства
AL=05h – писать на блочное устройство
AL=06h – дать статус ввода
AL=07h – дать статус вывода
AL=08h – запрос съемного носителя
AL=09h – запрос удаленного устройства
AL=0Ah – запрос удаленного описателя
AL=0Bh – счет повторов разделения
AL=0Ch – кодовые страницы 3.3
AL=0Dh – общий IOCTL
AL=0Eh – получить логическое устройство
AL=0Fh – установить логическое устройствоВерсии: DOS 2.00 и выше. DOS, функция 45h Дублировать описатель файла
Вход: