Модификаторы

В операторах и псевдооператорах языка ассемблер иногда используются модификаторы, которые определяют ту или иную операцию, учитываемую при трансляции программы. Существует 5 видов модификаторов: арифметические, логические, отношений, возвращения значений и присваивания атрибутов. Наиболее часто используются модификаторы (mdf):

l Арифметические модификаторы: «+» — сложить, «-» — вычесть, «*» — умножить, «/» — разделить, mod — остаток от деления и т. д. Формат: opr mdf opr.

l Логические модификаторы: and — «и», or — «или», not — «не», и xor — исключающее «или». Формат: opr mdf opr.

l Модификаторы отношения: eq — совпадения, nq — несовпадения, lt — меньше, gt — больше, le — меньше или равно, ge — больше или равно. Формат: opr mdf opr.

l Модификаторы, возвращающие значения:

l $ — возвращает значение смещения адреса текущего оператора;

l seg — возвращает адрес сегмента адреса метки или переменной;

l offset — возвращает смещение адреса метки или переменной;

l length — возвращает длину операнда в единицах определения (байтах или словах);

l type — возвращает атрибут типа переменной (1, если byte; 2 — word, 3 — dword) или метки (1 — near, 3 — far);

l size — возвращает произведение length*type. Формат: mdf opr.

l Модификаторы присваивания атрибута:

l ptr — изменяет атрибут типа (byte, word или dword) операнда или атрибут дистанции (near или far) адресного операнда. Формат: тип ptr opr. (Здесь: тип — новый атрибут, opr — идентификатор операнда, чей атрибут должен быть изменен.);

l ds:, es:, cs:, ss: — изменяет атрибут сегмента адреса. Формат: rsegm:адрес. (Адрес может быть задан именем сегмента, переменной, меткой или адресным выражением.);

l short — дополняет атрибут near метки оператора переxoда, указывает, что переход осуществляется на расстояние не более ±128 байтов от текущей команды. Формат: short метка;

l high — возвращает старший байт 16-битового значения opr. Формат: high opr;

l low — возвращает младший байт 16-битового значения opr. Формат: low opr.

В программах используются:

l атрибуты дистанции:

l near — близкий, в пределах одного сегмента;

l far — далекий, за пределами одного сегмента;

l атрибуты типа данных:

l byte — длиной 1 байт;

l word — длиной 2 байта;

l dword — длиной 4 байта.

Адресация регистров и ячеек памяти в ассемблере

При программировании на языке ассемблер используются неявный, непосредственный, прямой и косвенный методы адресации; причем для адресации регистров в МПП — только прямой, а для адресации ячеек ОП — прямой, косвенный и смешанный непосредственный методы. Рассмотрим их на примере адресации второго операнда в команде MOV (переслать).