Masm32, как и другие ассемблеры, не различает строчные и прописные буквы ни в идентификаторах, ни в служебных словах. Однако при работе в ассембере обычно устанавливают опцию различия строчных и прописных символов в идентификаторах (OPTION CASEMAP:NONE), поскольку эти различия существенны при вызове функций API.
Программа на ассемблере MASM32 состоит из сегментов следующих типов:
· сегмент кода, содержащий собственно текст программы;
· сегменты данных:
Ø сегмент констант, содержащий директивы объявления данных, изменение которых в программе не предполагается;
Ø сегмент инициализированных данных, содержащий директивы объявление данных, для которых заданы начальные значения – память под эти данные распределяется во время ассемблирования программы;
Ø сегмент неинициализированных данных, содержащий директивы объявление данных – память под эти данные отводится во время загрузки программы на выполнение;
· сегмент стека, определяемый для ассемблера по заданному размеру.
В программе сегменты описываются полными или сокращенными директивами.
Сокращенные директивы описания сегмента кодируются следующим образом:
1. .CODE [Имя сегмента] – начало или продолжение сегмента кода;
2. .MODEL Модель [Модификатор][,Язык][,Модификатор языка]
где
Модель– определяет набор и типы сегментов; при32-х разрядной адресации используется единственная модель FLAT;
Модификатор – определяет тип адресации: use16, use32, dos;
Язык и Модификатор языка– определяют особенности передачи параметров при использовании разноязыковых модулей:
С, PASCAL, SYSCALL, STDCALL;
3. .DATA– начало или продолжение сегмента инициализированных данных;
4. .DATA?– начало или продолжение сегмента неинициализированных данных;
5. .CONST– начало или продолжение сегмента неизменяемых данных;
6. .STACK [Размер] – начало или продолжение сегмента стека.
В среде RadAsm специально для выполнения лабораторных работ создана заготовка консольной программы conapp.tpl, которая выглядит следующим образом:
.586; использование набора команд i80586
.MODEL flat, stdcall; модель памяти и тип передачи параметров
OPTION CASEMAP:NONE; чувствительность идентификаторов к регистру
Include kernel32.inc; подключение файлов описаний библиотечных п/п