Assembler для начинающих


         

Сегменты - часть 11


      При втором методе распределиня памяти все объекты данных
    располагаются на границах параграфов. Это сразу же упрощает
    указатель, определяющий объект данных. Этот указатель состоит
    только из двух байтов, которые определяют местонахождение сегмента
    с этими данными. Так как распределение памяти всегда начинается с
    границы параграфа, то начальное смещение данных будет всегда равно
    нулю. Однако при таком методе, расходуется дополнительная память.
    Каждый раз, когда вы располагаете в памяти новый объект, возможна
    потеря до 15 байт памяти. Это происходит, если последний байт
    предыдущего объекта попадает точно на границу параграфа. Так как
    граница следующего параграфа будет через 15 байт, то эти 15 байт в
    промежутке теряются. Кроме того, при такой стратегии минимальная
    длина объекта равна 16 байт. Даже если данные будут занимать меньше
    места, оставшиеся байты все равно не могут быть использованы.
 
      Как было отмечено, второй метод распределения памяти
    используется загрузчиком DOS при запуске программ. DOS загружает
    программу на ближайшую границу параграфа. Так как DOS исходит из
    того, что в памяти располагается мало больших по размерам объектов,
    то при данном методе издержки памяти будут невелики. Однако, если
    ваша прикладная программа использует много небольших объектов, то
    выравнивание по параграфам может оказаться слишком дорогим.
 
      Второй метод распределения памяти, использующий выравнивание по
    параграфам, позволяет определять области данных с помощью структуры
    SEGMENT. Если же хотите использовать первый метод распределения
    памяти, то вам потребуется другой способ определения структур
    данных. Такой способ объявления данных как раз рассматривается в
    следующем разделе.



Содержание  Назад  Вперед