· имя метки – идентификатор, значением которого является адрес первого байта того предложения исходного текста программы, которое обозначает;
· имя – идентификатор, отличающий данную директиву от однородных именных директив. В результате обработки ассемблером определенной директивы этому имени могут быть присвоены определенные характеристики;
· код операции (КОП) и директива – это мнемонические обозначения соответствующей машинной команды, макрокоманды или директивы транслятора;
· операнды – части команды, макрокоманды или директивы ассемблера, обозначающие объекты, над которыми производятся действия. Операнды ассемблера описываются выражениями с числовыми и текстовыми константами, метками и идентификаторами переменных с использованием знаков операций и некоторых зарезервированных слов.
Для использования диаграмм нужно найти и затем пройти путь от входа диаграмм (слева) к ее выходу (направо). Если такой путь существует, то предложение или конструкция синтаксически правильны. Если такого пути нет, значит эту конструкцию компилятор не примет. При работе с синтаксическими диаграммами надо обращать внимание на направление обхода указываемое стрелками, так как среди путей могут быть и такие, по которым можно идти справа налево. По сути, синтаксические диаграммы отражают логику работы транслятора при разборе входных предложений программы.
Допустимыми символами при написании текста программ являются:
1. Все латинские буквы A-Z, a-z. При этом заглавные и прописные буквы считаются эквивалентными.
- Постоянные или непосредственные операнды – число, строка, имя или выражение, имеющие некоторое фиксированное значение.
- Адресные операнды – задают физическое расположение операнда в память с помощью указания двух составляющих адреса: сегмента и смещения
- Перемещаемые операнды - любые символьные имена, представляющие некоторые адреса памяти. Эти адреса могут обозначать местоположение в памяти некоторой инструкции (если операнд – метка) или данных (если операнд – имя области памяти в сегменте данных).
- Счетчик адреса $ - когда транслятор ассемблера встречает в исходной программе этот символ, то он подставляет вместо него текущее значение счетчика адреса. Значение счетчика адреса, или как его иногда называют счетчика размещения, представляет собой смещение текущей машинной команды относительно начала сегмента кода.
- Регистровый операнд – это просто имя регистра. В программе на ассемблере можно использовать имена всех регистров общего назначения и большинства системных регистров.
- Базовый и индексные операнды. Этот тип операндов используется для реализации косвенной базовой, косвенной индексной адресации или их комбинации и расширений.
- Структурные операнды используются для доступа к конкретному элементу сложного типа данных, называемого структурой.
- Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.
Операнды являются элементарными компонентами, из которых формируется часть машинной команды, обозначающая объекты, над которыми выполняется операция. В более общем случае операнды могут входить как составные части в более сложные образования, называемые выражениями. Выражения представляют собой комбинации операндов и операторов, рассматриваемые как единое целое. Результатом вычисления выражения может быть адрес некоторой ячейки памяти или некоторое константное значение.
Возможные типы операторов ассемблера:
- Арифметические операторы. К ним относятся унарные операторы «+» и «-», бинарные «+» и «-», операторы умножения «*», целочисленного деления «/», получения остатка от деления «mod».
- Операторы сдвига выполняют сдвиг выражения на указанное количество разрядов Синтаксис операторов сдвига:
Выражение shr (shl) число сдвигаемых разрядов
- Операторы сравнения (возвращают значения «истина» или «ложь») предназначены для формирования логических выражений. Логическое значение «истина» соответствует цифровой единице, а «ложь» – нулю.
Таблица 1Операторы сравнения.
Оператор
Значение
eq
ИСТИНА, если выражение_1 равно выражение_2
ne
ИСТИНА, если выражение_1 не равно выражение_2
it
ИСТИНА, если выражение_1 меньше выражение_2
le
ИСТИНА, если выражение_1 меньше или равно выражение_2
gt
ИСТИНА, если выражение_1 больше выражение_2
ge
ИСТИНА, если выражение_1 больше или равно выражение_2
- Логические операторы выполняют над выражениями побитовые операции. Выражения должны быть абсолютными, то есть такими, численное значение которых может быть вычислено транслятором.
Синтаксис логических операторов:
Выражение_1
not Выражение_2
and not
or
xor
- Индексный оператор [ ] .Наличие скобок транслятор воспринимает как указание сложить значение выражение_1 за этими скобками с выражением_2, заключенным в скобки.
Синтаксис индексного оператора.
[ Выражение_2 ]
Выражение_1
- Оператор переопределения типа ptr применяется для переопределения или уточнения типа метки или переменной, определяемых выражением. Тип может применять одно из следующих значений: byte, word, dword, qword, tbyte, near, fer.