Win32asm обучение


    d8ef8794     

invoke MessageBox, NULL, ADDR MsgText,


.code
start:

invoke MessageBox, NULL, ADDR MsgText, ADDR MsgTitle, MB_OK + MB_ICONINFORMATION
end start
Добавьте вышеприведенный код к вашему файлу first.asm
Мы также добавили метку начала. Если бы вы ассемблировали сейчас нашу программу и запустили ее, она бы отобразила messagebox и вероятно повисла (или выдала ошибку) после того, как вы нажали OK. Это произойдет потому, что программа еще не закончена, и процессор начнет выполнять код, который находится после кода messagebox (а там, в данном случае, может быть всякий мусор). Программы в windows завершаются функцией ExitProcess:
Функция ExitProcess завершает процесс и все его нити.
VOID ExitProcess(
UINT uExitCode // код выхода для всех нитей
);
Мы можем использовать 0, как код выхода:
Замените ваш код на этот:
.code
start:

invoke MessageBox, NULL, ADDR MsgText, ADDR MsgTitle, MB_OK + MB_ICONINFORMATION
invoke ExitProcess, NULL
end start
12.4 - Шаг 4
Вот, та программа, которая у нас получилась:
.486
.model flat, stdcall
option casemap:none
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\windows.inc
.data
MsgText db "Hello world!",0
MsgTitle db "This is a messagebox",0
.code
start:
invoke MessageBox, NULL, ADDR MsgText, ADDR MsgTitle, MB_OK or MB_ICONINFORMATION
invoke ExitProcess, NULL
end start
12.5 - Шаг 5
Теперь создадим исполняемую программу из этого исходного текста.
Создайте новый текстовый файл и назовите его make.bat со следующим содержанием:
@echo off
ml /c /coff first.asm
link /subsystem:windows first.obj
pause>nul
Анализ:
ml /c /coff first.asm
ml это макроассемблер (masm). Masm создаст необработанный код программы. Опции означают:
/c = Ассемблирование без линковки (компоновки). (потому, что мы используем link.exe для этого)
/coff = генерировать объектный файл COFF-формата. Это стандарт для программ windows.
first.asm = ассемблируемый файл first.asm
link /subsystem:windows first.objЛинкер (компоновщик) берет объектный файл и связывает его со всеми импортированными dll и библиотеками. Опции:
/subsystem:windows = создать исполняемый файл для windows.
first.obj = Линковать first.obj

Теперь, если вы сделали все правильно и запустите файл make.bat, то здесь появится файл first.exe. Запустите его и увидите результат.
[наверх]

Содержание  Назад  Вперед