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

相关推荐
任子菲阳1 小时前
学Java第四十五天——不可变集合、Stream流
java·开发语言·windows
小龙报8 小时前
《算法通关指南C++编程篇 --- 初阶函数递归专题》
c语言·开发语言·c++·算法·创业创新·学习方法·visual studio
T.Ree.10 小时前
汇编_mov指令
汇编
IDOlaoluo10 小时前
SQL Server 2022 企业版ISO安装步骤(附安装包从挂载到配置全流程)
windows
r***113312 小时前
从零开始在Windows系统上搭建一个node.js后端服务项目
windows·node.js
CC-NX1 天前
32位汇编:实验12动态链接库
汇编
Bruce_Liuxiaowei1 天前
Kali Linux 加入 Windows 域实战指南:解决域发现与加入失败问题
linux·运维·windows
鸽鸽程序猿1 天前
【项目】【抽奖系统】活动列表展示
windows
晚枫~1 天前
不同浏览器在Windows和Mac上的跨域配置方法
windows·macos
雪碧聊技术1 天前
怎么重启电脑的网卡(Windows系统)?
windows·重启网卡