使用内联汇编时使用DevCpp编译C程序时出错

时间:2016-05-11 21:15:06

标签: c gcc x86 inline-assembly

我使用DevCpp编译以下代码但出现问题:

#include<stdio.h>

int main(){
    char s;

    __asm(
    "mov %ah, 1"
    "int 21h"
    "mov %ah,2"
    "mov %dl,%al"
    "int 21h"
    );

    return 0;
}

DevCpp编译器产生的错误是:

  

错误:垃圾int 21hmov %ah' after expression Error: too many memory references for mov'

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

常见问题解答演示了在每个__asm中执行一个语句。

__asm("mov %ah, 1") ;
__asm("int 21h"   ) ;
__asm("ONE AND ONLY ONE INSTRUCTION") ;

能够用\n分隔行,但我没有看到记录。

__asm("mov %ah, 1\n"
      "int 21h   \n"
      "MULTIPLE INSTRUCTIONS WITH \n") ;