Виды адресации памяти эвм кратко

Обновлено: 05.07.2024

Адресный код - это информация об адресе операнда, содержащаяся в команде.

Исполнительный адрес - это номер ячейки памяти, к которой производится фактическое обращение.

В современных ЭВМ адресный код, как правило, не совпадает с исполнительным адресом. Выбор способов адресации, формирования исполнительного адреса и преобразования адресов является одним из важнейших вопросов разработки ЭВМ.

Рассмотрим способы адресации, используемые в современных ЭВМ:

1) Подразумеваемый операнд. В команде может не содержаться явных указаний об операнде; в этом случае операнд подразумевается и фактически задается кодом операции команды.

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

3) Непосредственная адресация. В команде содержится не адрес операнда, а непосредственно сам операнд. При непосредственной адресации не требуется обращения к памяти для выборки операнда и ячейки памяти для его хранения. Это способствует уменьшению времени выполнения программы и занимаемого ею объема памяти. Непосредственная адресация удобна для хранения различного рода констант.

4) Прямая адресация. В адресной части команды может быть непосредственно указан исполнительный адрес.

5) Относительная (базовая) адресация. При этом способе адресации исполнительный адрес определяется как сумма адресного кода команды и базового адреса, как правило, хранящегося в специальном регистре - регистре базы. Относительная адресация позволяет при меньшей длине адресного кода команды обеспечить доступ к любой ячейке памяти. Для этого число разрядов в базовом регистре выбирают таким, чтобы можно было адресовать любую ячейку оперативной памяти, а адресный код команды используют для представления лишь сравнительно короткого "смещения". Смещение определяет положение операнда относительно начала массива, задаваемого базовым адресом.

6) Укороченная адресация. Для уменьшения длины кода команды часто применяется так называемая укороченная адресация. Суть ее сводится к тому, что в команде задаются только младшие разряды адресов, а старшие разряды при этом подразумеваются нулевыми. Такая адресация позволяет использовать только небольшую часть фиксированных ячеек в начале всей адресуемой области памяти, и поэтому применяется лишь совместно с другими способами адресации. Регистровая адресация является частным случаем укороченной, когда в качестве фиксированных ячеек с короткими адресами используются регистры (ячейки сверхоперативной или местной памяти) процессора. Например, если таких регистров 16, то для адреса достаточно четырех двоичных разрядов. Регистровая адресация наряду с сокращением длины адресов операндов позволяет увеличить скорость выполнения операций, так как уменьшается число обрашений к оперативной памяти.

7) Косвенная адресация. Адресный код команды в этом случае указывает адрес ячейки памяти, в которой находится адрес операнда или команды. Косвенная адресация широко используется в малых и микроЭВМ, имеющих короткое машинное слово, для преодоления ограничений короткого формата команды (совместно используются регистровая и косвенная адресация).

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

9) Стековая адресация. Стековая память, реализующая безадресное задание операндов, особенно широко используется в микропроцессорах и миниЭВМ. Стек представляет собой группу последовательно пронумерованных регистров или ячеек памяти, снабженных указателем стека, в котором автоматически при записи и считывании устанавливается номер (адрес) последней занятой ячейки стека (вершины стека). При операции записи заносимое в стек слово помещается в следующую по порядку свободную ячейку стека, а при считывании из стека извлекается последнее поступившее в него слово.

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

11) Индексация. Для реализуемых на ЭВМ методов решения математических задач и обработки данных характерна цикличность вычислительных процессов, когда одни и те же процедуры выполняются над различными операндами, упорядоченно расположенными в памяти. Поскольку операнды, обрабатываемые при повторениях цикла, имеют разные адреса, без использования индексации требовалось бы для каждого повторения составлять свою последовательность команд, отличающихся адресными частями.

Мне периодически приходится объяснять разным людям некоторые аспекты архитектуры Intel® IA-32, в том числе замысловатость системы адресации данных в памяти, которая, похоже, реализовала почти все когда-то придуманные идеи. Я решил оформить развёрнутый ответ в этой статье. Надеюсь, что он будет полезен ещё кому-нибудь.
При исполнении машинных инструкций считываются и записываются данные, которые могут находиться в нескольких местах: в регистрах самого процессора, в виде констант, закодированных в инструкции, а также в оперативной памяти. Если данные находятся в памяти, то их положение определяется некоторым числом — адресом. По ряду причин, которые, я надеюсь, станут понятными в процессе чтения этой статьи, исходный адрес, закодированный в инструкции, проходит через несколько преобразований.


