VisualStudio(VS)配置64位汇编语言开发环境
vs开发64位程序无法使用内联汇编,需要将汇编放到一个单独文件中编译链接。接着,点击”自定义生成工具“,在”命令行“中输入。3. 将汇编函数导出。
·
vs开发64位程序无法使用内联汇编,如果一定要使用汇编,需要将汇编放到一个单独文件中编译链接。
具体步骤如下:
- vs工程下新建或者导入已有的汇编源文件。以asm.asm为例,以下是模板:
;64位汇编程序模板 (Template)
;声明一个ExitProcess函数
ExitProcess PROTO
.data
;在这里声明变量
.code
myAsmTest PROC
;这里写自己的代码
mov rcx,0
call ExitProcess
myAsmTest ENDP
END
- 在asm.asm文件上右键,在弹出菜单中点击“属性”,然后点击“常规”,“从生成中排除”点击“否”, “项类型”选择“自定义生成工具”,最后点击”确定“或者”应用“,此时菜单栏会多出一个选项按钮"自定义生成工具":

接着,点击”自定义生成工具“,在”命令行“中输入如下命令:
ml64 /Fo $(IntDir)%(fileName).obj /c %(fileName).asm
在”输出“中输入如下命令:
$(IntDir)%(fileName).obj
最后点击确定。

- 将汇编函数导出。在其他c/c++源文件添加如下代码,代表该函数是外部导入函数,链接器链接时会在其他obj文件中查找该函数:
extern "C" int myAsmTest(int);
- 如果工程的主程序main函数也在汇编中,那么还需要修改工程的入口点,请自行百度VS修改程序入口点的设置。
接下来,汇编文件就可以单独编译了:

在masm中,extern和import都表示外部导入函数,export代表导出函数。
但是在vs嵌入式汇编中,export和import被废弃,只有extern关键字被保留,表示外部导入函数,可以被汇编调用。
64位嵌入式汇编下,导入函数和变量的格式不同,例子如下:
EXTERN targetFunction:PROC ;引用外部函数
EXTERN targetVariable:DQ ;引用外部变量
当然,汇编中没有类型,所以变量的类型DQ、 DD 、DW、DB都是一样的,都是地址,只是指向一个值。
参考链接:
更多推荐




所有评论(0)