Системное программное обеспечение персональных ЭВМ


Пример 3



Пример 3

int int86x(int int_num, union REGS *inregs, union REGS *outregs, struct SREGS *segregs); int intdosx(union REGS *inregs, union REGS *outregs, struct SREGS *segregs);

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

Наконец, наиболее полный набор регистров передается прерыванию функцией: void intr(int int_num, struct REGPACK *regs);

Структура regs также содержит и входные, и выходные значения. Но использование этой функции нами, к сожалению, ограничено ошибкой, имеющейся в системе программирования Турбо-Си 2.0. Ошибка заключается в том, что значение регистра BP, передаваемое в составе структуры regs, функция не отрабатывает. Поэтому в наших примерах мы в случаях, когда необходимо передать регистр BP, пользуемся функцией geninterrupt:




- Начало -  - Назад -  - Вперед -