Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования
Скачать 3.41 Mb.
|
intdos----------------------------------------------------------------- Назначение Общий интерфейс программных прерываний MS-DOS. Синтаксис #include int intdos(union REGS *intregs, union REGS *outregs); Прототип в dos.h Замечания intdos вызывает программное прерывание 0x21 для вызова специальной функции DOS. Значение inregs ->h.al определяет вызываемую функцию. После завершения обработки прерывания 0x21 intdos копирует текущее значение регистров в outregs, а флаг состояния системы - в поле outregs x.cflag. Если установлен флаг состояния, это значит, что возникла ошибка. Отметим, что inregs может указывать на ту же структуру, что и outregs. Возвращаемое intdos возвращает значение AX после значение завершения функции DOS. Если флаг состояния ус- тановлен (outregs->x.cflag != 0), указывая на ошибку, функция присваивает _doserrno код ошиб- ки. Переносимость Уникальна для MS-DOS. Смотри также bdos, bdosptr, geninterrupt, intdosx, int86, int86x, intr Пример #include #include /* уничтожает имя файла, при успехе возвращает 0, иначе не 0 */ int delete_file(char near *filename) { union REGS regs; struct SREGS sregs; int ret; regs.h.ah = 0x41; /* уничтожить файл */ regs.x.dx = (unsigned) filename; ret = intdos(®s,&sregs); /* Если флаг состояния установлен, то имеет место ошибка */ return(regs.x.cflag ? ret : 0); } main() { int err; err=delete_file("NOTEXIST.$$$"); printf("Возможно уничтожить NOTEXSIT.$$$ ?" "%s\n",((!err) ? "ДА" : "НЕТ"); } Результат выполнения программы Возможно уничтожить NOTEXIST.$$$? НЕТ ----------------------------------------------------------------- intdosx----------------------------------------------------------------- Назначение Общий интерфейс программных прерываний MS-DOS. Синтаксис #include int intdosx(union REGS *inregs, union REGS *outregs,union SREGS *segregs); Прототип в dos.h Замечания intdosx вызывает программное прерывание 0x21 для вызова специальной функции DOS. Значение inregs->h.al определяет вызываемую функцию. intdosx, кроме того, копирует segregs->x.ds и segregs->x.es в соответствующие регистры перед выполнением программного прерывания. Эта осо- бенность позволяет программам, которые исполь- зуют дальние (far) указатели или большую модель памяти, определить сегмент, который будет ис- пользован во время выполнения функции. После завершения обработки прерывания 0x21 intdosx копирует текущее значение регистров в outregs, а флаг состояния системы - в поле outregs x.cflag. intdosx, кроме того, восста- навливает DS. Если установлен флаг состояния, это значит, что возникла ошибка. Отметим, что inregs может указывать на ту же структуру, что и outregs. Возвращаемое intdosx возвращает значение AX после значение завершения функции DOS. Если флаг состояния ус- тановлен (outregs->x.cflag != 0), указывая на ошибку, функция присваивает _doserrno код ошиб- ки. Переносимость Уникальна для MS-DOS. Смотри также bdos, bdosptr, geninterrupt, intdos, int86, int86x, intr ----------------------------------------------------------------- intr----------------------------------------------------------------- Назначение Дополнительный интерфейс программных прерываний процессора 8086. Синтаксис #include int intr(int intr_num,struct REGPACK *preg); Прототип в dos.h Замечания Функция intr - это альтернативный интерфейс для выполнения программных прерываний. Она вызывает программное прерывание процессора 8086, указан- ное в аргументе intr_num. intr копирует значения регистров из стуктуры REGPACK в регистры перед выполнением программ- ного прерывания. После обработки программного прерывания intr копирует текущие значения ре- гистров в preg, включая флаги состояний. Функции intr передаются следующие аргументы: intr_num - номер прерывания; preg - адрес структуры, содержащей: (а) входные регистры перед пре- рыванием; (б) значения регистров после прерывания. Структура REGPACK (описанная в dos.h) имеет следующий вид: struct REGPACK { unsigned r_ax, r_bx, r_cx, r_dx; unsigned r_bp, r_si, r_di, r_ds, r_es, r_flags; }; Возвращаемое Никакого значения не возвращается. Структура значение preg содержит значения регистров после выполне- ния прерывания. Переносимость intr уникальна для процессоров семейства 8086. Смотри также geninterrupt, int86, int86x, intdos, intdosx ----------------------------------------------------------------- |