Адреса памяти - Перемещаемые адреса: Формат машинного языка

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

Смещение в машинном языке определяется как 12-битовое целое без знака. Таким образом, минимальным смещением является 000, а максимальным FFF (числа даны в шестнадцатеричной системе). В десятичном представлении это 0 и 4095 соответственно.

Номер базового регистра задается в виде 4-разрядного двоичного целого от 00012 до 11112. что соответствует шестнадцатеричным числам от 1 до F.

Адресное поле S-типа имеет длину два байта. Первые четыре разряда определяют регистр, остальные — смещение. Символически базовый регистр изображается буквой В, а смещение — D. Эти буквы обычно дополняются числами, указывающими номер операнда, к которому данный перемещаемый адрес относится. Например, В1 — это базовый регистр, соответствующий первому операнду, a D2 — смещение для второго. В этих обозначениях

действительный адрес=0+(В)

Структура же адресного поля S-типа в машинном языке такова:

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

Предположим, что 12-й регистр используется в качестве базового, а значение смещения для имени LOOP равно 38. Тогда адресное поле S-типа, отвечающее операнду LOOP, будет содержать

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

Регистр 0 запрещается использовать как базовый. Запись числа 0 в поле базового регистра указывает на отсутствие необходимости его использования; в качестве действительного адреса в этом случае выступает смещение. Таким образом, в Системе 360 возможна и абсолютная адресация, однако максимальный адрес, который можно указать таким образом, равен 4095, или FFF.

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

Действительные адреса вычисляются специально предназначенной для этого схемой. Машинный адрес в конечном виде представляет собой 24-разрядное двоичное целое без знака, помещаемое в регистр адреса памяти (MAR). На шаге выборки операндов значение смещения посылается в регистр адреса памяти. Затем производится исследование подполя базового регистра S-поля. Если оно содержит 0, то содержимое регистра MAR остается неизменным, значение, хранящееся в нем, и является 24-разрядным действительным адресом. Если же в поле базового регистра не 0, то содержимое указанного регистра добавляется к значению, находящемуся в MAR. Результирующее содержимое регистра MAR определяет адрес, по которому будет произведена либо выборка операнда, либо запись.

 



 
Оглавление
Статьи раздела