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



         

Сегменты


    Ранее уже рассматривался оператор SEGMENT. Теперь есть возможность
    рассмотреть его более подробно и исследовать дополнительные
    возможности, которые он предоставляет.
 
      До сих пор в большинстве примеров программ присутствовал только
    один оператор SEGMENT. Так как программный код должен находиться в
    некотором сегменте, то нужно присвоить ему имя. Учитывая, что
    ассемблер должен суметь определить адрес сегмента, единственный
    оператор ASSUME в прграмме идентифицирует только один сегмент
    программы. В подобных случаях возможности сегментации программ
    микропроцессора 8088 используются не полностью, но часто это и не
    нужно. Если программа и ее данные помещаются в пределах одной и той
    же адресуемой области памяти объемом 64 кбайт, то нет необходимости
    использовать возможности процессора в сегментации памяти.
 
      Существуют ситуации, когда в программе нужно использовать более
    одного оператора SEGMENT. Одно из таких применений рассматривалоясв
    гл.5 в нескольких примерах, использующих DOS. В этих примерах в
    программе определялся сегмент STACK. Имя, выбранное для сегмента,
    несущественно, но его тип, указанный в операторе SEGMENT, должен
    быть STACK, так как файлу типа .EXE для выполнения программы
    необходимо отвести стековую область. Если в программе не задать
    сегмент STACK, то загрузчик DOS сохранит организацию стека в
    некотором месте памяти, которое может оказаться неприемлемым. В
    этом случае программа может работать недостаточно хорошо.
 
      Другое назначение оператора SEGMENT - расположением данных в
    определенном месте памяти. Как известно, при использовании DOS
    лучше всего, если программа имеет перемещаемый программный сегмент.
    В этом случае нас не заботит, куда DOS загружает программу. Но в
    некоторых случаях фактическое расположение команд или данных
    оказывается существенным. В этих случаях для задания местоположения
    данных можно воспользоваться директивой AT оператора SEGMENT.



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