Функция 4Fh

Функция 4Eh

Функция 4Ch

Функция 4Ah

Функция 49h

Функция 48h

Функция 42h

Установка указателя в файле. Предназначена для установки указателя на требуемый байт в файле.

Вызов:

AH = 42h

BX = дескриптор

AL = режим установки указателя:

  • 0 - смещение от начала файла
  • 1 - смещение от текущего положения указателя
  • 2 - смещение от конца файла

CX = старшая часть смещения

DX = младшая часть смещения

Возврат:

CX = старшая часть возвращенного указателя

DX = младшая часть возвращенного указателя.

Выделение блока памяти указанного размера. Выделяет блок памяти, после чего возвращает его сегментный адрес.

Вызов:

AH = 48h

BX = Размер блока памяти в параграфах

Возврат:

AX = сегментный адрес выделенного системой блока

При ошибке:

CF = 1

AX = код ошибки.

BX = размер наибольшего доступного в данный момент блока.

Освобождение блока памяти.

Вызов:

AH = 49h

ES = сегментный адрес блока,который следует освободить

При ошибке:

CF = 1

AX = код ошибки.

Изменение размера блока памяти, который был выделен программе.

Вызов:

AH = 4Ah

BX = новый размер блока в параграфах.

ES = сегментный адрес блока, размер которого следует изменить

При ошибке:

CF = 1

AX = код ошибки.

BX = размер наибольшего доступного в данный момент блока.

Завершение процесса с кодом возврата. Завершает текущую задачу и передает код завершения родительскому процессу. Освобождает выделенную программе память, сбрасывает на диск буферы, закрывает дескрипторы, восстанавливает из PSP вектора прерываний INT 22h, INT 23h и INT 24h. Далее управление передается родительскому процессу.

Вызов:

AH = 4Ch

AL = код возврата.

AL = 00h обычно соответствует нормальному завершению программы.

Поиск первого файла. Производит поиск в заданном каталоге первого файла, соответствующего заданной маске и имеющего указанные атрибуты.

Вызов:

AH = 4Eh

CX = атрибуты файла (могут комбинироваться):

  • 1 - только читаемый (read only)
  • 2 - скрытый (hidden)
  • 4 - системный (system)
  • 8 - метка тома
  • 20h - архивный (archive)

DS : DX = адрес маски для поиска

Возврат:

имя найденного файла и его расширение записывается в DTA в байты 1Eh - 2Ah. За последним символом расширения всегда следует точка: "."

При ошибке:

CF = 1

AX = код ошибки.

Поиск следующего файла. Почти всегда используется в паре с предыдущей функцией и вызывается после того, как был найден первый файл.

Вызов:

AH = 4Fh

Возврат:

имя найденного файла и его расширение записывается в DTA в байты 1Eh - 2Ah. За последним символом расширения всегда следует точка: "."

При ошибке:

CF = 1

AX = код ошибки.

Мультиплексное прерывание INT 2Fh.

Используется для организации взаимодействия резидентных программ с системой и друг с другом. Для программиста зарезервированы функции: C0h - FFh.

Вызов:

AH = 2Fh

AL = подфункция

Возврат:

AL = 0 - программа не установлена и ее можно установить

AL = 1 - программа не установлена и ее нельзя установить

AL = 0FFh - программа уже установлена.

При ошибке:

CF = 1

AX = код ошибки.

Прерывание INT 13h, функция 02h - чтение сектора.

Считывает один или несколько определенных пользователем секторов физического диска в выделенный буфер. Для начального сектора указываются такие координаты: дорожка,сектор, головка. Секторы на дорожке нумеруются от единицы, дорожки и головки нумеруются от нуля.

Вызов:

AH = 02h

AL = количество читаемых секторов

CH = дорожка

CL = начальный сектор

DH = головка

DL = дисковод ( 00h - 07Fh - для дискетного дисковода, 80h - 0FFh - для "винчестера".

ES : BX = адрес буфера, в который будет читаться информация из секторов

Возврат:

CF = 0

AH = 0

AL = количество прочитанных секторов

При ошибке:

CF = 1

AH = байт состояния.

(*) Биты регистра CX 5...0 определяют номер сектора, а биты 15...6 - номер дорожки !!! Это выглядит так:

Номер бита
Содержимое бита c c c c c c c c
Номер бита
Содержимое бита C c S s s s s s

Буква "C" или "c" означает, что бит принадлежит номеру дорожки; Буква "S" или "s" означает, что бит принадлежит номеру сектора.

Таким образом, биты "7" и "6" являются старшими битами номера дорожки, а биты "5" и "4" являются старшими битами номера сектора.

Прерывание INT 13h, функция 03h - запись сектора.

Записывает один или несколько определенных пользователем секторов на физический диск. Для начального сектора указываются такие координаты: дорожка, сектор, головка. Секторы на дорожке нумеруются от единицы, дорожки и головки нумеруются от нуля.

Вызов:

AH = 03h

AL = количество записываемых секторов

CH = дорожка

CL = начальный сектор

DH = головка

DL = дисковод ( 00h - 07Fh - для дискетного дисковода, 80h-0FFh - для "винчестера".

ES : BX = адрес буфера, информация из которого будет записываться в сектора

Возврат:

CF = 0

AH = 0

AL = количество записанных секторов

При ошибке:

CF = 1

AH = байт состояния.

(*) Биты регистра CX 5...0 определяют номер сектора, а биты 15...6 - номер дорожки !!! (см. функцию 02h).

Прерывание INT 13h, функция 08h - получение параметров дисковода.

Вызов:

AH = 08h

DL = дисковод (00h-07Fh - для дискетного дисковода, 80h-0FFh - для "винчестера".

Возврат:

AH = 0

BL = тип дисковода ( только AT и PS2 )

DL = количество накопителей, обслуживаемых первым контроллером

DH = максимальный номер головки

CL = максимальный номер сектора

CH = максимальный номер дорожки (см. функцию 02h)

ES:DI = адрес таблицы параметров дисковода

При ошибке:

CF = 1

AH = байт состояния.

(*) Функция не работает на IBM XT для дисководов !!!

Приложение 2. Формат загрузочной записи для MS DOS различных версий