Как написать hello world под windows на ассемблере?

Пишу hello world на ассемблере, но все гайды под DOS, мне нужен windows, пишу на FASM (в SASM), дайте код, пожалуйста, для изучения.

Вариант а: цепануть каких-нибудь функций из winapi и вызывать их из ассемблера
вариант б: выучить си, писать подпрограммы на ассемблере и вызывать их из программы на си с учётом соглашения о вызовах

я на линухе использовал второй варик, когда асм учил
а вообще если есть гайд под дос, то лучше просто dosbox настрой

В SASM элементарный вывод собственными макросами PRINT_DEC, PRINT_STRING и так далее Есть так-же ввод. Смотрите в Help

В остальном SASM - IDE и использует один из ассемблеров NASM, MASM, FASM, GAS соотв. Синтаксис будет отличаться. Ну или в принципе если настроить правильно опции - можно подставить другой.

Внизу скрин для NASM (он по умолчанию в SASM):

ЗЫЖ Увидел коммент про WinAPI - там большое кол-во функций управляющих ОС Windows, там и работа с окнами и с файлами и устройствами и так далее Их ОЧЕНЬ много. Проще смотреть MSDN. Н-р MessageBox типичная WinAPI функция вывода простейшего диалог. Окна.
https://docs.microsoft.com/...messagebox
Как написать hello world под windows на ассемблере

Format PE console
entry start
include 'include\win32a.inc'

section '.data' data readable writeable
msg: db 'hello world', 0

section '.text' code readable executable
start:
ccall [printf], msg
stdcall [ExitProcess], 0

section '.idata' import data readable
library kernel, 'kernel32.dll', msvcrt, 'msvcrt.dll'
import kernel, ExitProcess, 'ExitProcess'
import msvcrt, printf, 'printf'

Гугли hello world в машинных кодах.

Не могу сейчас принять участие в дискуссии - нет свободного времени. Очень скоро обязательно выскажу своё мнение.

Я извиняюсь, но, по-моему, Вы не правы. Давайте обсудим это.

Вы попали в самую точку. В этом что-то есть и это хорошая идея. Готов Вас поддержать.

Добавить комментарий