Руководство по языку B.Pascal 7

       

Операции в выражениях


Встроенный ассемблер предусматривает множество операций, подразделяемых по старшинству на 12 классов. В Таблице 24.5 пере- числены операции, использующиеся в выражениях встроенного ассемб- лера в порядке убывания их старшинства:

Встроенные операции ассемблера Таблица 24.5 -------------------------------T-------------------------------- ¦ Операция ¦ Комментарий ¦ +------------------------------+--------------------------------+ ¦ & ¦ Операция переопределения иден-¦ ¦ ¦ тификатора. ¦ +------------------------------+--------------------------------+ ¦ (), [], * ¦ Выбор элемента структуры. ¦ +------------------------------+--------------------------------+ ¦ HIGH, LOW ¦ Унарные операции. ¦ ¦ +, - ¦ ¦ +------------------------------+--------------------------------+ ¦ : ¦ Операция переопределения сег-¦ ¦ ¦ мента. ¦ ¦ OFFSET, SEG, TYPE, PTR, ¦ ¦ ¦ *, /, MOD, SHL, SHR ¦ ¦ +------------------------------+--------------------------------+ ¦ +, - ¦ Бинарные операции сложения/вы- ¦ ¦ ¦ читания. ¦ +------------------------------+--------------------------------+ ¦ NOT, AND, OR, XOR ¦ Поразрядные операции. ¦ L------------------------------+---------------------------------

Определения операций встроенного ассемблера Таблица 24.6 -------T-------------------------------------------------------- ¦Опер. ¦ Описание ¦ +------+--------------------------------------------------------+ ¦ & ¦ Переопределение идентификатора. Идентификатор, непос-¦ ¦ ¦ редственно следующий за амперсантом, интерпретируется,¦ ¦ ¦ как идентификатор, определяемый пользователем, даже ес-¦ ¦ ¦ ли он соответствует зарезервированному слову встроенно-¦ ¦ ¦ го ассемблера. ¦ +------+--------------------------------------------------------+ ¦ (...)¦ Подвыражение. Выражение в скобках полностью вычисляет-¦ ¦ ¦ ся, после чего интерпретируется, как один элемент. Вы-¦ ¦ ¦ ражению в скобках может предшествовать другое выраже-¦ ¦ ¦ ние. Результатом в этом случае будет сумма значений¦ ¦ ¦ двух выражений с типом первого выражения. ¦ +------+--------------------------------------------------------+ ¦ [...]¦ Ссылка на память. Выражение в квадратных скобках пол-¦ ¦ ¦ ностью вычисляется, после чего интерпретируется, как¦ ¦ ¦ один элемент. Выражение в квадратных скобках может ком-¦ ¦ ¦ бинироваться с регистрами 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 (исключающее ИЛИ). Оба выраже-¦ ¦ ¦ ния должны представлять собой непосредственные абсолют-¦ ¦ ¦ ные значения. Результатом будет непосредственное абсо-¦ ¦ ¦ лютное значение. ¦ L------+---------------------------------------------------------



Содержание раздела