Сравнительный анализ различных систем адресации, используемых в мини и микроЭВМ

2. СИСТЕМЫ АДРЕСАЦИИ ИСПОЛЬЗУЕМЫЕ В МИНИ-ЭВМ В этой главе будут рассмотрены способы адресации данных, используемые в мини-ЭВМ на примере СМ1700. Это первый представитель 32-разрядных ЭВМ семейства СМ. Вычислительный комплекс СМ1700 представляет собой универсальную ЭВМ. Одна из основных целей его создания — это расширение виртуального адресного пространства по сравнению с 16-разрядной СМ4. Хотя некоторые инструкции вычислительного комплекса СМ1700 имеют сходство с инструкциями СМ4, СМ1700 представляет собой полностью новую архитектуру. Аппаратные средства СМ1700 ориентированы на реализацию языков высокого уровня и системных программ, которые используются операционной системой и компилятором. Система команд СМ1700 в настоящее время включает 304 инструкции и более 20 режимов адресации операндов. Все это дает возможность программисту составлять эффективные по объему и времени выполнения программы. Какие же способы адресации предусмотрены в СМ1700? Мы рассмотрим несколько способов адресации, которые в общем можно поделить на регистровые, косвенные, индексные и специальные.

2.1 РЕГИСТРОВЫЙ РЕЖИМ АДРЕСАЦИИ В этом режиме операндом является содержимое регистра. Рассмотрим инструкцию MOVL R2, R3. Для СМ ЭВМ характерно, что приемником всегда является второй операнд для двух- и третий для трех-операндных инструкций. Поэтому инструкция MOVL R2, R3 пересылает содержимое регистра R2 в регистр R3, а не наоборот, как было бы с аналогичной инструкцией MOV AX, BX из набора команд процессоров семейства 8086 фирмы Intel. Приведем пример использования этого способа адресации на примере инструкции MOVL R2, R3. Ее машинная запись будет выглядеть, как D0 52 53, где D0 — код инструкции, а 52 и 53 — прямая адресация, 2ой регистр и прямая адресация, 3ий регистр соответственно.

Пусть содержимое регистров до операции было: R2 = 10 R3 = 1 000 Тогда после они будут выглядеть так: R2 = 10 R3 = 10 Как видно из примера, содержимое регистра R2 было скопировано в R3.

2.2 КОСВЕННО-РЕГИСТРОВЫЙ РЕЖИМ В этом режиме содержимое регистра является адресом операнда. Мнемоника на ассемблере (Rn), где (Rn) является регистром содержащим либо адрес операнда источника {MOVL (R2), R3} либо адрес операнда приемника {MOVL R2, (R3) }. В качестве примера опять приведем инструкцию пересылки двойного слова MOVL R2, (R3). Код операции останется тот же, а операнды будут представлены как 52 63, где 63 — это уже косвенная адресация с использованием 3го регистра. При том же содержимом регистров, что и в предыдущем примере, будем иметь: До операции MOVL R2, (R3): R2 = 10 R3 = 1 000 (1 000) = 200 (R3) После…

R2 = 10 R3 = 1 000 (1 000) = 10 После операции пересылки значение ячейки памяти, адрес которой содержался в R3 (1 000) изменился с 200 на 10.

2.3 РЕЖИМ С АВТОУВЕЛИЧЕНИЕМ Специально для обработки массивов данных в CM1700 предусмотрена адресация с автоувеличением. В этом режиме содержимое выбранного регистра является адресом операнда, как и при косвенно-регистровой адресации, однако после выполнения операции содержимое регистра увеличивается на N, в зависимости от типа операнда: N = 1, если операндом является байт, N = 2, если операндом является слово, N = 4, если операндом является двойное слово, N = 8, если операндом является учетверенное слово или слово с плавающей запятой, N =16, если операндом является целое слово длиной 128 разрядов или двойное слово с плавающей запятой.

Рассмотрим этот режим адресации используя команду MOVL (R0), (R2) +. В памяти инструкция будет представлена как D0 60 82, где 60 — как уже говорилось косвенная адресация с регистром R0, а 82 — косвенная адресация с использованием регистра R2 и автоувеличение. Восьмерка в последнем случае как раз и означает данный режим адресации.

До операции MOVL (R0), (R2) + R0 = 1 000 R2 = 1 050 (1 000) = 00AC (R3) (1 050) = 0 (R2) После…