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

相关推荐
桌面运维家9 小时前
BGP路由优化实战:加速收敛,提升网络稳定性
网络·windows·php
m0_7381207211 小时前
我的创作纪念日0328
java·网络·windows·python·web安全·php
桌面运维家12 小时前
VHDX父盘定位:相对路径与Windows盘符变更难题
windows
Lyyaoo.12 小时前
【JAVA基础面经】JAVA的面向对象特性
java·开发语言·windows
FPGA的花路13 小时前
Windows10/11永久关闭自动更新
windows·自动更新·永久关闭
水饺编程13 小时前
第4章,[标签 Win32] :SysMets3 程序讲解01
c语言·c++·windows·visual studio
计算机安禾13 小时前
【数据结构与算法】第15篇:队列(二):链式队列的实现与应用
c语言·开发语言·数据结构·c++·学习·算法·visual studio
私人珍藏库13 小时前
[Windows] Cap 0.4.81
windows·工具·录屏·软件·多功能
想你依然心痛13 小时前
从零开始:Mac/Windows/Linux 三系统开发环境配置完全指南
linux·windows·macos