Intdos и intdosx функций исполняют interrupt 0x21 dos для того чтобы invoke определенная функция dos. Значение inregs- h.ah определяет функцию dos, котор нужно invoked. Intdosx функции также копирует segregs - ds и segregs - значения es в соответствуя регистры перед invoking dos действует и после этого восстанавливает ds.
Эта характеристика функций позволяет программы используют далекие указатели или большая модель памяти данных определяет который этап должен быть использованным для исполнения функции. С функцией intdosx вы можете invoke функция dos принимает значение ds отличающееся от этап данным по невыполнения обязательства and/or принимает аргумент в es.
Обе функции возвращают значение ОСИ после завершения звонока функции dos и если флаг носить установлен, то (outregs - x.cflag! = 0), он показывает что ошибка произошла.
После того как interrupt 0x21 возвращает функции копируют в настоящее время значения регистра к outregs, состоянию флага носить к полю x.cflag в outregs и значение 8086 флагов регистрирует к полю x.flags в outregs. И inregs и outregs могут указать к такой же структуре. Препятствуйте нам увидеть примеры этих функций.
Пример пользы функции intdos давался ниже. Эта программа получает выбранную информацию о неповоротливом (Floppy Disk дюйма 1.44Mb, 3Ѕ) приводе диска. Эта программа обеспечивает данные по распределения Floppy Disk.
/* Данные по распределения привода получать для использования диска */
#include <dos.h> /*для intdos() и соединения REGS*/
#include <stdio.h> /* для printf() */
union REGS inregs, outregs;
void main()
{
inregs.h.ah = 0x36; /* получите номер функции открытыйа космос диска */
inregs.h.dl = 0x01; /* управляйте а: */
intdos(&inregs, &outregs);
printf("%d sectors/cluster,\n%d clusters,\n%d bytes/sector,
\n%d total clusters",
outregs.x.ax,outregs.x.bx,
outregs.x.cx, outregs.x.dx);
getch();
}
И выход программы будет как это:
1 sectors/cluster,
1933 clusters,
512 bytes/sector,
2843 total clusters |
|