АДРЕСАЦИЯ ДАННЫХ

 

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

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

Старшая «половинка» модификатора операнда, соответствующая типу адресации, может содержать четыре неповторяющиеся двоичные комбинации:

00 - регистровый метод адресации: операнд является содержимым указанного регистра;

01 - метод косвенной адресации: операндом является содержимое ячейки ОЗУ, адрес которой задан в указанном регистре;

10 - резерв; в будущей версии здесь будет реализован индексный метод адресации;

11 - адресация по счетчику адреса команд PC: операнд извлекается с использованием информации, входящей в команду (более подробные объяснения приведены ниже).

Рассмотрим перечисленные способы адресации подробнее.

Наиболее простым является регистровый метод, который мы фактически уже использовали в примерах предыдущего раздела. Учитывая, что этому методу соответствуют нулевые значения старших битов, полный код операнда совпадает с номером регистра: двоичная комбинация 0000 соответствует R0, 0001 - R1 и т.д.

В качестве данных для операции используется информация, содержащаяся в указанном регистре. Например, если Rl = 3, а R2 = 5, то в результате выполнения команды

0212:R2+R1=>R2

получится R2 = 8.

При косвенной адресации код операнда выглядит несколько сложнее: косвенное обращение по регистру R0 имеет вид 0100 (т.е. 4), по Rl - 0101 (5) и т.д. Содержимое указанного регистра при этом служит не операндом, а его адресом в ОЗУ. Рассмотрим команду

0263: R3 + (R2) => R3

где скобки у R2 символизируют косвенную адресацию. Пусть содержимое R2 в данный момент равно 30, а R3 = 6. Примем также, что в ячейке памяти с адресом 30 хранится число 10. Тогда процессор «Е97», выполняя команду, к имеющемуся в R3 значению 6 прибавит число из ячейки 30, на которую указывает R2, и результат операции - 16 - занесет в R3.

И, наконец, рассмотрим способы адресации по программному счетчикуPC. Поскольку в этом случае регистр, по которому производится адресация, уже однозначно определен, освобождаются два младших бита операнда, которые можно использовать для других целей. В связи с этим удается получить четыре различных способа адресации по счетчику:

11 00 - резерв;

11 01 - операндом служит константа, входящая в команду;

11 10 - операнд извлекается из ячейки ОЗУ, адрес которой входит в команду;

1111-резерв.

Итак, в «Е97» существует два метода адресации по PC, соответствующих шест-надцатеричным кодам D и Е в качестве операнда. Изучим их на примерах. Команда, состоящая из двух слов

02D1

выполняет операцию Rl + 20 => Rl следующим образом: к текущему значению Rl прибавляется извлеченное из команды число 20 и результат помещается в Rl. Если первоначальное значение Rl было, скажем, F0, то в результате операции в Rl запишется 110.

Рассмотрим еще одну команду с адресацией по PC:

021Е

выполняющую операцию (20) + Rl => (20) так: к числу, хранящемуся в ячейке памяти 20, прибавляется значение Rl. В случае, когда Rl = F0, a (20) = 40, ответ будет: (20)= 130.

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

Во всех приведенных в данном пункте примерах МОД = 0 и, следовательно, не оказывает влияния на расшифровку и выполнение операции. Если же он имеет ненулевое значение, необходимо дополнительно учитывать и этот фактор.

Модификатор состоит из четырех битов, причем два старших отвечают за «переключением бант/слово, а два младших - за особый способ представления данных, называемый «короткой константой». Многие команды оперируют с небольшими константами, значения которых не превышает по модулю 15. Такие констангы вполне «уместятся» в четырех отведенных под ОП1 битах. Для реализации такой возможности в «Е97» используются два младших бита модификатора -0-й и 1-й. Признаком, по которому процессор распознает «короткую константу», служит наличие единицы в первом разряде модификатора. В этом случае содержимое ОП1 рассматривается как двоичное число, а 0-й бит модификатора служит его знак ом,например:

 

25A3:R3* 10=>R3

или

3653:R3/(-5)=>R3

 

Из приведенных примеров видно, что операции с «короткой константой» занимают всего одно слово. Данный способ оказывается, таким образом, экономичнее описанного чуть раньше метода адресации по PC (вспомните, что там константа хранится во втором слове команды).

Наличие операций с «короткой константой» позволяет упростить систему команд процессора. Например, в программах часто требуются команды, увеличивающие или уменьшающие данные на единицу. Любой процессор имеет для этой важной ситуации специализированные команды, обозначаемые чаще всего INC и DEC. В «Е97» эти команды получаются как частный случай операций с «короткой константой».

Во всех предыдущих рассуждениях мы молчаливо полагали, что процессор работает только с 16-разрядными словами. Но это не всегда так - иногда требуется выполнить те или иные действия над байтами, например, при обработке текста. Старшие биты модификатора как раз и предусмотрены для оказания режима байт/слово: 3-й бит соответствует ОП1, а 2-й - ОП2. Если соответствующий бит модификатора установлен в единицу, то процессор оперирует с байтом, иначе - со словом. Как всегда, наличие двух битов порождает четыре варианта:

 

00 ОП1-слово, ОП2-слово;

01 ОП1-слово, ОП2-байт;

10 ОП 1 - байт, ОП2 - слово;

11 ОП1-байт, ОП2-байт.

 

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

 








Дата добавления: 2015-10-13; просмотров: 1631;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.