Advertisement
wildgurularry

Hello World in x64 assembly for Windows

Sep 24th, 2024 (edited)
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | Source Code | 0 0
  1. ; "C:\Program Files\NASM\nasm" -fwin64 hello64.asm
  2. ; "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\link" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0\um\x64" /SUBSYSTEM:CONSOLE /MACHINE:X64 /VERBOSE hello64.obj /ENTRY:_main /OUT:hello64.exe kernel32.lib
  3.  
  4. global _main
  5. extern GetStdHandle
  6. extern WriteConsoleA
  7.  
  8. section .data
  9. msg: db "Hello World!"
  10.  
  11. section .text
  12. _main:
  13. mov rcx, -11 ; DWORD nStdHandle = STD_OUTPUT_HANDLE
  14. call GetStdHandle
  15.  
  16. mov rcx, rax ; HANDLE hConsoleOutput = stdout
  17. mov rdx, msg ; LPCVOID lpBuffer = msg
  18. mov r8, 12 ; DWORD nNumberOfCharsToWrite = 12
  19. xor r9, r9 ; LPDWORD lpNumberOfCharsWritten = nullptr
  20. sub rsp, 40 ; Reserve parameter space on stack
  21. mov dword [rsp + 32], 00h ; LPVOID lpReserved = nullptr
  22. call WriteConsoleA
  23. add rsp, 40 ; Clean up parameter space on stack
  24.  
  25. xor eax, eax
  26. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement