div.main {margin-left: 20pt; margin-right: 20pt}
Hello World
Это, наверное,
самая простая программа.
Используются всего две
функции:
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
|