一、在asm文件中单独编写功能函数
比如造一个加法函数:
ULONG64 myadd(ULONG64 u1, ULONG64 u2);
在源文件下添加一个asm文件
新建一个myadd.asm
文件
二、在源文件中申明我们要用的函数
EXTERN_C ULONG64 add(ULONG64 u1, ULONG64 u2);
三、设置asm文件的生成方式
右键项目名,左键属性
从生成中排除:选择否
项类型:自定义生成工具
然后,我们继续对.asm
文件进行设置,将其包含到项目工程中来编译链接。选中myadd.asm
文件,右击选择属性
,来到myadd.asm
属性页进行设置。在 命令行 中输入ml64 /c %(fileName).asm
,在 输出 中输入%(fileName).obj
,其它保持默认即可,点击确定
即可完成设置。
对于 64 位程序在.asm
中写代码,需要遵循以下几个规则:
1.汇编文件.asm
文件必须以关键字.CODE
开始,关键字END
结束,大小写都可以。
.code
; 此处写汇编指令代码
end
2.所有的汇编代码以函数方式组织在一起。也就是说,我们要将汇编代码封装成一个个汇编函数。要注意64位汇编中的函数声明以及调用约定
.code
//myadd是汇编函数
myadd proc
//此处写汇编函数的代码
myadd endp
end
其中,myadd
是汇编函数的名称,proc
是汇编函数的关键字,endp
是汇编函数的结尾关键字。
四、在主函数中使用
#include <iostream>
#include <windows.h>
#include <tchar.h>
//声明引用外部函数
EXTERN_C ULONG64 myadd(ULONG64 u1, ULONG64 u2);
int main(int argc, _TCHAR* argv[])
{
ULONG64 result = myadd(0x111111111, 0x333333333);
printf("result = 0x%I64X\n", result);
return 0;
}