Структура консольной программы на ассемблере на примере MASM32


         

Структура консольной программы
на ассемблере на примере 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 года.