RosettaCodeData/Task/Include-a-file/X86-64-Assembly/include-a-file-3.x86-64
2026-04-30 12:34:36 -04:00

65 lines
1.8 KiB
Text

; include examples
; assembly X86 window
; download and install visual studio 2022 free site microsoft
; search and open X64 native tools command prompt
; compil and link program with this command :
; ml64 lenString.asm /link /ENTRY:main /SUBSYSTEM:console kernel32.lib user32.lib Shell32.lib
; this program respects the 64-bit calling convention :
; registers arguments : rcx rdx r8 r9 and stack
; registers saved : rbx,rbp,rdi,rsi, r12-r15
; ATTENTION les registres rax,rcx,rdx,r8-r11 peuvent être
; perdus lors d'un appel de fonction
;*********************************
; constantes
;*********************************
STD_OUTPUT_HANDLE equ -11
;*********************************
; macros
;*********************************
; macros file
include macrosInclude.asm
;*********************************
; user data
;*********************************
.data
szMessAccueil db "Hello word.",0
LGMESSACCUEIL equ $ - szMessAccueil
szCarriageReturn db 10,0
align 8
hConsole dq 0
sConvArea db 24
;*********************************
; user code fonction principale
;*********************************
.code
extern WriteFile : proc, GetStdHandle : proc, ExitProcess : proc
extern GetLastError : proc
main PROC public
displayLib "Program X86-64 start." ; call macro label display
mov rcx,offset szMessAccueil ; message address
mov rdx,LGMESSACCUEIL ; message length
call afficherConsole ; call display routine
mov rcx, offset szCarriageReturn ; message address
mov rdx,1 ; display 1 character
call afficherConsole
finProgramme:
displayLib "Programm end." ; call macro label display
sub rsp,28h
mov rcx,0 ; return code
call ExitProcess
main ENDP
;
; routines file
include routinesInclude.asm
end