ОП является адресной памятью, состоит из огромного количества 8-ми разрядных ячеек, каждая из которых имеет свой уникальный 16-ый адрес. Структура ОП приведена на Рис.2.1. Реализация относительной адресации связана с условным разбиением ОП на блоки по 4096 байтов . Справа от структуры ОП в общем виде представлена структура адреса произвольного байта ОП. Формирование адреса осуществляется при помощи двух частей: номера блока-5 старших битов и смещения относительно начала блока. Начало каждого блока совпадает с адресом ее первого байта, значение которого кратно 4096. Этот адрес получил называние базового. Поскольку объем блока равен 4096, то базовым может считаться адрес кратный 4096 или адрес, в котором 3 младших шестнадцатеричные цифры равны 0. Отсчет блоков начинается с 0.
8 шестнадцатеричных разрядов ХХХХХ ХХХ XXXXX XXX |
Смещение относительно начала блока или базового адреса |
Рис. 2.1. Блочная организация ОП.
Самые верхние 4096 байтов образуют «0» блок ОП. Понятие базового адреса используется при вычислении абсолютных или исполнительных адресов операндов, размещающих в ОП. В пределах каждого блока, адрес любого байта определяется 12-ти разрядным двоичным или 3-х разрядным 16-ым числом, которое называется смещением и обозначается в машинных командах латинской буквой «D». Смещение может принимать значение от ООО16 до FFF16.Если при помощи выражения (В) обозначить содержимое регистра СОП, в котором находится значение базового адреса, то значение любого абсолютного адреса «А» ОП можно определить по формуле:
А=[В]+D (2.1)
«А», [В] и «D» представляются в 16-ой системе счисления.
Если программы и данные располагаются в нескольких блоках основной памяти, то в регистрах общего назначения приходится хранить несколько базовых адресов (БА). Местом хранения базовых адресов является регистры общего назначения СОП. Применение относительной адресации упрощает процесс перемещения программ в ОП, для этого достаточно поменять значения базовых адресов в регистрах СОП. Распределение ОП и назначение БА осуществляется автоматически управляющей программой операционной системы. При программировании на машинноориентированных языках (Ассемблерах), программистам, как правило, самим приходится назначать базовые адреса и распределять основную память. Эти операции приходится выполнять при составлении программ для микроконтроллеров. Назначение нескольких базовых адресов для одной и той же программы происходит в тех случаях, когда объем программы и данных требуют объема большего, чем 4096 байтов. Распределение ОП между несколькими программами, исходя из блочной организации памяти, осуществляется исключительно блоками со стандартными объемами 4096 байтов. При оперировании с «данными», имеющими длины полуслов, слов или двойных слов, в качестве абсолютного адреса данных в команде выступает адрес самого младшего байта поля ОП, закрепленного за этой переменной.
Структура и организация СОП
СОП также является адресной памятью, каждая ячейка имеет свой собственный адрес или номер (Рис.2.2). У этой памяти есть и другое название– регистры общего назначения ( РОН). Она состоит из 16-ти 32-х разрядных регистров общего назначения. Поскольку, среди числовых форматов «данных», есть форматы, которые могут иметь длину 8 байт, то разработчикам современных ЭВМ пришлось базе тех же стандартных, соседних РОН, только спаренных по два, условно выделить четыре регистра с плавающей запятой (РПЗ) с уникальными четными номерами 0,2,4,6. РПЗ с номером 0-это спаренные РОН с номерами 0 и 1, 2-это 2 и 3, 4-это 4 и 5, 6-это 6 и 7.
Номер регистра | Двоичный адрес регистра (R) | РОН | РПЗ |
A B C D E F | | 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 | 0 63 0 63 0 63 0 63 |
Рис 2.2. Структура СОП.
Использование СОП позволяет повысить среднюю скорость выполнения операций, поскольку СОП имеет меньший цикл обращения по сравнению с ОП. СОП используется для временного хранения операндов и результатов арифметических операций, а также для хранения базовых адресов и индексов переменных типа массив (констант модификации адресов) при формировании исполнительных (абсолютных) адресов ОП. Вопрос двойного назначения регистров с номерами 0, 2, 4 и 6, использующихся в машинных командах, решается при помощи полей кодов операций (КОП), в которых заложена информация о форматах «данных», обработка которых будет осуществляться при помощи данной команды.