Физический адрес


Конечный результат всех преобразований других типов адресов, перечисленных далее в этой статье — физический адрес. На нём кончается работа внутри центрального процессора по преобразованию адресов.

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

Эффективный адрес

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

Например, для инструкции (ассемблер в AT&T-нотации)

addl %eax, 0x11(%ebp, %edx, 8)

эффективный адрес операнда-назначения будет вычислен по формуле:

eff_addr = EBP + EDX * 8 + 0x11

Логический адрес

Без знания номера и параметров сегмента, в котором указан эффективный адрес, последний бесполезен. Сам сегмент выбирается ещё одним числом, именуемым селектором. Пара чисел, записываемая как selector:offset , получила имя логический адрес. Так как активные селекторы хранятся в группе специальных регистров, чаще всего вместо первого числа в паре записывается имя регистра, например, ds:0x11223344.

Линейный адрес

Эффективный адрес — это смещение от начала сегмента — его базы. Если сложить базу и эффективный адрес, то получим число, называемое линейным адресом:

lin_addr = segment.base + eff_addr

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

Описанное выше верно при включенной сегментации. В 16-битном реальном режиме смысл селекторов другой, они хранят только базу, а преобразование не осуществляет сегментных проверок. Фактически, обозначения CS, DS, FS, GS, ES, SS имеют совершенно разный смысл в этих двух режимах, что добавляет путаницы.

Сегментация была модной на некотором этапе развития вычислительной техники. В настоящее она почти всюду была заменена другими механизмами, и используется только для специфических задач. Так, в режиме IA-32e (64-битном) только два сегмента могут иметь ненулевую базу. Для остальных четырёх в этом режиме всегда линейный адрес == эффективный.

Что такое виртуальный адрес?

В литературе и в документации других архитектур встречается ещё один термин — виртуальный адрес. Он не используется в документации Intel на IA-32, однако встречается, например, в описании Intel® Itanium, в котором сегментация не используется. Можно смело считать, что для IA-32 виртуальный == линейный.
В советской литературе по вычислительной технике этот вид адресов также именовался математическим.

Страничное преобразование


Следующее после сегментации преобразование адресов: линейный → физический — имеет множество вариаций в своём алгоритме, в зависимости от того, в каком режиме (32-битном, PAE или 64-битном) находится процессор.

Примечательно, сколько различных бит из разных системных регистров процессора влияют на процесс страничного преобразования в настоящее время. Я просмотрел свежую сентябрьскую редакцию Intel SDM [1], и вот полный список: CR0.WP, CR0.PG, CR4.PSE, CR4.PAE, CR4.PGE, CR4.PCIDE, CR4.SMEP, CR4.SMAP, IA32_EFER.LME, IA32_EFER.NXE, EFLAGS.AC.

Однако общая идея всегда одна и та же: линейный адрес разбивается на несколько частей, каждая из которых служит индексом в одной из системных таблиц, хранящихся в памяти. Записи в таблицах — это адреса начала таблицы следующего уровня или, для последнего уровня — искомая информация о физическом адресе страницы в памяти и её свойствах. Самые младшие биты не преобразуются, а используются для адресации внутри найденной страницы. Например, для режима PAE с размером страниц 4 кбайт преобразование выглядит так:


Гостевой физический

До введения возможностей аппаратной виртуализации в процессорах Intel страничное преобразование было последним в цепочке. Когда же на одной системе работают несколько виртуальных машин, то физические адреса, получаемые в каждой из них, приходится транслировать ещё один раз. Это можно делать программным образом, или же аппаратно, если процессор поддерживает функциональность EPT (англ. Extended Page Table). Адрес, раньше называвшийся физическим, был переименован в гостевой физический для того, чтобы отличать его от настоящего физического. Они связаны с помощью EPT-преобразования. Алгоритм последнего схож с ранее описанным страничным преобразованием: набор связанных таблиц с общим корнем, последний уровень которых определяет, существует ли физическая страница для указанной гостевой физической.

