Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Ассемблеру.docx
Скачиваний:
12
Добавлен:
09.11.2018
Размер:
125.1 Кб
Скачать

Бинарная операция -

Вычитание двух выражений. Первое выражение может быть любого класса, а вто­рое должно быть абсолютным непосредственным значением. Результат относится к тому же классу, что и первое выражение.

Побитовые операции not, and, or, xor

Имеют такой же смысл, что и одноименные операции Турбо Паскаля над целыми числами. Оба выражения должны иметь непосредственные абсолютные значениям такое же значение имеет и результат операции.

    1. Директивы ассемблера

Встроенный ассемблер не поддерживает никакие директивы, обычно используемые в других ассемблерах, за исключением DB, DW, DD. Структура директив такова:

Dx <константа> [,<константа>,...,<константа>]

Здесь Dx - DB, DW или DD;

<константа> - ассемблерная константа или константное выражение.

DB определяет цепочку байт, DW- слов, DD - двойных слов. Например:

db 'Турбо Паскаль ', 13, 10

dw 0,$ FFFF, NearProc

dd 'ABCD',999999999, FarProc

В качестве константных выражений разрешается использовать любые ассемблерной константы со значением, не выходящим из диапазона байта (DB), слова (DW) или двойного слова (DD). В любой директиве можно определять строковую константу, которая приводит к побайтовому заполнению памяти ASCIl-кодами символов. Поскольку слово (двойное слово) размещается в памяти, начиная со своего младшего байта, старший (старшие) байт в директивах DW и DD при размещении строкой константы может остаться неопределенным и заполняется нулем. Например, два следующих объявления эквивалентны:

dw ‘5’ {$35 - ASCII-код символа '5'}

dw $35

В директивах DW и DD разрешается также указывать имена, которые в этом случае интерпретируются как адреса соответствующих объектов, причем для DW это - ближ­ний адрес (смещение), а для DD - дальний. Например:

dw X (Размещает смещение переменной X}

dd Proc {Размещает FAR-адрес процедуры Proc}

Данные, определяемые директивами Dx, всегда размещаются в текущем кодовом сегменте. Разместить таким образом данные в сегменте данных (т.е. определить кон­станту или типизированную константу) невозможно - для этого используются стан­дартные средства Турбо Паскаля.

15