-1

使用带有编译器 gpp 和 intel 语法的 DJGPP
如何将变量传递到内联汇编中?
错误如下:
undefined reference to `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");
}
4

1 回答 1

1

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

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

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

于 2015-09-01T21:57:19.870 回答