Windows汇编调用printf

发布时间:2023年12月17日

VS2022 汇编

项目右键 生成依赖项 生成自定义 勾选masm
在这里插入图片描述
链接器 高级 入口点 main
在这里插入图片描述

X86

.686
.model flat,stdcall
option casemap:none
includelib ucrt.lib
includelib legacy_stdio_definitions.lib

EXTERN printf:proc

.data
szFormat db '%s',0
szStr db 'hello',0

.code
main proc
	lea eax, szStr
	push eax
	lea eax, szFormat
	push eax
	call printf
	add esp,8
	mov eax,eax
	ret
main endp
end

x64

includelib ucrt.lib
includelib legacy_stdio_definitions.lib

EXTERN printf:proc

.data
szFormat db '%s',0
szHello db 'HelloWorld',0

.code
main proc
	sub rsp,28h
	lea rdx, szHello
	mov rcx,offset szFormat
	call printf
	add rsp,28h
	ret
main endp
end

cpp文件调用汇编函数

要注意汇编文件的项类型正确配置
在这里插入图片描述

;includelib ucrt.lib
includelib legacy_stdio_definitions.lib

EXTERN printf:proc

.data
szFormat db '%s',0
szHello db 'Hello X64',0

.code
x64_print proc
	sub rsp,28h
	lea rcx, szHello
	call printf
	mov eax,666
	add rsp,28h
	ret
x64_print endp
end
extern "C" int x64_print();

int main()
{
	x64_print();
	return 0;
}
文章来源:https://blog.csdn.net/xue_nuo/article/details/134901341
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。