Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
54
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

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

Встроенный ассемблер предусматривает множество операций,

подразделяемых по старшинству на 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------+---------------------------------------------------------

Соседние файлы в предмете Программирование на Pascal