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


         

в первых же свободных участках


    располагаете объекты данных в первых же свободных участках памяти.
    Программа, управляющая доступом к областям данных, должна при этом
    для каждой переменной использовать четырехбайтовый указатель. Из
    них два байта используется для смещения и еще два байта для значе-
    ния сегмента. Когда программе нужно полусить доступ к данным, она
    извлекает адрес из области хранения адресов с помощью команд LDS
    или LES. Если вам требуется еще большая экономия памяти, то вы
    фактически можете хранить указатель в трехбайтовом поле. Два байта
    содержат адрес сегмента данных, а оставшийся байт содержит смещение
    данного объекта внутри сегмента. Начальное смещение всегда будет
   иметь значение от 0 до 15, так как значение сегмента всегда кратно
    16.
 
      Хотя описанный метод наиболее эффективен в отношении объема
    памяти, занимаемой данными, у него имеются пара недостатков.
    Максимальная длина объекта данных немного меньше, чем 64 кбайт. В
    рамках данной стратегии наихудшим окажется случай, когда абсолютный
    адрес объекта данных кончается на 0FH. Так как максимальное
    значение смещения в любом сегменте равно 0FFFFH, то максимальная
    длина переменной будет 64К - 15, или 65521 байт. Второй недостаток
    этого метода связан с затратами памяти для хранения указателей к
    объектам данных. При большом числе объектов для хранения наряду с
    ними всех четырехбайтовых (или трехбайтовых) указателей потребуется
    много памяти.
 
      Примером использования описанного метода распределения памяти
    может служить блок управления файлом FCB. В последнем примере
    работающей с DOS программы мы располагали блок FCB в произвольном
    месте программы. Какого-либо выравнивания местоположения этой
    структуры данных не производилось. Затем при обращении к DOS для
    выполнения файловой операции программе понадобился четырехбайтовый
    указатель. Идентификация блока FCB для DOS осуществлялось парой
    регистров DS:DX.
 

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