Вчера на группе идиотов "Типичный погромизд" выложили картинку, но потом удалили. Мне захотелось вспомнить старое, и написать консольный выхлоп на Flat Assembler. Получилось не сразу, так как забыл тонкости программирования:
format PE64 console
include 'win64wx.inc'
entry start
section '.text' code readable executable
start:
; Get a handle to the standard output
mov rcx,STD_OUTPUT_HANDLE
call [GetStdHandle]
; Write the message to the console
mov rcx,rax
lea rdx,[message]
mov r8d,message_length
lea r9,[rsp+4*8]
mov qword[rsp+4*8],0
call [WriteConsoleW]
; Exit the process
mov rcx,rax
call [ExitProcess]
section '.data'data readable writeable
message du 'Hello, World!', 0
message_length = $ - message - 1 ; Calculate length, excluding null terminator
section '.idata' import data readable
library kernel32, 'kernel32.dll'
import kernel32, \
GetStdHandle, 'GetStdHandle', \
WriteConsoleW, 'WriteConsoleW', \
ExitProcess, 'ExitProcess'
Остальные версии тут.
Комментарии
Отправить комментарий