РАЗДЕЛ 3 Программное обеспечение микропроцессорных систем 5 страница

Команда называется адресной, если один или несколько ее операндов располагаются в оперативной памяти.

Бу­дем называть такой операнд адресным. Для использова­ния адресного операнда необходимо сформировать его эффективный, или исполнительный, адрес. Таким обра­зом, адресная команда требует дополнительного обраще­ния процессора к памяти для каждого из ее адресных операндов, что удлиняет интервал ее выполнения по сравнению, например, с регистровыми командами, опе­ранды которых находятся в заданных регистрах процес­сора.

Необходимость формирования эффективного адреса операнда в адресной команде вызывается различными причинами. Одна из причин заключается в том, что из-за ограниченной длины команды в ней нельзя записать полный физический адрес операнда, а можно поместить лишь некоторую величину (например, смещение относи­тельно содержимого некоторого регистра) с помощью, которой вычисляется фактический адрес операнда. Другая причина заключается в необходимости осуществле­ния нескольких различных способов адресации операн­дов — процедур, или логических схем, позволяющих пре­образовать адресную информацию об операнде в эффек­тивные, или физические, адреса операндов в памяти ЭВМ. В дальнейшем способ адресации будем называть режи­мом адресации.

В МП используется пять различных способов адресации. Рассмот­рим каждый из них.

Прямая адресация. При этом способе адресации младшая половина шестнадцатиразрядного адреса содержится во втором байте трехбай­товой команды, а старшая половина – в ее третьем байте. Первый байт используется для размещения кода операции. Например, на рис. 3 показана команда прямой загрузки аккумулятора содержи­мым ячейки памяти, расположенной по шестнадцатеричному адресу 001А16.

Рис. 3. Пример выполнения команды прямой адресации.

 

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

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

Косвенная адресация.При необходимости многократного обра­щения к какой-либо ячейке памяти ее адрес удобнее хранить не в са­мой команде, а в одном из внутренних регистров МП. Тогда в команде необходимо указать лишь номер регистра, в котором хранится адрес интересующей ячейки памяти. Такая адресация называется косвенной. Для хранения шестнадцатиразрядного адреса однобайтовые регистры объединяются в регистровые пары, которые именуются по названию первого регистра пары.

Номера регистровых пар кодируются следующим образом:

В первом регистре пары всегда хранится старший байт адреса, а во втором – младший байт.

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

На рис. 4 в качестве примера показано выполнение команды косвенной загрузки аккумулятора содержимым ячейки, адрес кото­рой 001А16 хранится в регистровой паре DE. Команда косвенной за­грузки аккумулятора однобайтная и, кроме кода операции, содержит номер 01 регистровой пары DE. Старшая часть адреса ячейки памяти (0016) хранится в регистре D, а младшая часть (1А16)— в регистре Е. Содержимое 001А16 регистровой пары передается в регистр адре­са МП, в результате чего происходит обращение к ячейке памяти по адресу 001А16. Содержимое ячейки памяти по указанному адресу ко­пируется в аккумулятор, в котором после выполнения команды за­грузки окажется двоичное число 11010111. Поскольку при обращении к ячейке памяти ее содержи­мое не разрушается, оно может использоваться много­кратно при выполнении дру­гих команд.

 

Рис. 4. Пример выполнения команды косвенной адресации.

Непосредственная адреса­ция. В командах с непосред­ственной адресацией данные операнда находятся непо­средственно во втором или втором и третьем байтах команды. В первом байте, как обычно, размещается код операции. При использовании такого способа не тре­буется указание какого-либо адреса памяти. Эти данные берутся не­посредственно из команды, куда они заносятся программистом при программировании. В процессе выполнения программы эти данные остаются неизменными, так как вместе с командами размещаются в ПЗУ. Этими данными обычно являются некоторые константы, зара­нее известные программисту.

Рис. 5. Пример выполнения команды непосредственной адресации.

 

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

Регистровая адресация. Если обрабатываемые данные размещены во внутренних регистрах МП, то обратиться к ним можно, указав двоичные коды регистров непосредственно в первом байте команды. Такая адресация называется регистровой. Кодирование регистров про­изводится трехразрядными двоичными или одноразрядными восьме­ричными кодами:

Рис. 6. Пример выполнения команды пересыпки содержимого регистра В в регистр С.

 

Рис. 7. Пример выполнения команды пересылки содержимого ячейки памяти М в регистр С.

 

На рис. 6 показан пример выполнения команды пересылки данных из регистра В в регистр С. Три младших разряда 000 одноби­товой команды являются кодом регистра-источника В, а следующее три двоичных разряда представляют код регистра-приемника информа­ции С. После выполнения команды копия содержимого регистра В пересылаются в регистр С. Содержимое регистра В при этом остается неизменным.

Необходимо обратить внимание на то, что среди кодов регистров отсутствует код 110. Наличие этого кода в регистровой команде означает, что необходимо обращться не к одному из перечис­ленных регистров, а к некоторой ячейке памяти М, адрес которой хранится в регистрах Н и L, причем старшая часть адреса размещается в регистре Н, а младшая — в регистре L. Команды, в которых наряду с регистровой адресацией используется косвенная, называются коман­дами с косвенно-регистровой адресацией.

На рис. 7 дан пример выполнения косвенно-регистровой коман­ды пересылки содержимого ячейки с адресом 001А16, хранящимся в регистрах Н и L, в регистр С, адрес которого 001 указан в команде. Двоичный код 110 в первых трех разрядах команды означает, что источником информации является ячейка М, адрес которой хранится в регистрах Н и L. После завершения команды содержимое ячейки копируется в регистр С.

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

 

ТРЕТИЙ ВОПРОС

Из рассмотренных выше отечественных микроЭВМ наиболее развиты режимы адресации в микроЭВМ «Электроника-60». В микроЭВМ «Электроника-60» раз­личают форматы одноадрес­ных и двухадресных команд. В одноадресной команде ука­зывается единственный опе­ранд (рис. 8, а). В разря­дах 15—6 записывается код операции КОП. Разряды 5— 3 содержат код метода адре­сации, причем разряд 3 отве­ден для признака адресации (прямой или косвенной). В младших разрядах 2—0 мо­жет храниться номер реги­стра общего назначения, участвующего в выполнении команды. В целом разряды 5—0 образуют поле адреса­ции операнда.

В двухадресной команде (рис. 8, б) используются два операнда, левый из кото­рых называется источником, а правый — приемником. Соответственно в формате ко­манды кроме поля кода операции (разряды 15—12) есть два поля адресации операндов: поле адресации источ­ника (разряды 11—6) и поле адресации приемника (разряды 5—0). Структура каждого из этих полей сов­падает со структурой поля адресации операнда в одно­адресной команде. Ниже в примерах, с помощью которых будут иллюстрироваться режимы адресации, имена ре­гистров записываются в соответствии с правилами языка ассемблера микро-ЭВМ «Электроника-60».

Рис. 8. Формат одноадресной (а) и двухадресной (б) команд микро-ЭВМ «Электроника-60».

 

Режимы адресации памяти в микро-ЭВМ «Электроника-60» можно разделить на две группы: 1) общие ре­жимы; 2) режимы, основанные на использовании регистра с номером 7 как счетчика команд. К особой группе режи­мов адресации памяти можно отнести режим, в котором регистр с номером 6 хранит указатель стека.








Дата добавления: 2015-12-08; просмотров: 785;


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

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

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

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