我现在正尝试使用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计算机,并想知道如何成功编译上述代码。谢谢!
答案 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__
。