Директивы сегментации. Напомним, что микропроцессор имеет шесть сегментных регистров, посредством которых может одновременно работать:

 

Напомним, что микропроцессор имеет шесть сегментных регистров, посредством которых может одновременно работать:

•с одним сегментом кода;

•с одним сегментом стека;

•с одним сегментом данных;

•с тремя дополнительными сегментами данных.

 

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

 

Важно отметить, что функциональное назначение сегмента несколько шире, чем простое разбиение программы на блоки кода, данных и стека. Сегментация является частью более общего механизма, связанного с концепцией модульного программирования. Она предполагает унификацию оформления объектных модулей, создаваемых компилятором, в том числе с разных языков программирования. Это позволяет объединять программы, написанные на разных языках.

Сегменты на ассемблере описываются с помощью директивы SEGMENT.

Синтаксическое описание сегмента представляет собой следующую конструкцию

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

[класс сегмента] [ тип размера сегмента]

<тело сегмента>

<имя сегмента> ENDS

У параметров много возможных значений.

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

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

ASSUME <сегментный регистр>: <имя сегмента>

Директивы SEGMENT и ASSUME - стандартные директивы сегментации.

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

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

Трансляторы MASM и TASM предоставляют возможность использования упрощенных директив сегментации (вместо SEGMENT).

! Стандартные и упрощенные директивы сегментации не исключают друг друга.

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

! Упрощенные директивы целесообразно использовать

1) для простых программ

2) программ, предназначенных для связывания с программными модулями, написанными на языках высокого уровня (это позволяет компоновщику эффективно связывать модули разных языков за счет стандартизации связей и управления).

 








Дата добавления: 2016-02-20; просмотров: 1128;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.