Структура консольной программы
на ассемблере на примере MASM32
Степень завершённости урока: 50%
Структура консольной программы на ассемблере состоит из нескольких частей.
Строчка ".686" является директивой, которая указывает, что программа предназначена для процессоров с архитектурой x86 с определёнными инструкциями.
КОД:
.686
Следующая строка ".model flat, stdcall" представлена двумя директивами. Первая указывает на использование плоской модели памяти, вторая - директива вызова функций "stdcall" - определяет порядок передачи аргументов и возврата значения функции.
КОД:
.686
.model flat, stdcall
Строка "option casemap:none" включает регистронезависимый режим при работе с переменными, функциями и другими идентификаторами, при котором нет разницы между большими и маленькими буквами.
КОД:
.686
.model flat, stdcall
option casemap:none
Следующие три строки, начинающиеся со слов include и includelib, это директивы для подключения заголовочных файлов, в которых содержатся функции и константы для работы с операционной системой Windows.
КОД:
.686
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
Полностью код выглядит следующим образом.
КОД:
.686
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
szHello db 'Hello!',0
.code
start:
invoke WriteConsoleA, GetStdHandle(STD_OUTPUT_HANDLE), addr szHello, sizeof szHello, NULL, NULL
invoke ExitProcess, 0
end start
Страница обновлена 26 марта 2023 года.