49
Исполнительный адрес при индексации формируется путем сложения смеще-
ния (D), содержимого индексного регистра (I), а при наличии базирования – и базово-
го адреса (АБ). Именно этот характерный
случай показан на рис. 5.20.
В ряде случаев базовые и индексные регистры назначаются программистом из
некоторого общего массива регистровой памяти. Операция получения АИ выполня-
ется либо в
АЛУ процессора, либо в специальном сумматоре блока индексной
арифметики, что повышает быстродействие ЭВМ, но и увеличивает объем оборудо-
вания.
Индексация служит не только для организации циклов, но в сочетании с бази-
рованием является средством описания элементов информационных массивов,
размещенных в ОП. Индексация вообще позволяет достаточно легко модифициро-
вать исполнительные адреса, оставляя
неизменным код самой команды, хранящей-
ся в ОП.
Для управления индексацией используются команды, задающие операции над
содержимым индексных регистров –
команды индексной арифметики. Основные
виды индексных операций следующие:
• засылка в соответствующий индексный регистр начального значения ин-
декса;
• изменение индекса;
• проверка окончания циклических вычислений.
Очень коротко рассмотрим последние два типа команд.
Изменение индекса состоит в сложении (вычитании) значения индекса с фикси-
рованным приращением, производимым каждый раз при повторении цикла. Команда
изменения индекса указывает номер индексного регистра, а также значение и знак
(либо адрес) приращения. Если приращение всегда фиксировано и равно
, например,
1 или L (длина слова в байтах), то используются команды с подразумеваемым опе-
рандом.
Для проверки окончания цикла используют или обычную команду перехода по
условию, налагаемому в этом случае на какую-либо переменную, изменяющуюся в
процессе вычислений, или специальные команды "УП по счетчику" (УПС) и "УП по
индексу" (УПИ).
Условный переход по счетчику (УПС)
Счетчиком служит обычно один из индексных регистров, в который перед нача-
лом цикла загружается число итераций цикла. Возможная структура команды пока-
зана на рис. 5.21, а.
В данном случае счетчик организован на индексном регистре R
1
. Пусть для ад-
ресации сегмента кодов команд используется базирование, тогда адрес АИ = (В) + D
является адресом начала цикла. Команда УПС уменьшает содержимое регистра R
1
на 1 при каждой итерации цикла. В случае неравенства содержимого счетчика нулю
((R
1
) ≠ 0) осуществляется переход на АИ, т.е. в начало цикла. Если (R
1
) = 0, то осу-
ществляется переход к команде, следующей по порядку за командой УПС, т.е. выход
из цикла.
Условный переход по индексу (УПИ)
Возможная структура команды показана на рис 5.21, б. Пусть R
1
– номер ин-
дексного регистра, а R
2
– номер регистра, хранящего приращение. Регистр, в кото-
ром хранится предельное значение индекса, имеет подразумеваемый адрес и, сле-
довательно, должен быть фиксированным для данного процессора. Пусть это будет
регистр, следующий по порядку за регистром, хранящим приращение, т.е. R
3
. Ко-
манда УПИ складывает содержимое регистров R
1
и R
2
, помещает результат сложе-