Реализация адресации операндов «базирование способом суммирования»
В команде адресный код АК разделяется на две составляющие: АБ – адрес регистра регистровой памяти, в котором хранится база Б, C – код смещения относительно базового адреса. Максимальная адресуемая емкость ОП определяется разрядностью регистровой памяти.
С помощью метода относительной адресации удается получить перемещаемый программный модуль, который одинаково выполняется процессором независимо от адресов, в которых он расположен. При входе в модуль начальный адрес программного модуля (база) загружается в базовый регистр. Все остальные адреса программного модуля формируются через смещение относительно начального адреса модуля. Таким образом, одна и та же программа может работать с данными, расположенными в любой области памяти, без перемещения данных и без изменения текста программы только за счет изменения содержания всего одного базового регистра.
Реализация адресации операндов «базирование способом совмещения» составляющих исполнительного адреса (конкатенации)
Для увеличения емкости адресной ОП без увеличения длины адресного поля команды можно использовать для формирования исполнительного адреса совмещение кодов базы и смещения. При совмещении кодов базы и смещения разрядность исполнительного адреса = разрядность базы + разрядность смещения.
Реализация индексной адресации операндов
Для работы программ с массивами, требующими однотипных операций над элементами массива, удобно использовать индексную адресацию. В этом случае адрес i-го операнда в массиве определяется как сумма начального адреса массива (задаваемого полем смещения С) и индекса И, записанного в одном из регистров регистровой памяти, называемом теперь индексным регистром. Адрес индексного регистра задается в команде полем адреса индекса – АИН (аналогично АБ). Исполнительный адрес ОП = Адрес базы + адрес индекса + адрес смещения.
Развитие CISC-системы команд x86 (по годам)