":" относится к сегменту с именем сегментного регистра (CS, DS, SS,
ES) до ":". Результат - ссылка на память со значением выражения после ":". Когда перекрытие сегмента используется в операнде инструкции, инструкция будет предварена соответствующим префиксом перекрытия сегмента, гарантируя, что будет выбран указанный сегмент.
OFFSET
Возвращает смещение (младшее слово) выражения, следующего за оператором. Результат - непосредственное значение.
SEG
Возвращает сегментную часть (старшее слово) выражения, следующего за оператором. Результат - непосредственное значение.
TYPE
Возвращает тип (размер в байтах) выражения, следующего за оператором. Тип непосредственного значения - 0.
PTR
Оператор приведения типа. Результат - ссылка на память со значением выражения, следующего за оператором и типом выражения, стоящего перед оператором.
"*"
Умножение. Оба выражения должны быть абсолютными непосредственными значениями и результат - абсолютное непосредственное значение.
/
Целое деление. Оба выражения должны быть абсолютными непосредственными значениями и результат - абсолютное непосредственное значение.
MOD
Остаток от целого деления. Оба выражения должны быть абсолютными непосредственными значениями и результат - абсолютное непосредственное значение.
SHL
Логический сдвиг влево. Оба выражения должны быть абсолютными непосредственными значениями и результат - абсолютное непосредственное значение.
SHR
Логический сдвиг вправо. Оба выражения должны быть абсолютными непосредственными значениями и результат - абсолютное непосредственное значение.
"+"
Сложение. Выражения могут быть непосредственными значениями или ссылками к памяти, но только одно из выражений может быть перемещаемым значением. Если одно из выражений - перемещаемое значение, то результат так же перемещаемое значение. Если одно из выражений - ссылка на память, то результат так же ссылка на память.
"-"
Вычитание. Первое выражение может быть любого класса, а второе выражение должно быть абсолютным непосредственным значением.
Результат того же класса, что и первое значение.
NOT
Побитовое отрицание. Выражение должно быть абсолютным непосредственным значением и результат - абсолютное непосредственное значение.
AND
Побитовое "и". Оба выражения должны быть абсолютными непосредственными значениями и результат - абсолютное непосредственное значение.
OR
Побитовое "или". Оба выражения должны быть абсолютными непосредственными значениями и результат - абсолютное непосредственное значение.
XOR
Побитовое исключающее "или". Оба выражения должны быть абсолютными непосредственными значениями и результат - абсолютное непосредственное значение.
Ассемблерные процедуры и функции.
До сих пор каждая конструкция asm...end была заключена в операторную часть begin...end. Ассемблерная директива Turbo Pascal
позволяет Вам написать процедуру или функцию полностью на встроенном Ассемблере, не требуя операторной части begin...end.
Пример ассемблерной функции:
function LongMul(X, Y: Integer): Longint; assembler;
asm
mov ax,X
imul Y
end;
Директива Ассемблера заставляет Turbo Pascal выполнить ряд оптимизаций при генерации кода:
- Компилятор не генерирует код для копирования значения параметров в локальные переменные. Это действует на все значения параметров строкового типа и другие значения параметров с размером не 1, 2 или 4 байт. Внутри процедуры или функции такие параметры должны интерпретироваться, как если бы они были var параметрами.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.