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

相关推荐
zdd567898 小时前
关于Windows 11 家庭中文版 25H2中ensp无法启动路由器,报40错的解决方法
windows
胡闹5411 小时前
Linux查询防火墙放过的端口并额外增加需要通过的端口命令
linux·运维·windows
北极糊的狐11 小时前
若依系统报错net::ERR_CONNECTION_TIMED_OUT的原因
java·windows·sql·mybatis
45288655上山打老虎14 小时前
List容器
数据结构·windows·list
Baikal..15 小时前
CVE-2024-38077漏洞 2012R2系统更新失败
windows
yunmoon0115 小时前
一款专业的 Windows 恶意程序分析与清理工具
windows
白仑色15 小时前
java中的anyMatch和allMatch方法
java·linux·windows·anymatch·allmatch
承渊政道15 小时前
一文彻底搞清楚链表算法实战大揭秘和双向链表实现
c语言·数据结构·算法·leetcode·链表·visual studio
9527(●—●)15 小时前
windows系统python开发pip命令使用(菜鸟学习)
开发语言·windows·python·学习·pip
yyywxk15 小时前
Windows 下 VMamba 安装教程(无需更改base环境中的cuda版本且可加速)
windows·vmamba