Полная картина

Я попытался собрать все преобразования адреса в одну иллюстрацию. В ней преобразования обозначены стрелками, типы адресов обведены в рамки.


Как уже было сказано выше, каждое из преобразований может вернуть ошибку для адресов, не имеющих представления в следующем по цепочке виде. Устранение подобных проблем — это задача операционных систем и мониторов виртуальных машин, реализующих абстракцию виртуальной памяти.

Заключение

Вскоре после завершения написания этой статьи я натолкнулся на презентацию об архитектуре IBM System z, которая примечательна в том числе своей долгой и интересной историей поддержки виртуализации. В этом документе нашлось перечисление всех типов адресов памяти, используемых в System z:

Адрес памяти (англ. Memory adress ) - это понятие данных, используемых программно-аппаратными средствами для получения доступа к требуемому участку памяти компьютера. Адрес памяти представляет собой последовательность цифр фиксированной длины, которые, обычно, отображаются и обрабатываются как целые числа. Причиной такой формы записи являются особенности CPU (такие как программный счетчик и возрастающие регистры адреса(ячейки) памяти), а также использование памяти как массива, поддерживаемого различными языками программирования.

Содержание

Типы адресов памяти

Физические адреса

Память цифрового компьютера (или основная память) состоит из множества ячеек памяти, каждая из которых имеет физический адрес. [Источник 1] - код, который центральный процессор (или другое устройство) может использовать для доступа к ней. Как правило, только системное программное обеспечение, то есть BIOS [Источник 2] , операционные системы, и некоторые специализированные вспомогательные программы (например, тестеры памяти), обращаются к физической памяти с использованием операторов машинного кода и регистров процессора, Инструктируя CPU направлять аппаратное устройство, называемое контроллером памяти, использовать шину памяти или системную шину или отдельные управляющие, адресные и информационные шины для выполнения команд программы. Шина контроллеров памяти состоит из нескольких параллельных линий, каждая из которых представлена двоичной цифрой (бит). Ширина шины и, следовательно, количество адресуемых единиц хранения и количество битов в каждой единице варьируется среди компьютеров. Физический адрес - это конечный результат всех преобразований других типов адресов, перечисленных далее. На нём кончается работа внутри центрального процессора по преобразованию адресов.

Эффективные адреса

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

Логические адреса

Без знания номера и параметров сегмента, в котором указан эффективный адрес, последний бесполезен. Сам сегмент выбирается ещё одним числом, именуемым селектором. Пара чисел, записываемая как selector:offset, получила имя логический адрес. Так как активные селекторы хранятся в группе специальных регистров, чаще всего вместо первого числа в паре записывается имя регистра, например, ds:0x11223344 [Источник 3] . В старых компьютерах логические и физические адреса были согласованы, но с момента появления виртуальной памяти у большинства прикладных программ нет информации о физических адресах. Скорее, они адресуют логические адреса [Источник 4] или виртуальные адреса, используя блок управления памятью компьютера и отображение памяти операционной системы.

Линейные адреса

Эффективный адрес — это смещение от начала сегмента — его базы. Если сложить базу и эффективный адрес, то получим число, называемое линейным адресом:

lin_addr = segment.base + eff_addr

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

Виртуальные адреса

В литературе и в документации других архитектур встречается ещё один термин — виртуальный адрес. Он не используется в документации Intel на IA-32, однако встречается, например, в описании Intel® Itanium, в котором сегментация не используется. Можно смело считать, что для IA-32 виртуальный == линейный. В советской литературе по вычислительной технике этот вид адресов также именовался математическим.

Единица измерения адреса

Некоторые старые компьютеры (десятичные компьютеры) были десятизначными с цифровой адресацией. Например, каждый адрес в магнитной памяти IBM 1620 идентифицировал одну шестиразрядную двоично-кодированную десятичную цифру, состоящую из бита четности, бита флага и четырех числовых битов. В 1620 использовались пятизначные десятичные адреса, поэтому в теории максимально возможный адрес был 99,999. На практике CPU поддерживал 20000 ячеек памяти и мог добавить до двух дополнительных модулей внешней памяти, каждый из которых поддерживает 20 000 адресов, в общей сложности 60 000 (00000-59999).

