Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Анатолий Кличко Знаток (255), на голосовании 5 лет назад
Пишу hello world на ассемблере, но все гайды под DOS,мне нужен windows,пишу на FASM (в SASM),дайте код, пожалуйста, для изучения.
Голосование за лучший ответ
user49912 Оракул (51292) 5 лет назад
вариант а: цепануть каких-нибудь функций из winapi и вызывать их из ассемблера
вариант б: выучить си, писать подпрограммы на ассемблере и вызывать их из программы на си с учётом соглашения о вызовах

я на линухе использовал второй варик, когда асм учил
а вообще если есть гайд под дос, то лучше просто dosbox настрой
Анатолий КличкоЗнаток (255) 5 лет назад
А че за функции winapi,просто их очень много и хотелось бы поконкретнее.
user49912 Оракул (51292) зависит от того, как ты планируешь свой хеллоу ворлд выводить можно messagebox из user32.dll запилить, можно тупо в файл вывести через createfile и т. д. по списку это из того что попроще как с консолькой в винапи работать, я, увы, не в курсе
... Гений (84997) 5 лет назад
В SASM элементарный вывод собственными макросами PRINT_DEC, PRINT_STRING и т. д. Есть так-же ввод. Смотрите в Help

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

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

ЗЫЖ Увидел коммент про WinAPI - там большое кол-во функций управляющих ОС Windows, там и работа с окнами и с файлами и устройствами и т. д. Их ОЧЕНЬ много. Проще смотреть MSDN. Н-р MessageBox типичная WinAPI функция вывода простейшего диалог. окна.
https://docs.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-messagebox
East RX Просветленный (24495) 5 лет назад
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'
a1987zz Мудрец (13976) 5 лет назад
Гугли hello world в машинных кодах.
Похожие вопросы