djgpp gpp 传递变量内联汇编

djgpp gpp pass variable inline assembly

使用带有编译器 gpp 和 intel 语法的 DJGPP
如何将变量传递给内联汇编?
错误如下:
对 `n' 的未定义引用

代码:

void geninterrupt (int n) {
        asm("mov al, byte ptr [_n]");
        asm("mov byte ptr [genint+1], al");
        asm("jmp genint");
    asm("genint:");
        asm("int 0");
}

djgpp 对扩展 asm 使用 gcc 约束系统。

void geninterrupt (int n) {
        __asm__ __volatile__("mov byte ptr [genint+1], al\n\t"
        "genint: int 0" : : "a" (n));
}

如果中断发生任何变化,您将需要列出被破坏的寄存器。