我现在正在练习用c ++代码混合的汇编代码,我可以编译win32平台的混合代码,没有任何问题,如下面的代码所示:
int main()
{
char alphabet = 'X';
printf ("Type letter = ");
__asm
{
mov ah, 02
mov dl, [alphabet]
int 21h
}
printf ("\n");
return (0);
}
但是,当我尝试编译x64平台的上述代码时,它失败了。我收到的错误信息如下:
error C4235: nonstandard extension used : '__asm' keyword not supported on this architecture
我使用VC2010进行编译,我想知道为什么VC2010不支持汇编语言编译以及在这种情况下我应该做些什么。谢谢!
答案 0 :(得分:6)
编译器不支持64位代码中的内联汇编。
您的选择:
正如已经提到的那样,在Windows程序中工作的int 21h函数2的机会正好为零。该API仅适用于DOS程序。