Размер слова в зависимости от размера адреса

Размер слова является характеристикой для данной архитектуры компьютера. Он обозначает количество цифр, которое процессор может обрабатывать за один раз. Современные процессоры, включая встроенные системы, обычно имеют размер слова 8, 16, 24, 32 или 64 бита; Большинство современных компьютеров общего назначения используют 32 или 64 бита. В истории же использовалось много различных вариантов, включая 8, 9, 10, 12, 18, 24, 36, 39, 40, 48 и 60 бит.

Теоретически современные 64-разрядные компьютеры с байтовой адресацией могут адресовать 2 64 байта, но на практике объем памяти ограничен процессором, контроллером памяти или особенностями печатной платы (например, количеством разъемов физической памяти или количеством паяемой памяти).

Содержание отдельной ячейки памяти

Адресное пространство в программировании приложений

В современной многозадачной среде процессы приложений обычно имеют в своем адресном пространстве (или пространствах) куски памяти следующих типов:

  • Машинный код, в том числе:
    • Собственный код программы;
    • Совместно используемые библиотеки.
    • Инициализированные данные;
    • Неинициализированные (но выделенные) переменные;
    • Стек для переменных исполняемой программы;
    • Куча;
    • Совместно используемая память и отображенные в память файлы.

    Некоторые части адресного пространства могут вообще не отображаться.

    Схемы адресации

    Компьютерная программа может обращаться к адресу, указанному явным образом - в низкоуровневом программировании его обычно называют абсолютным адресом или иногда конкретным адресом, он известен как указатель в языках более высокого уровня. Но программа также может использовать относительный адрес, который указывает местоположение по отношению к другому месту (базовому адресу). Также существует много других способов косвенной адресации.

    Модели памяти

    Многие программисты предпочитают адресовать память таким образом, чтобы не было различий между пространством кода и пространством данных, а также физической и виртуальной памятью, другими словами, численно идентичные указатели относятся к точно одному и тому же байту ОЗУ.

    Однако многие старые компьютеры не поддерживали плоскую модель памяти - в частности, аппараты архитектуры Harvard вынуждали память с командами полностью отделяться от памяти с данными. Многие современные DSP(digital signal processor) (такие как Motorola 56000) имеют три отдельные области хранения - хранение программ, хранение коэффициентов и хранение данных. Некоторые часто используемые команды извлекаются из всех трех областей одновременно - меньшее количество областей хранения (даже если бы были одинаковые общие байты памяти) приводило бы к замедлению выполнения этих команд.

    Модели памяти в х86 архитектуре

    Старые компьютеры x86 использовали сегментированные адреса модели памяти на основе комбинации двух чисел: сегмента памяти и смещения внутри этого сегмента. Некоторые сегменты неявно трактовались как сегменты кода, предназначенные для команд, сегментов стека или обычных сегментов данных. Хотя использование было разным, сегменты не имели какой-либо защиты памяти. В плоской модели памяти все сегменты (сегментные регистры) обычно устанавливаются в ноль, и только смещения являются переменными.

    Адресация — осуществление ссылки (обращение) к устройству или элементу данных по его адресу [1] ; установление соответствия между множеством однотипных объектов и множеством их адресов; метод идентификации местоположения объекта [2] .

    Содержание

    Методы адресации [2]

    Адресное пространство

    • Простая (англ.flat addressing ) — указание объекта с помощью идентификатора или числа, не имеющего внутренней структуры.
    • Расширенная (англ.extended addressing ) — доступ к запоминающему устройству с адресным пространством, бо́льшим диапазона адресов, предусмотренного форматом команды.
    • Виртуальная (англ.virtual addressing ) — принцип, при котором каждая программа рассматривается как ограниченное непрерывное поле логической памяти, а адреса этого поля — как виртуальные адреса.
    • Ассоциативная (англ.associative addressing ) — точное местоположение данных не указывается, а задаётся значение определённого поля данных, идентифицирующее эти данные (см.: Ассоциативная память).

    Исполнение программ

    • Статическая (англ.static addressing ) — соответствие между виртуальными и физическими адресами устанавливается до начала и не меняется в ходе выполнения программы.
    • Динамическая (англ.dynamic addressing ) — преобразование виртуальных адресов в физические осуществляется в процессе выполнения программы. Программа при этом не зависит от места размещения в физической памяти и может перемещаться в ней в процессе выполнения.

    Кодирование адресов

    • Явная (англ.explicit addressing ) — адресация путём явного задания адресов в программе.
    • Неявная (англ.implied addressing ) — один или несколько операндов или адресов операндов находятся в фиксированных для данной командырегистрах или ячейках памяти и не требуют явного указания в команде.
    • Абсолютная (англ.absolute addressing ) — адресная часть команды содержит абсолютный адрес.
    • Символическая (англ.symbolic addressing ) — адресная часть команды содержит символический адрес.

    Вычисление адресов

    • Непосредственная, прямая (англ.immediate (direct) addressing ) — адресная часть команды содержит непосредственный (прямой) адрес; адресация путём указания прямых адресов.
    • Косвенная (англ.indirect addressing ) — адресная часть команды содержит косвенный адрес; адресация посредством косвенных адресов.
    • Регистровая (англ.register addressing ) — задание адресов операндов в регистрах.
    • Базисная (англ.basic addressing ) — вычисление адресов в машинных командах относительно содержимого регистра, указанного в качестве базового.
    • Базовая (англ.base-displacement addressing ) — схема вычисления исполнительного адреса, при которой этот адрес является суммой базового адреса и смещения.
    • Относительная (англ.relative addressing ) — адресная часть команды содержит относительный адрес.
    • Индексная (англ.indexed addressing ) — формирование исполнительного адреса осуществляется путём добавления к базовому адресу содержимого индексного регистра.
      • Автодекрементная, автоинкрементная (англ.autodecremental, autoincremental addressing — содержимое регистра индекса изменяется (уменьшается или увеличивается) на некоторое число.
      • Постдекрементная, предекрементная, постинкрементная, преинкрементная — автодекрементные и автоинкрементные адресации, при которых уменьшение/увеличение происходит после/до выборки операнда.
      • Самоопределяющаяся (англ.self-relative addressing ) — адресная часть команды содержит самоопределяющийся адрес.
        • Адресация относительно счётчика команд (англ.program counter relative addressing ) — адреса в команде указываются в виде разности исполнительных адресов и адреса исполняемой команды. Такой способ адресации не требует настройки (см. также: Позиционно-независимый код).

        Способы адресации

        Подразумеваемый операнд

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

        Подразумеваемый адрес

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

        Непосредственная адресация

        В команде содержится не адрес операнда, а непосредственно сам операнд. При непосредственной адресации не требуется обращения к памяти для выборки операнда и ячейки памяти для его хранения. Это способствует уменьшению времени выполнения программы и занимаемого ею объёма памяти. Непосредственная адресация удобна для хранения различного рода констант.

        Прямая адресация

        DIrectAddressing.jpg

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

        Относительная (базовая) адресация

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

        Укороченная адресация

        В адресном поле командного слова содержатся только младшие разряды адресуемой ячейки. Дополнительный указательный регистр.

        • Адресация с регистром страницы является примером сокращённой адресации. При этом вся память разбивается на блоки-страницы. Размер страницы диктуется длиной адресного поля.

        Регистровая адресация

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

        Косвенная адресация

        Адресный код команды в этом случае указывает адрес ячейки памяти, в которой находится адрес операнда или команды. Косвенная адресация широко используется в малых и микроЭВМ, имеющих короткое машинное слово, для преодоления ограничений короткого формата команды (совместно используются регистровая и косвенная адресация).

        Адресация слов переменной длины

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

        Стековая адресация

        Стековая память, реализующая безадресное задание операндов, особенно широко используется в микропроцессорах и Мини-ЭВМ.

        Автоинкрементная и автодекрементная адресации

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

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

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

        Индексация

        Для реализуемых на ЭВМ методов решения математических задач и обработки данных характерна цикличность вычислительных процессов, когда одни и те же процедуры выполняются над различными операндами, упорядоченно расположенными в памяти. Поскольку операнды, обрабатываемые при повторениях цикла, имеют разные адреса, без использования индексации требовалось бы для каждого повторения составлять свою последовательность команд, отличающихся адресными частями.

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

        Читайте также: