As jj2007 mentioned, the dynamic way:
.386
.model flat, stdcall
includelib kernel32.lib
.data
sDll db 'msvcrt',0
sFunc db 'printf',0
sMsg db 'Hello ASM',13,10,0
.code
_mainCRTStartup:
push ebp
mov ebp, esp
sub esp, 4h ; function pointer
push offset sDll
call LoadLibraryA@4
push offset sFunc
push eax
call GetProcAddress@8
mov dword ptr [ebp-4h], eax
push offset sMsg
call dword ptr [ebp-4h]
add esp, 4h
mov eax, 0h
mov esp, ebp
pop ebp
ret
end _mainCRTStartup