forked from chic_luke/figasm
42 lines
1.9 KiB
NASM
42 lines
1.9 KiB
NASM
; Console Message, 64 bit. V1.03
|
|
NULL EQU 0 ; Constants
|
|
STD_OUTPUT_HANDLE EQU -11
|
|
|
|
extern GetStdHandle ; Import external symbols
|
|
extern WriteFile ; Windows API functions, not decorated
|
|
extern ExitProcess
|
|
|
|
global Start ; Export symbols. The entry point
|
|
|
|
section .data ; Initialized data segment
|
|
Message db "Che schifo la figa.", 0Dh, 0Ah,"Meglio Windows", 0Dh, 0Ah
|
|
MessageLength EQU $-Message ; Address of this line ($) - address of Message
|
|
|
|
section .bss ; Uninitialized data segment
|
|
alignb 8
|
|
StandardHandle resq 1
|
|
Written resq 1
|
|
|
|
section .text ; Code segment
|
|
Start:
|
|
sub RSP, 8 ; Align the stack to a multiple of 16 bytes
|
|
|
|
sub RSP, 32 ; 32 bytes of shadow space
|
|
mov ECX, STD_OUTPUT_HANDLE
|
|
call GetStdHandle
|
|
mov qword [REL StandardHandle], RAX
|
|
add RSP, 32 ; Remove the 32 bytes
|
|
|
|
sub RSP, 32 + 8 + 8 ; Shadow space + 5th parameter + align stack
|
|
; to a multiple of 16 bytes
|
|
mov RCX, qword [REL StandardHandle] ; 1st parameter
|
|
lea RDX, [REL Message] ; 2nd parameter
|
|
mov R8, MessageLength ; 3rd parameter
|
|
lea R9, [REL Written] ; 4th parameter
|
|
mov qword [RSP + 4 * 8], NULL ; 5th parameter
|
|
call WriteFile ; Output can be redirect to a file using >
|
|
add RSP, 48 ; Remove the 48 bytes
|
|
|
|
xor ECX, ECX
|
|
call ExitProcess
|