具体过程:

用visual studio2022新建一个x86汇编项目

二 x86汇编调用c语言printf函数的代码部分

x86_call_printf.asm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
;x86_call_printf.asm
.586
.model flat,stdcall
option casemap:none

includelib ucrt.lib
includelib legacy_stdio_definitions.lib

extern printf:proc

.data
Format db '%d',0

.code
main proc
mov eax,64h
push eax
mov ecx,offset Format
push ecx
call printf
add esp,8
ret
main endp
end

备注:

includelib ucrt.lib:调用库函数约定
includelib legacy_stdio_definitions.lib;2015后可能不存在

extern printf:proc:调用printf函数

三 使用lea传入参数

x86_call_printf.asm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
;x86_call_printf.asm
.586
.model flat,stdcall
option casemap:none

includelib ucrt.lib
includelib legacy_stdio_definitions.lib

extern printf:proc

.data
Format db '%d',0

.code
main proc
mov eax,64h
push eax
;mov ecx,offset Format
lea ecx,Format
push ecx
call printf
add esp,8
ret
main endp
end