My question is, I don't understand print_string and read_int parameters. I read other questions and I understood how parameters are pushed on stack. I don't see that happening here. It makes sense that print_string has one parameter, which is in eax. I've read on wikipedia article x86 calling conventions that parameters can be passed in registers.
If someone could explain which parameters take both of then and why, I'd appreciate it. Thank you.
_asm_main:
enter 0,0
pusha
mov eax, prompt
call print_string
call read_int
mov [input], eax
and
print_string:
enter 0,0
pusha
pushf
push eax
push dword string_format
call _printf
pop ecx
pop ecx
popf
popa
leave
ret
and read_int:
enter 4,0
pusha
pushf
lea eax, [ebp-4]
push eax
push dword int_format
call _scanf
pop ecx
pop ecx
popf
popa
mov eax, [ebp-4]
leave
ret