С учетом сегментной адресации памяти, адрес любой ячейки памяти определяется в МП суммированием двух составляющих (логических адресов). Первая составляющая – это адрес сегмента, в котором находится искомая ячейка. Вторая – это адрес ячейки, отсчитываемый от начала этого сегмента, и называемый поэтому адресом смещения ячейки в сегменте. Кратко будем называть эти адреса Асегм и Асмещ. Покажем в карте памяти размещение некоторого сегмента и его содержимого. Следует помнить, что нумерация в ЭВМ принята с цифры 0.
На рис. 3.1 выделена ячейка с номером 5, содержащая байт, то есть Асмещ1=5. Если в памяти размещено слово (рис.3), оно указывается (адресуется) через свой младший байт: Асмещ2 слова в памяти = 3.
Память имеет байтовую организацию – двухбайтовое слово размещается в смежных ячейках, причем старший байт занимает ячейку с большим номером. Адресом слова служит адрес младшего байта.
Рис. 3.1. Размещение в памяти байта. Рис. 3.2. Размещение в памяти слова.
Такой способ адресации ячеек памяти удобен тем, что при смене Асегм не требуется изменять Асмещ: значения адресов смещений всегда отсчитываются от начала сегмента и не зависят от значения адреса сегмента.
Если Асегм является постоянной величиной для программы, то в адресных полях А1 и А2 команды достаточно указывать только Асмещ (данных и результата). Напомним форматы команд:
Рис. 3.3. Форматы команд а) с двумя операндами; б)с одним операндом.
Таким образом, в МП должны храниться адреса всех сегментов исполняемой программы. При каждом обращении к памяти с целью прочитать команду или операнд или записать результат, в МП должен быть сформирован исполнительный адрес требуемой ячейки как сумма Асегм и Асмещ, который МП выбирает из команды или вычисляет по данным команды.