Assembler: логический и физический адреса, их вычисление
Вычисление адреса
Для вычисления адреса применяются две составляющие адреса – смещение и секция. Когда для адресации применяются адреса переменных либо метки, то известно, в котором сегменте они определены. Для вычисления адреса применяется адрес начала данного сегмента и смещение переменной с этим именем либо метки относительно начала сегмента. Данное смещение именуется исполнительным адресом, и он вычисляется зависимо от режима адресации. В этом случае в соответствующий сегментный регистр должно быть загружено необходимое значение, иначе данные будут пересылаться совершенно в иные ячейки памяти. При надобности в команде имеется возможность переопределить соответствующий сегмент. Для этой цели имеется возможность применять два метода:
- можно воспользоваться псевдооператором assume, дабы указать какой сегмент будет применяться по умолчанию при обращении к памяти;
- в команде непосредственно имеется возможность указать по отношению, к какому сегменту будет применяться смещение.
Физический адрес
Физический адрес представляет собой двадцатибитное беззнаковое целое, которое идентифицирует расположение байта в пространстве памяти. Логичный адрес представляет собой два шестнадцатибитных беззнаковых целых: базовый (исходный) адрес сегмента и эффективный адрес (смещение), который определяет расстояние в байтах от адресуемой ячейки до начала сегмента.
Логический адрес
Программа оперирует логическим адресом, а не физическим, следовательно, при обращении к памяти для записи считывания данных либо выборки команды, происходит аппаратное преобразование логичного адреса в физический адрес. Микропроцессор (МП) расширяет сегментный регистр четырьмя нулевыми битами и прибавляет смещение, которое получено при вычислении адреса. Правила преобразования зависят от режима работы микропроцессора - защищенного и реального. В обычном режиме работы микропроцессора логичный адрес непосредственно подается на шину адреса, другими словами совпадает с физическим адресом. В защищенном режиме работы микропроцессора, правила получения логического адреса отличаются от реального режима, а при применении страничной организации памяти логические адреса могут значительно отличаться от физических адресов.