Главная -> Книги

(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) ( 10 ) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124) (10)

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

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

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

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

Например, в мини-ЭВМ «Электроника-100» память разделена на 32 страницы по 128 ячеек каждая. Исполнительный адрес формируется путем пристыковки пяти старших

3-808 33



бит (0-4) программного счетчика и семи младших бит (5-И) регистра команд, что позволяет обращаться к любой ячейке памяти в текущей странице.

Биты 3, 4 определяют признак адресации (ПА): 00-. прямая адресация к нулевой странице; 01-прямая адресация к текущей странице; 10 - косвенная адресация к нулевой странице; И - косвенная адресация к текущей странице. При использовании только прямой адресации для формирования исполнительного адреса время выборки операнда не увеличивается и требуется один цикл обращений к памяти.

При использовании одноуровневой косвенной адресации для выборки операнда из памяти «Электроники-100» требуется два цикла памяти. Развитием одноуровневой косвенной адресации в некоторых ЭВМ является косвенная многоуровневая адресация, которая оказывается удобной для пользователя при организации распределения памяти, дает гибкость при программировании. Для указания числа уровней адресации при использовании многоуровневой адресации обычно старший бит выбранного кода определяет, требуется ли обращение за следующим адресом (1) или за операндом (0). Каждый уровень косвенной адресации требует дополнительного обращения к памяти и увеличивает время выполнения команды.

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

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



в памяти, за счет того, что в команде всегда указано смещение по отношению к содержимому программного счетчика. Смещение интерпретируется как знаковое целое, представленное в дополнительном коде, что обеспечивает переход в любом направлении. Например, для 8-битного кода смещения может выполняться максимальный переход на число адресов в диапазоне от +127io до -128io по отношению к программному счетчику, при этом содержимое программного счетчика увеличивается для формирования адреса следующей команды до прибавления смещения. При перемещении программ из одной области памяти в другую смещение не изменяется, так как относительные позиции команд и данных сохраняются. Следует отметить, что так как содержимое программного счетчика постоянно увеличивается, формируемые исполнительные адреса изменяются для одного и того же смещения, т. е. это динамический способ адресации. Для выполнения операции сложения значений смещения и программного счетчика в малых ЭВМ используется, как правило, арифметико-логическое устройство (АЛУ), а иногда и специальный сумматор.

Ранее рассмотренный режим страничной адресации с конкатенацией (присоединением) адресной части команды и старших разрядов программного счетчика имеет по сравнению с данным режимом существенный недостаток для пользователя, хотя он и проще из-за отсутствия операции сложения. Для примера рассмотрим ситуацию, когда программа выполняется на странице, адресное пространство которой находится в диапазоне адресов 4 0 008-4 1 778. Если программный счетчик содержит адрес 4 1 708, то все адреса, превышающие его больше чем на 7, находятся на следующей странице и не могут быть достигнуты с использованием страничной адресации. Только косвенное обращение, например, через нулевую страницу может обеспечить такой переход.

В заключение необходимо отметить, что единства в вопросах о важности различных режимов адресации нет. Различие в их выборе, по-видимому, объясняется тем, что разработчики ЭВМ ориентируют их на определенные области применения.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Как формируется характеристика при представлении данных с плавающей запятой?

2. Какие типы команд образуют систему команд ЭВМ?



(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) ( 10 ) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124)