1个回答
展开全部
你是指内联汇编吧?比如下面这个例子:
#include <stdio.h>
int func(int a, int b)
{
return a - b;
}
int main()
{
//计算 12-5
int a = 12, b = 5; //给定两个数
int res; //用来记录结果
__asm{ //内联汇编
push b; //b压栈
push a; //a压栈,注意C中函数接受参数的时候入栈是反着的
call func; //调用函数func, 返回值保存在eax里
mov res, eax; //将eax里的值赋给res
}
printf("%d\n", res); //输出结果,得到7
return 0;
}
追问
能不能直接调用一个汇编程序,或者完整的汇编程序那个地方需要修改?
、
追答
如果指的是内联汇编,完整的汇编代码写到下面的...里应该就可以执行
__asm{
...
}
如果不是指内联汇编,要把带有函数的汇编程序导出为obj这样的二进制文件,
然后在C中 extern "C" type _stdcall func(...) 声明一下函数原型应该就能使用了
参考资料:
http://hi.baidu.com/bluebirdye/item/fef9b3c3f2bd15b90d0a7b8f
链接不通过是指link error吧,有可能是你的函数原型写错了,或者找不到函数入口(没有汇编得到的二进制文件)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询