--- hello_world.asm ---
  bits 64
  default rel
  segment .data
   msg db "Hello world!", 0xd, 0xa, 0
  segment .text
  global main
  extern ExitProcess
  extern printf
  main:
   push    rbp
   mov     rbp, rsp
   sub     rsp, 32
   lea     rcx, [msg]
   call    printf
   xor     rax, rax
   call    ExitProcess
---nasm -f win64 -o hello_world.obj hello_world.asm
link hello_world.obj /subsystem:console /entry:main /out:hello_world_basic.exe
That's linking to Microsoft's C library in order to use printf. But of course you could do the same thing using just kernel32.dll functions.