如何使用gcc和codeblock编译汇编语言?

时间:2012-12-26 10:02:51

标签: gcc assembly

我现在正尝试使用gcc和codeblock编译以下代码:

#include <stdio.h>

int main()
{

  char alphabet = 'X';
  printf ("Type letter = ");
    asm{                                //line 8
       mov ah, 02
       mov dl, [alphabet]               // line 9
       int 21h
     }

 printf ("\n");
 return (0);
}

我收到的错误消息如下:

  error: expected '(' before '{' token  line 8
  error: 'mov' was not declared in this scope line9 

我正在编译x86计算机,并想知道如何成功编译上述代码。谢谢!

1 个答案:

答案 0 :(得分:3)

不幸的是,gcc不支持这样的简单语法:

asm {
    mov ah, 02
    mov dl, [alphabet]
    int 21h
}

您可以在链接DCoder评论时找到有关gcc-inline-assembler的更多信息:click me
解释一切对于答案来说太过分了,所以我只是编写gcc的代码,它应该为你完成工作:

__asm__(
    "movb $2, %%ah;"
    "movb %0, %%dl;"
    "int $0x21;"
    :
    : "r"(alphabet)
    : "%ah", "%dl"
);

请注意,您也可以使用关键字asm代替__asm__