Встроенный ассемблер предусматривает множество операций,
подразделяемых по старшинству на 12 классов. В Таблице 24.5 пере-
числены операции, использующиеся в выражениях встроенного ассемб-
лера в порядке убывания их старшинства:
Встроенные операции ассемблера Таблица 24.5
┌──────────────────────────────┬────────────────────────────────┐
│ Операция │ Комментарий │
├──────────────────────────────┼────────────────────────────────┤
│ & │ Операция переопределения иден-│
│ │ тификатора. │
├──────────────────────────────┼────────────────────────────────┤
│ (), [], * │ Выбор элемента структуры. │
├──────────────────────────────┼────────────────────────────────┤
│ HIGH, LOW │ Унарные операции. │
│ +, - │ │
├──────────────────────────────┼────────────────────────────────┤
│ : │ Операция переопределения сег-│
│ │ мента. │
│ OFFSET, SEG, TYPE, PTR, │ │
│ *, /, MOD, SHL, SHR │ │
├──────────────────────────────┼────────────────────────────────┤
│ +, - │ Бинарные операции сложения/вы- │
│ │ читания. │
├──────────────────────────────┼────────────────────────────────┤
│ NOT, AND, OR, XOR │ Поразрядные операции. │
└──────────────────────────────┴────────────────────────────────┘
Определения операций встроенного ассемблера Таблица 24.6
┌──────┬────────────────────────────────────────────────────────┐
│Опер. │ Описание │
├──────┼────────────────────────────────────────────────────────┤
│ & │ Переопределение идентификатора. Идентификатор, непос-│
│ │ редственно следующий за амперсантом, интерпретируется,│
│ │ как идентификатор, определяемый пользователем, даже ес-│
│ │ ли он соответствует зарезервированному слову встроенно-│
│ │ го ассемблера. │
├──────┼────────────────────────────────────────────────────────┤
│ (...)│ Подвыражение. Выражение в скобках полностью вычисляет-│
│ │ ся, после чего интерпретируется, как один элемент. Вы-│
│ │ ражению в скобках может предшествовать другое выраже-│
│ │ ние. Результатом в этом случае будет сумма значений│
│ │ двух выражений с типом первого выражения. │
├──────┼────────────────────────────────────────────────────────┤
│ [...]│ Ссылка на память. Выражение в квадратных скобках пол-│
│ │ ностью вычисляется, после чего интерпретируется, как│
│ │ один элемент. Выражение в квадратных скобках может ком-│
│ │ бинироваться с регистрами BX, BP, SI, DI с помощью опе-│
│ │ рации +, что указывает на индексирование регистра ЦП.│
│ │ Выражению в квадратных скобках может предшествовать│
│ │ другое выражение. Результатом в этом случае будет сумма│
│ │ значений двух выражений с типом первого выражения. Ре-│
│ │ зультатом всегда будет ссылка на память. │
├──────┼────────────────────────────────────────────────────────┤
│ . │ Выбор элемента структуры. Результатом будет сумма выра-│
│ │ жения перед точкой и выражения после точки с типом вы-│
│ │ ражения после точки. Идентификаторы, относящиеся к об-│
│ │ ласти действия, и указанные в выражении перед точкой│
│ │ доступны в выражении после точки. │
├──────┼────────────────────────────────────────────────────────┤
│ HIGH │ Возвращает старшие 8 бит выражения размером в слово,│
│ │ следующего за операцией. Выражение должно представлять│
│ │ собой непосредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ LOW │ Возвращает младшие 8 бит выражения размером в слово,│
│ │ следующего за операцией. Выражение должно представлять│
│ │ собой непосредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ + │ Унарный плюс. Возвращает следующее за плюсом выражение│
│ │ без изменений. Выражение должно представлять собой не-│
│ │ посредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ - │ Унарный минус. Возвращает следующее за минусом выраже-│
│ │ ние с обратным знаком. Выражение должно представлять│
│ │ собой непосредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ : │ Переопределение сегмента. Указывает ассемблеру, что вы-│
│ │ ражение после двоеточия относится к сегменту, заданному│
│ │ именем сегментного регистра (CS, DS, SS или ES) перед│
│ │ двоеточием. Результатом является ссылка на память со│
│ │ значением выражения после двоеточия. Когда переопреде-│
│ │ ление сегмента используется в операнде инструкции, инс-│
│ │ трукции предшествует соответствующий префикс переопре-│
│ │ деления сегмента, обеспечивающий выбор указанного│
│ │ сегмента. │
├──────┼────────────────────────────────────────────────────────┤
│OFFSET│ Возвращает смещение следующего за операцией выражения│
│ │ (младшее слово). Результатом будет непосредственное│
│ │ значение. │
├──────┼────────────────────────────────────────────────────────┤
│ SEG │ Возвращает сегмент следующего за операцией выражения│
│ │ (старшее слово). Результатом будет непосредственное│
│ │ значение. │
├──────┼────────────────────────────────────────────────────────┤
│ TYPE │ Возвращает тип (размер в байтах) следующего за операци-│
│ │ ей выражения. Типом непосредственного значения будет 0.│
├──────┼────────────────────────────────────────────────────────┤
│ PTR │ Операция назначения типа. Результатом будет ссылка на│
│ │ память со значением выражения, следующего за операцией│
│ │ и типом выражения перед операцией. │
├──────┼────────────────────────────────────────────────────────┤
│ * │ Умножение. Оба выражения должны представлять собой не-│
│ │ посредственные абсолютные значения. Результатом будет│
│ │ непосредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ / │ Целочисленное деление. Оба выражения должны представ-│
│ │ лять собой непосредственные абсолютные значения. Ре-│
│ │ зультатом будет непосредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ MOD │ Остаток целочисленного деления. Оба выражения должны│
│ │ представлять собой непосредственные абсолютные значе-│
│ │ ния. Результатом будет непосредственное абсолютное зна-│
│ │ чение. │
├──────┼────────────────────────────────────────────────────────┤
│ SHL │ Логический сдвиг влево. Оба выражения должны представ-│
│ │ лять собой непосредственные абсолютные значения. Ре-│
│ │ зультатом будет непосредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ SHR │ Логический сдвиг вправо. Оба выражения должны представ-│
│ │ лять собой непосредственные абсолютные значения. Ре-│
│ │ зультатом будет непосредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ + │ Сложение. Выражения могут представлять собой непосредс-│
│ │ твенные абсолютные значения или ссылки на память, но│
│ │ перемещаемым значением может быть только одно выраже-│
│ │ ние. Если одно из выражений - перемещаемое значение, то│
│ │ результатом также будет перемещаемое значение. Если од-│
│ │ но из выражений - ссылка на память, то результатом так-│
│ │ же будет ссылка на память. │
├──────┼────────────────────────────────────────────────────────┤
│ - │ Вычитание. Первое выражение может иметь любой класс, а│
│ │ второе выражение должно быть непосредственным абсолют-│
│ │ ным выражением. Результат имеет тот же тип, что и пер-│
│ │ вое выражение. │
├──────┼────────────────────────────────────────────────────────┤
│ NOT │ Поразрядное отрицание. Выражение должно представлять│
│ │ собой непосредственные абсолютные значения. Результатом│
│ │ будет непосредственное абсолютное значение. │
├──────┼────────────────────────────────────────────────────────┤
│ AND │ Поразрядная операция AND (И). Оба выражения должны│
│ │ представлять собой непосредственные абсолютные значе-│
│ │ ния. Результатом будет непосредственное абсолютное зна-│
│ │ чение. │
├──────┼────────────────────────────────────────────────────────┤
│ OR │ Поразрядная операция OR (ИЛИ). Оба выражения должны│
│ │ представлять собой непосредственные абсолютные значе-│
│ │ ния. Результатом будет непосредственное абсолютное зна-│
│ │ чение. │
├──────┼────────────────────────────────────────────────────────┤
│ XOR │ Поразрядная операция XOR (исключающее ИЛИ). Оба выраже-│
│ │ ния должны представлять собой непосредственные абсолют-│
│ │ ные значения. Результатом будет непосредственное абсо-│
│ │ лютное значение. │
└──────┴────────────────────────────────────────────────────────┘