Вызов прерываний с использованием регистра

Я пытаюсь вызвать некоторые прерывания из защищенного режима в C++, возвращаясь в реальный режим, вызывая прерывание и возвращаясь обратно в защищенный режим. Я получаю ошибку:

C2400: неправильный тип операнда

Я пытаюсь это исправить, но я не знаю, с чего начать. Вот выдержка из моего кода:

void intupt(char intr) //Call interrupt function. INTR is number of interrupt.
{
    pm2rm(); //Protected Mode To Real Mode
    __asm
    {
        mov al, [intr] //Put intr to AL register
        int al // call interrupt using AL
    }
    rm2pm(); //Real Mode to Protected Mode
}

Почему я получаю эту ошибку? Любые предложения о том, почему это происходит?

1 ответ

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

Другие вопросы по тегам