Этот макрос показывает сообщения в ДОС программах. Когда аргумент этого макроса — некоторая метка, отображается строка с этого адреса, но когда аргумент — указанная строка, создается код правильно обрабатывающий эту строку.
Директива struc
struc
должен быть предварительно задан меткой (как при определении данных). Эта метка будет также содержаться в начале каждого имени, начинающегося с точки в содержании макроса.Макрос, определенный с помощью директивы struc
Все правила относительно стандартных макрокоманд относятся и к макросам структур.
Вот пример структуры:
struc point x,y
{
.x dw x
.y dw y
}
Например my point 7,11
my
, содержащую две переменные: my.x
с величиной 7
и my.y
с величиной 11
.Следующий пример показывает, как расширить директиву db
struc db [data]
{
common
label .data byte
db data
.size = $-.data
}
С этим макросом msg db 'Hello!',13,10
msg.size
, равную размеру определенных данных в байтах и также дополнительную метку msg.data
, которая будет указывать на данные типа байт.Определение структур данных, к которым обращаются, используя регистры или абсолютные значения может быть сделано через директиву virtual
Директива format
format binary
.Директивы use16
use32
вынуждают ассемблер компилировать 16 или 32-разрядный код, опуская установку по умолчанию для выбранного выходного формата.Директива org
Ниже описаны различные форматы с директивами, специфичными для этих форматов.
Для выбора выходного формата MZ, используйте директиву format MZ
Директива segment
use16
, или use32
что определит, будет ли код в сегменте 16 или 32 битным. Начало сегмента выравнивается по параграфам (16 байт). Все метки, определенные после этого будут иметь величины относительно начала сегмента.Директива entry
Директива stack
Директива heap
heap 0
чтобы разместить только действительно необходимую программе память. Размер кучи по умолчанию — 65535.Чтобы выбрать формат PE, используйте директиву format PE
console
, GUI
или native
оператор выбирает целевую подсистему (значение с плавающей запятой определяет версию подсистемы), DLL создает файл библиотеки. Потом может идти оператор at
и численное выражение, определяющее, базу PE образа и затем произвольно on оператор, сопровождаемый строкой в кавычках, содержащей имя файла содержащего MZ заглушку для PE программы (если указанный файл не формата MZ он берется как обычный двоичный файл и конвертируется в MZ). Установка кода по умолчанию для этого формата — 32 бита.Директива section
code
, data
, readable
, writeable
, executable
, shareable и discardable
. Среди флагов также могут быть определены специальные PE идентификаторы данных, чтобы создать сегмент специальные данных, доступные идентификаторы export
, import
, resource
и fixups
. Когда выбрано определение данных fixups
, они создаются автоматически и не требуют дополнительной информации. Начало сегмента выравнивается по страницам (4096 байт).