Вызов прерываний с использованием регистра
Я пытаюсь вызвать некоторые прерывания из защищенного режима в 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
никогда не принимает регистр в качестве операнда, только байтовый литерал. Если вы хотите иметь возможность указать прерывание для вызова в регистре, вам нужно будет использовать таблицу диспетчеризации.