Формат RX-команд

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

Команды формата RX имеют длину 4 байта. Напомним, первый байт любой машинной команды содержит код операции. Поэтому пока мы лишь можем сказать, что формат RX команд таков:

где ОР — это 8-битовый код операции.

Адресная часть команды, содержащая обращение к памяти, имеет вид адресного поля Х-типа, получившегося из S-поля модификацией с помощью указания индекс-регистра. S-поле занимает 2 последних байта:

В2 — номер базового регистра, D2 — 12-разрядное смещение. Для получения поля Х-типа включается еще и номер индекс-регистра Х2:

Остается только указать первый операнд, регистр R1, в оставшейся свободной части поля:

Приведем несколько примеров. Пусть смещение для имени САВ равно 1С8, а регистр 3 — базовый. Команда

А 5,САВ(8) будет преобразована ассемблером к следующему машинному виду:

Откуда это известно? Кодом операции Add (СЛОЖЕНИЕ) является 5А. Регистр 5 является первым операндом, и, следовательно, ссылка на него расположена в поле R1 машинной команды. Базовый регистр, в данном случае третий, определяется в поле В2. Смещение 1С8, соответствующее D2, указывается в остальных трех полубайтах S-адресного поля. Наконец, процесс трансляции завершается помещением в поле Х2 номера индексного регистра, 8.

Рассмотрим пример трансляции команды

М 10,САВ+4

Имени САВ соответствует базовый регистр 3 и смещение, равное 1С8. Слово, адрес которого указан в команде, отстоит от САВ на 4 байта, поэтому смещение для него равно 1СС. Индекс-регистр не был указан, и, значит, поле Х2 должно содержать 0. Код операции М — 5С, и окончательно команда в машинной форме выглядит так:

 
Статьи раздела