Тема 6.2. Режимы адресации данных памяти

90% работы процессора связано с оперативной памятью. Он берет оттуда данные, обрабатывает их и отсылает обратно в память. Кроме этого, сам процессор имеет собственную память, называемую регистрами. Графически это можно изобразить так:

Рис.31 Регистры процессора

где слева регистры процессора R1, R2 … Rn, а справа ячейки памяти. В процессор поступают несколько операндов с которыми надо произвести некоторые действия. Но для того чтобы происходил обмен между процессором и оперативной памятью нужно использоать несколько режимов адресации. Но для начала нужно знать о формате команды. Под форматом команды понимают совокупность размера всех полей и их расположения в команде. Представим себе упрощенный вид команды:

Рис.32 Упрощенный вид команды

Команда делится на две области: область кода операции и область адресов. Вначале идет код операции (КОП) который говорит, что вообще необходимо делать, а затем идет адрес операнда/операндов с которым/которыми это надо делать. Адресная область может состоять из нескольких частей – это, так называемые многоадресные команды.

Адресная область состоит из трех полей: в первых двух лежат адреса операндов, а в третье будет записан адрес результата действия над операндами.

В двухадресных командах адресная область состоит из двух полей: поле адреса первого операнда и поле адреса второго операнда. Адрес результата действия над операндами будет записан в первое поле.

Рис.33 Адрес результата действия

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

Для того, чтобы процессор нашел нужные операнды, в поле адреса операнда вкладывают … адрес операнда (то есть тот адрес, по которому, обратившись, процессор найдет операнд или, проще говоря, необходимые данные).

Существует несколько типов адресации. Начнем с непосредственной адресации –когда вместо адреса операнда в команде указывается сам операнд (правда, если он представляет целое число). Выбрав из памяти код операции, процессору уже нет необходимости лезть опять в память за самим операндом, ведь он передается вместе с КОП.

Рис.34 Непосредственная адресация

Но такое не всегда бывает. Если в команде указан полный адрес ячейки, где лежат необходимые данные, то это уже полный или абсолютный тип адресации.

Рис.35 Полный или абсолютный тип адресации

Кроме этого, в поле адреса операнда может быть указан адрес или регистра или ячейки памяти, в которой лежит то же адрес, по которому можно найти ячейку с нужным операндом.

Рис.36 Ячейка с нужным операндом

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

Рис.37 Косвенная адресация

Количество звеньев (или ступеней перехода) называется глубиной косвенной адресации.

Все выше приведенные типы адресации касались одного операнда. А как же быть в случае с несколькими операндами, т.е массивами? Тогда обычно указывается адрес массива и номер (индекс) элемента. Базовый (начальный) адрес указывается в команде. Кроме этого, там же, в команде, есть поле, где указан номер регистра, в котором лежит значение индекса или номер ячейки в массиве относительно начального адреса. Тогда адрес каждой ячейки массива будет получаться из суммы начального адреса и того, что содержит указанный регистр, это называется модификацией адресов. Кроме того, существует тип адресации, когда в регистре лежит начальный адрес. В команде указан адрес этого регистра, а так же записано смещение относительно начального адреса. Все остальные адреса операндов будут получены из суммы адреса и смещения. Такой вот тип адресации называется относительным.

При относительной адресации можно еще и модифицировать адреса. В этом случае адрес будет равен сумме начального адреса плюс смещение плюс содержимое индексного регистра.

Если система использует несколько типов адресации, то в команде обязательно записывается, какой способ будет применен в данный момент, т.е в команде указывается признак адресации в поле признака операции.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: