Visual Studio-X64汇编编写方法
更新时间:2024年09月30日 10:00:47 作者:向你扔鸡爪
本文介绍了在Visual Studio中配置64位汇编环境和C++与汇编的混合编程的方法,详细说明了设置平台工具集、生成依赖项、链接器等步骤,并提供了解决可能出现的编译错误的方案,感兴趣的朋友跟随小编一起看看吧
纯64位汇编:
includelib ucrt.lib includelib legacy_stdio_definitions.lib includelib user32.lib extern printf:proc extern MessageBoxA:proc .data szFormat db "%s",0 szHello db "HelloWorld",0 szRk db "123",0 .code start proc sub rsp,28h mov rdx,offset szHello mov rcx,offset szFormat call printf mov r9,0 mov r8,offset szHello mov rdx,offset szRk mov rcx,0 call MessageBoxA add rsp,28h ret start endp end
注意:
1.平台工具集要选VS2015
2.属性->生成依赖项->masm
3.链接器->高级->入口点
64位混合编程(C++/Asm):一定要严格执行代码规范,不然各种报错
1.asm:
includelib legacy_stdio_definitions.lib includelib user32.lib extern printf:proc .data szformat db "%s\n",0 .code Myadd proc sub rsp,28h add rcx,rdx mov rax,rcx add rsp,28h ret Myadd endp Myprintf proc sub rsp,28h mov rdx,rcx lea rcx,szformat call printf add rsp,28h ret Myprintf endp end
main.cpp:
#include <iostream> #include <windows.h> EXTERN_C UINT64 Myadd(UINT64 a, UINT64 b); EXTERN_C void Myprintf(const char* szbuffer); int main() { UINT64 num = Myadd(1, 2); printf("%lld\r\n", num); Myprintf("hello word"); system("pause"); return 0; }
注意:
如果生成报错,并且没有属性里面没有Microsoft Macro Assembler,换成VS2015也没有的话,
就在源文件里面找到.asm后缀的文件右键属性->常规->项类型->Microsoft Macro Assembler即可。
到此这篇关于Visual Studio-X64汇编编写的文章就介绍到这了,更多相关Visual Studio-X64汇编内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
用汇编语言实现从1加到100的方法(1+2+...+100)
这篇文章主要介绍了用汇编语言实现从1加到100的方法(1+2+...+100),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01
最新评论