【问题标题】:djgpp gpp pass variable inline assemblydjgpp gpp 传递变量内联汇编
【发布时间】:2015-09-01 18:57:14
【问题描述】:

将 DJGPP 与编译器 gpp 和 intel 语法一起使用
如何将变量传递给内联汇编?
错误如下:
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");
}

【问题讨论】:

  • 它是否适用于全局变量?

标签: gcc assembly x86 djgpp


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多