Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
50
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать
      1. Указатель инструкции

В состав микропроцессора 8086 входит 16-разрядный указатель инструкции IP. Он содержит смещение следующей команды в текущем сегменте кода (сегментный адрес хранится в регистре сегмента кодаCS). При выборке очередной команды содержимоеIPувеличивается на количество байтов, входящих в код команды.

Регистр IPне может напрямую использоваться в арифметико-логических командах. Его содержимое сохраняется в стеке при обращении к подпрограмме с помощью инструкцииCALL, а также при возникновении прерывания. Восстановление содержимого регистраIPиз стека возможно только с помощью инструкций возврата из прерыванияIRETи возврата из подпрограммыRET. Кроме того, в регистрIPзагружается новое значение при выполнении любых инструкций переходов.

    1. Выполнение инструкций

В зависимости от назначения все инструкции можно разделить на несколько групп:

– инструкции пересылки;

– арифметико-логические инструкции;

–­ инструкции сдвигов;

– инструкции обработки строк;

– инструкции переходов;

– инструкции управления и вспомогательные;

– префиксы инструкций.

Первые три категории команд (пересылки, арифметико-логические и сдвигов) можно назвать инструкциями обработки данных. Инструкции обработки строк стоят несколько особняком, поскольку они отличаются от команд обработки данных способом определения местоположения своих операндов. Инструкции переходов осуществляют передачу управления в процессе выполнения программы. Инструкции управления и вспомогательные в обычных программах применяются редко, их основное назначение – управление состоянием процессора. Префиксы инструкций самостоятельного значения не имеют и применяются в составе других команд, модифицируя их выполнение.

Выполнение каждой инструкции складывается из следующих шагов:

– выборки из памяти и дешифровки кода команды;

– определения местоположения операндов, если они явно задаются кодом команды (некоторые инструкции не имеют операндов вообще, в некоторых других местоположение операндов подразумевается);

– вычисления эффективного адреса операнда в памяти, если таковой имеется;

– собственно выполнения инструкции.

      1. Адресация операндов

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

Явно заданные операнды делятся на следующие группы:

– регистровые операнды;

– операнды в памяти;

– непосредственные операнды;

– адреса переходов.

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

Эффективное использование системы команд микропроцессора 8086 затрудняется “неортогональностью” применяемых способов адресации. Например, некоторые инструкции не допускают использования операндов в памяти или накладывают на их применение те или иные ограничения; в других невозможно использование непосредственных операндов; третьи используют в качестве операнда только один определённый регистр и не допускают применения других и т.д. В этом отношении разработки фирмы Intelсущественно проигрывают появившимся за десятилетие до них мини-ЭВМPDP-11 фирмыDEC, система команд которых намного удобнее и, несмотря на меньший набор команд, позволяет создавать значительно более эффективные программы2.