Say I have this assembly code below. So like how does the call printf knows what to print? Does it just print out whatever is at the address that is pushed just above it all the time? In this case "push msg"?
SECTION .data
msg: db "Hello World!",10,0
SECTION .text
extern printf
global main
main:
push ebp
move ebp, esp
push msg
call printf
move esp, ebp
pop ebp
ret