Функция 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 различных версий