Added Win32 and Win64 ASM Hello World
This commit is contained in:
35
a/assembler_masm_win32.asm
Normal file
35
a/assembler_masm_win32.asm
Normal file
@@ -0,0 +1,35 @@
|
||||
; ---------------------------------------------
|
||||
; Hello World for Win32 Intel x86 Assembly
|
||||
;
|
||||
; by fruel (https://github.com/fruel)
|
||||
; 13 June 2016
|
||||
; ---------------------------------------------
|
||||
|
||||
.386
|
||||
.model flat,stdcall
|
||||
.stack 4096
|
||||
|
||||
EXTRN ExitProcess@4 : PROC
|
||||
EXTRN GetStdHandle@4 : PROC
|
||||
EXTRN WriteConsoleA@20 : PROC
|
||||
|
||||
.data
|
||||
msg BYTE "Hello World!",0
|
||||
bytesWritten DWORD ?
|
||||
|
||||
.code
|
||||
main PROC
|
||||
push -11 ; nStdHandle (STD_OUTPUT_HANDLE)
|
||||
call GetStdHandle@4
|
||||
|
||||
push 0 ; lpReserved
|
||||
push OFFSET bytesWritten ; lpNumberOfCharsWritten
|
||||
push LENGTHOF msg - 1 ; nNumberOfCharsToWrite
|
||||
push OFFSET msg ; *lpBuffer
|
||||
push eax ; hConsoleOutput
|
||||
call WriteConsoleA@20
|
||||
|
||||
push 0 ; uExitCode
|
||||
call ExitProcess@4
|
||||
main ENDP
|
||||
END main
|
||||
33
a/assembler_masm_win64.asm
Normal file
33
a/assembler_masm_win64.asm
Normal file
@@ -0,0 +1,33 @@
|
||||
; ---------------------------------------------
|
||||
; Hello World for Win64 Intel x64 Assembly
|
||||
;
|
||||
; by fruel (https://github.com/fruel)
|
||||
; 13 June 2016
|
||||
; ---------------------------------------------
|
||||
|
||||
GetStdHandle PROTO
|
||||
ExitProcess PROTO
|
||||
WriteConsoleA PROTO
|
||||
|
||||
.data
|
||||
msg BYTE "Hello World!",0
|
||||
bytesWritten DWORD ?
|
||||
|
||||
.code
|
||||
main PROC
|
||||
sub rsp, 5 * 8 ; reserve shadow space
|
||||
|
||||
mov rcx, -11 ; nStdHandle (STD_OUTPUT_HANDLE)
|
||||
call GetStdHandle
|
||||
|
||||
mov rcx, rax ; hConsoleOutput
|
||||
lea rdx, msg ; *lpBuffer
|
||||
mov r8, LENGTHOF msg - 1 ; nNumberOfCharsToWrite
|
||||
lea r9, bytesWritten ; lpNumberOfCharsWritten
|
||||
mov QWORD PTR [rsp + 4 * SIZEOF QWORD], 0 ; lpReserved
|
||||
call WriteConsoleA
|
||||
|
||||
mov rcx, 0 ; uExitCode
|
||||
call ExitProcess
|
||||
main ENDP
|
||||
END
|
||||
Reference in New Issue
Block a user