使用寄存器调用中断

Calling interrupts using a register

本文关键字:中断 调用 寄存器      更新时间:2023-10-16

我正试图从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
}

为什么我会犯那个错误?关于为什么会发生这种情况,有什么建议吗?

int从不将寄存器作为操作数,只将字节文字作为操作数。如果您希望能够在寄存器中指定要调用的中断,则需要使用调度表。