╩юьрэф√ ьшъЁюяЁюЎхёёюЁэющ Єхїэшъш

         

DATASEG



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

            Метка - это имя ( точнее адрес) ячейки памяти, содержимое которой считается машинной командой. Напомним о метках следующее. Чаще всего метка определяется указанием в поле метки имени с последующим двоеточием. Но метки могут определяться и без завершающего двоеточия, например, директивами LABEL и в определениях процедур. Метки имеют 4 атрибута: сегмент, смещение, расстояние (тип NEAR или FAR ), предположение о регистре CS.

            Числовые выражения с помощью директивы EQU могут обозначаться символическими именами. В этом случае имя заменяет число и может быть названо "числовым именем". Числовое имя имеет тип NUMBER (число). Соответственно двум классам символических имен выделяются выражения: адресные и числовые.

            Адресным называется выражение которое вычисляется для получения адреса памяти (данных и команд). Адресные выражения имеют обязательные атрибуты: сегмент, смещение, тип. Каждый из атрибутов адресного выражения является числом, но само выражение числом не является.

            Числовым называется выражение, в результате вычисления которого получается число. Например, в команде

 

                       MOV   AL,MUR

символическое имя MUR является адресным выражением, поэтому эта команда загружает в регистр AL содержимое из ячейки памяти с адресом MUR .

В команде

                                    MOV  АL, OFFSET MUR



Выражение OFFSET MUR использует встроенный оператор OFFSET (смещение), который формирует в виде числа смещение адресного выражения MUR. Следовательно, эта команда загрузит в регистр АL смещение адресного выражения MUR.

            Таким образом, использование адресного выражения в поле операнда команд преобразований данных означает , что операндом будет содержимое адресуемой ячейки памяти. Адресное выражение в поле операнда команд передачи управления определяет встраиваемый в команду адрес перехода.


Значение числового выражения (число), заданного в команде, превращается в непосредственный операнд.

Директивы управления сегментами.

Директивы SEGMENT/ENDS.

            Напомним, что физический адрес формируется при сложении смещения и умноженного на 16 сегментного адреса, хранящегося в одном из сегментных регистров: СS (для сегмента кода), DS (для сегмента данных), SS(для сегмента стека), ES (для сегмента дополнительных данных).

            Структура сегмента кода имеет вид:

           

Имя сегмента                        SEGMENT     [<список атрибутов>]

                                   Команды и относящиеся к

                                   ним директивы.

Имя  сегмента           ENDS

Список атрибутов является необязательным, но он необходим, если программа состоит из нескольких модулей.

Структура сегмента данных имеет вид:

Имя сегмента                        SEGMENT     [<список атрибутов>]

                                   Директивы определения памяти,

распределения и выравнивания

Имя  сегмента           ENDS

Именем сегмента может быть любой допустимый идентификатор. Назначение сегментов сегментным регистрам осуществляется директивами.

Директива ASSUME.

Формат директивы имеет вид:

            ASSUME        НАЗНАЧЕНИЕ,.., НАЗНАЧЕНИЕ,

где НАЗНАЧЕНИЕ имеет формат:

            Имя сегментного регистра: Имя сегмента.

Пример определения сегмента кода:

CODSEG                   SEGMENT     ; Сегменту COD назначим сегментный регистр CS


╤юфхЁцрэшх Ёрчфхыр