Существует несколько специальных инструкций, которые не входят в стандартный набор команд микропроцессора Intel 8080, но которые можно использовать в программах, ассемблируемых с помощью команды ASM . Этими инструкциями являются так называемые ’’директивы ассемблера”. Эти инструкции используются для управления процессом ассемблирования
и, следовательно, оказывают влияние на формирование результирующего машинного кода.
Строки исходного текста, содержащие директивы ассемблера, имеют в основном тот же формат, что и строки с обычными операторами. Имя директивы размещается в поле операции соответствующей исходной строки. Может сложиться впечатление, что эти директивы используются и другими ассемблерами. Важно, однако, знать, что ассемблер ”ASM” обрабатывает только те директивы, которые описаны в этом разделе.
ORG. Директива ORG (от английского Origin — начальный адрес) указывает программе ’’ASM” адрес в памяти, начиная с которого необходимо размещать результаты ассемблирования последующих операторов. Исходная строка, содержащая директиву ORG, должна иметь следующий формат:
LABEL ORG EXPRESSION ; COMMENTS.
Здесь поле ’’EXPRESSION” содержит адрес памяти следующей инструкции или директивы. Необязательное поле ’’LABEL” может содержать символическое имя, которому будет присвоено значение выражения, заданного в поле ’’EXPRESSION”. В программе директиву ORG можно использовать произвольное число раз.
EQU. Директива EQU (от английского Equate —приравнять) используется для присваивания символическому имени определенного значения. Исходная строка, содержащая эту директиву, имеет следующий формат:
LABEL EQU EXPRESSION ; COMMENTS.
Здесь поле ’’EXPRESSION” может содержать любое допустимое число, адрес, константу или выражение. В исходных строках, содержащих директиву ORG, поля ’’LABEL” и ’’EXPRESSION” являются обязательными. Как указывалось выше, поле ’’EXPRESSION” наряду с операторами и числовыми константами может содержать символические имена.
SET. Директива SET (от английского Set — назначить) используется для присваивания данному символическому имени определенного значения. Эту директиву можно, кроме того, использовать для переобозначения символического имени (с помощью директивы EQU значение символическому имени может быть присвоено только один раз). Одно и то же символическое имя может использоваться совместно с директивой SET несколько раз. Исходная строка с директивой SET должна иметь следующий формат:
LABEL SET EXPRESSION ; COMMENTS.
В исходной строке, содержащей эту директиву, оба поля ’’LABEL” и ’’EXPRESSION” являются обязательными.
IF и ENDIF. Директивы IF (от английского If — если) и ENDIF (от английского ’’End IF” — ’’Конец IF”) описывают соответственно начало и конец секции исходной программы, которую необходимо ассемблировать, если только оператор IF правильно задан в исходной строке. Исходная строка с директивой IF является первой строкой данной секции, а строка с директивой ENDIF — последней. Эти директивы вводятся в следующем формате:
IF EXPRESSION
(исходные строки, ассемблируемые по условию)
ENDIF
В поле ’’EXPRESSION” вводятся условия, при которых оператор IF должен быть выполнен. Если поле ’’EXPRESSION” содержит все нули, то все строки, расположенные между операторами IF и ENDIF, игнорируются. Если в этом поле содержится величина больше нуля, то обусловленные строки будут ассемблироваться.
DB, DW и DS. Существует три директивы, которые используются для организации в оперативной памяти областей под данные. Этими директивами являются:
DB. Директива DB (от английского Define Byte — определить байт) используется для ’’побайтного” описания областей данных. Исходные строки, содержащие эту директиву, имеют следующий формат:
LABEL DB ЕХР1, ЕХР2, ЕХРЗ ; COMMENTS.
Поле ”ЕХР1, ЕХР2, ЕХРЗ” может содержать произвольное количество выражений, разделенных запятой. При обработке такой исходной строки программа ’’ASM” последовательно вычисляет значение каждого выражения и запоминает их в 8-битовом (1 байт) формате в очередной ячейке памяти. В исходной строке, содержащей директиву DB, оба поля ’’LABEL” и ’’COMMENTS” являются необязательными.