Visual Studio-X64汇编编写

纯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即可。

相关推荐
至善迎风2 分钟前
将跨平台框架或游戏引擎开发的 Windows 应用上架 Microsoft Store
windows·microsoft·游戏引擎
皮皮冰燃10 分钟前
关系数据库-10-[mysql5和mysql8]在windows中安装为服务并共存
windows·mysql
太空1号18 分钟前
VxWorks入门小白菜鸟教程3 —— 编译运行VxWorksSDK示例hello_cmake_rtp(Windows篇)
windows·嵌入式硬件
天朝八阿哥25 分钟前
Bye~~ win10!
linux·windows
景彡先生36 分钟前
Python列表(List)完全指南:从入门到实战优化
windows·python·list
Yupureki1 小时前
从零开始的C++学习生活 11:二叉搜索树全面解析
c语言·数据结构·c++·学习·visual studio
小草儿7992 小时前
gbase8s之.net8连接8s之mysql模式(windows)demo
windows·mysql·.net
歪歪1003 小时前
如何在Qt中使用VS的调试功能
运维·开发语言·网络·qt·网络协议·visual studio
_Aaron___11 小时前
List.subList() 返回值为什么不能强转成 ArrayList
数据结构·windows·list
magic3341656312 小时前
Springboot整合MinIO文件服务(windows版本)
windows·spring boot·后端·minio·文件对象存储