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

相关推荐
霸道流氓气质14 小时前
Windows批处理脚本完整指南:可移植的交互式SpringBoot项目管理
windows·spring boot·后端
AI行业学习14 小时前
.NET Framework 3.5 SP1 完整离线包(2029.5.29)
开发语言·windows·.net
阿昭L14 小时前
调试CreateProcess
windows·进程·逆向工程·windows内核
是星辰吖~14 小时前
X86反汇编:破茧成蝶 —— 赤裸逻辑与机械之心(1-1)
汇编
AI行业学习15 小时前
.NET Framework 3.5 官方离线包下载+完整安装教程【2026.5.29】
windows·.net·notepad++
思麟呀15 小时前
C++工业级日志项目(七)日志器核心
linux·开发语言·c++·windows
影寂ldy16 小时前
C#List泛型集合
windows·c#·list
Li-Yongjun16 小时前
Linux 内核等待队列(Wait Queue)
linux·运维·windows
taiguisheng17 小时前
Docker中编译esp32
windows·docker·esp32
m0_6174939417 小时前
【PySide6实战】QListView与QListWidget深度解析:从入门到进阶的完整指南
windows·pyside6