Минимальная ассемблерная программа выглядит следующим образом:
section .text global main main: ; вместо этого комментария здесь должен быть код ret
В программе содержится только функция main
, которая ничего не делает.
Эталонная программа “Hello world!” имеет следующий вид:
extern io_print_string ; (1) ; (2) section .data ; (3) str: db `Hello, World!\n`, 0 ; (4) ; (5) section .text ; (6) ; (7) global main ; (8) main: ; (9) MOV EAX, str ; (10) CALL io_print_string ; (11) MOV EAX, 0 ; (12) RET ; (13)
Замечание. “Ошибка новичков” написать в секции данных следующий код:
.data str db 'Hello, world!', 0
Ассемблер выдаст на такое сообщение об ошибке. Причина – существование ассемблерной инструкции с кодом str. При отсутствии двоеточия лексема рассматривается не как метка, а как идентификатор, который сопоставляется в первую очередь с опкодами ассемблерных команд.