Относительная адресация

April 9, 2010 by admin Комментировать »

Итак, мы определили режим индексной адресации операндов с использованием регистров процессора общего назначения. Еще одна интересная разновидность индексного режима адресации связана с использованием вместо регистра общего назначения счетчика команд. Запись Х(РС) означает, что исполнительный адрес смещен на X байтов относительно адреса, заданного в счетчике команд. Этот ре­жим называется относительной адресацией.

Относительная адресация — это способ адресации, при котором исполнитель­ный адрес определяется так же, как в индексном режиме, но вместо регистра об­щего назначения используется счетчик команд.

Указанный режим часто используется для доступа к операндам-данным, но более типичным его предназначением является определение целевого адреса в команде перехода. Например, команда

Branch>0 LOOP

приводит к передаче управления по целевому адресу, определяемому именем LOOP, в том случае, если удовлетворяется условие перехода. Целевой адрес мож­но не задавать жестко, а вычислять как смещение относительно текущего значе­ния счетчика команд. А поскольку целевой адрес может находиться как выше, так и ниже команды перехода, смещение задается в виде целого числа со знаком.

Вспомните, что в ходе выполнения команды процессор увеличивает значение счетчика, чтобы он указывал на следующую команду программы. В большинстве компьютеров это обновленное значение используется для определения исполни­тельного адреса в режиме относительной адресации. Предположим, что для зада­ния целевого адреса команды перехода в программе, представленной на рис. 2.12, используется относительная адресация. А еще мы предположим, что четыре ко­манды в теле цикла, начиная с метки LOOP, располагаются в памяти по адресам 1000, 1004, 1008 и 10012. Поэтому на момент, когда генерируется целевой адрес перехода, текущее, уже обновленное, значение в регистре PC равно 1016. Чтобы перейти по адресу LOOP (1000), нужно использовать смещение X = -16.

В языке ассемблера в командах перехода для указания целевого адреса ис­пользуются метки (рис. 2.12). Когда компилятор при обработке ассемблерной программы встречает такую команду, он вычисляет значение смещения, в данном случае -16, и генерирует соответствующую машинную команду, используя отно­сительную адресацию, то есть -16(РС).

Оставить комментарий

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