Вход в систему

Лекции по курсу "Проектирование ассемблеров, компоновщиков, макропроцессоров

8. Адресация операндов

 

Есть команды, и есть операнды. Операнд – тот объект, над которым будет производиться операция. В команде мы указываем адрес.

При регистровой адресации эффективный адрес операнда может находиться в любом из регистров общего назначения, кроме SP и ВР (это специальные регистры для работы с сегментом стека).

При прямой адресации эффективный адрес содержится в самой команде и для его формирования не используется никаких дополнительных источников или регистров. Эффективный адрес берется непосредственно из поля смещения машинной команды.

При косвенной адресации в самой команде может находиться лишь часть эффективного адреса, а остальные его компоненты находятся в регистрах, на которые указывает своим cодержимым байт mod r/m. Квадратные скобки - признак косвенной адресации.

При непосредственной адресации эффективный адрес является частью машинной команды, но формируется этот адрес только из значения поля смещения в команде. Для формирования физического адреса операнда в памяти процессор складывает это поле со сдвинутым на четыре бита значением сегментного регистра.

Смешанная адресация представляет собой совокупность прямой и косвенной адресаций.

Эффективный адрес (EA) применим к прямой, косвенной и смешанной адресациям.

   
В четвертом случае EA будет равен bx + si + x (смещение, вычисленное в байтах от начала некоторого сегмента).

Сегментация (добавление содержимого сегментного регистра к эффективному адресу) применяется процессором автоматически при:

  • вычислении адреса команд