Русская документация для фриланесеров
Главная arrow Другие языки arrow Hello World на Assembler  
08.01.2009 г.
Главное меню
Главная
Поиск
PHP
.NET
Java
Ruby
C++
Delphi
Другие языки
Базы данных
Безопасность
Сети
ОС
Мобильные
Теория дизайна
WEB
Разное
Админцентр



автолаборатория, фургоны газ купить быстро. покупка диплома санкт-петербург

Hello World на Assembler Печать E-mail
Автор Westry   
17.03.2008 г.
Это, наверное, самая простая программа.
Используются всего две функции:
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

 
« Пред.   След. »
Webdesign by Webmedie.dk Webdesign by Webmedie.dk