Это, наверное, самая простая программа.
Используются всего две функции:
   MessageBoxA  из USER32.DLL и
   ExitProcess  из KERNEL32.DLL.
Суффикс A у MessageBox означает, что функция работает с однобайтовыми
ANSI строками. Для двубайтных Unicode строк - суффикс W, e.g. MessageBoxW.
Сама функция MessageBox выводит сообщение в отдельном оконе, ее прототип:

int MessageBox(

  HWND hWnd,

  LPCSTR lpText,

  LPCSTR lpCaption,

  UINT uType

);

Параметры:
 hWnd - идентификатор окна, из которого вызывается MessageBox
 lpText - указатель на null-terminated строку, содержущая  текст сообщения
 lpCaption - указатель на null-terminated строку, содержущая  заголовок сообщения
 uType - вид диалогового окна

Функция ExitProcess заканчивает процесс и все образованные процессы из этого процесса.

VOID ExitProcess(

  UINT uExitCode,

);

 uExitCode - код выхода

Параметры функции передаются по следующей схеме:

    AnyFunction(first_param, second_param, third_param);



    push    [third_param]

    push    [second_param]

    push    [first_param]

    call    AnyFunction

или
    call    AnyFunction, [first_param], [second_param], [third_param]


Вот сама программа:

.386

.model flat



extrn            MessageBoxA:proc

extrn            ExitProcess:proc



.data



mb_text          db 'Hello, World!',0

mb_caption       db 'My first program',0



.code

start:

                 push   0

                 push   offset mb_caption

                 push   offset mb_text

                 push   0

                 call   MessageBoxA

                 push   0

                 call   ExitProcess



ends

end start

Программу можно взять здесь

Используются технологии uCoz