asm基础——在c/c++语言中调用asm函数
2016-03-11 17:38
555 查看
1. 创建VS工程,注意需要选择MASM编译器(见“VS下的编程”第2、3步),否则编译会失败。显示无法链接addem,因为实际上汇编程序没有被编译。
2. 创建文件,如下所示:
3. addem.asm的源代码如下:
4. main函数如下:
需要注意这里的extern语句。
这里的”C”表示使用C调用惯例,即堆栈传递参数,参数从右往左压栈,调用方清理堆栈。
2. 创建文件,如下所示:
3. addem.asm的源代码如下:
.386P .model flat public _addem .code _addem proc near push ebp mov ebp,esp mov eax,[ebp+16] ; firstargument add eax,[ebp+12] ; secondargument add eax,[ebp+8] ; thirdargument pop ebp ret _addem endp end需要注意这里的public _addem,包括这里的”_”,和”public”
4. main函数如下:
// Addem Main Program (AddMain.cpp) #include <iostream> using namespace std; extern "C" int addem(int p1, int p2, int p3); int main() { int total = addem( 10, 15, 25 ); cout << "Total= " <<total << endl; getchar(); return 0; }
需要注意这里的extern语句。
这里的”C”表示使用C调用惯例,即堆栈传递参数,参数从右往左压栈,调用方清理堆栈。
相关文章推荐
- c++第一次实验-1
- 关于mapC++ map的基本操作和使用
- C++常用知识列表
- C语言中易被忽略或者混淆的东西
- C++常用第三方库及使用注意事项
- c++primer(第五版) 第十二章 动态内存习题答案
- 动态内存
- c++错误日志之getline()函数
- 快速排序的非递归写法
- 《More Effective C++》Rule 6:区别递加和递减符号的前置和后置形式
- C语言基本概念之表达式
- c++基础--容器适配器
- C语言二维数组与指针
- 二叉树之-OC语言实现
- C语言基础02
- 小记C++中+=与++的区别
- C++中TCHR转string
- 【C++】拷贝构造函数之浅复制与深复制
- c++基础--IO类
- 链式栈C++实现