Предыдущий раздел ВЫПОЛНЕНИЕ ПРОГРАММ ПРОЦЕССОРОМ I8086 Следующий раздел

2.2. Архитектура процессора i8086

На рис. 7 приведена архитектура (структура) микропроцессора i8086. Рассмотрим назначение его основных модулей.

 

Рис. 7. Структура микропроцессора i8086

 

Блок логика управления выполняет дешифрирование и исполнение машинных команд. Если очередная команда является арифметической или логической, то она направляется логикой управления для выполнения в арифметико-логическое устройство.

Регистры данных предназначены для хранения операндов и результатов операций. Регистр – ячейка памяти, скорость обмена с которой намного выше, чем  с другими видами памяти: с ОП и, тем более, с ВП. К регистрам данных относятся регистры АХ, ВХ, СХ и DX. Они допускают адресацию не только целых регистров, но и их младшей и старшей половин. Например, допускается использовать два байта в регистре АХ вместе, а также указывать отдельные байты - AL (младший) и АН (старший). Регистры ВХ, СХ и DX, кроме обычных функций, имеют и специальные назначения.                                                        

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

В группу регистров указатели входят указатель команды IP и указатель стека SP, а также регистры ВР,  SI и DI. Указатель команды IPочень важный регистр, который содержит относительный адрес (смещение) следующей команды, подлежащей выполнению на ЦП. Указатель стека SP также очень важен: он содержит относительный адрес вершины стека. Подробнее регистры IP и SP будут рассмотрены позже.

Остальные  регистры-указатели используются для адресации ячеек какого-то массива относительно его начала. При этом базовый регистр ВР часто используется для адресации ячеек программного стека относительно его вершины. А индексные регистры SI и DI обычно используются при циклической обработке элементов массива. При этом для того, чтобы обрабатывать одной и той же машинной командой различные ячейки массива, достаточно перед выполнением тела цикла осуществлять изменение содержимого того индексного регистра, который используется для адресации ячеек массива.

Регистр флагов FLAGS отражает текущее состояние ЦП. Структура этого регистра приведена на рис. 8.

 

Рис. 8. Регистр флагов микропроцессора i8086

 

Cемь битов в FLAGS не используются. Остальные биты (флажки) делятся на условные и управляющие. Условные флажки отражают результат предыдущей арифметической или логической операции. Это:

  1) SFфлаг знака. Равен старшему биту результата. Так как в дополнительном коде старший бит отрицательных чисел содержит 1, а у положительных он равен 0, то SF показывает знак предыдущего результата;

  2) ZFфлаг нуля. Устанавливается в 1 при получении нулевого результата и сбрасывается в 0, если результат не равен 0;

  3) PFфлаг паритета. Устанавливается в 1, если младшие 8 битов результата содержат четное число единиц, в противном случае он сбрасывается в 0;

  4) CFфлаг переноса. При сложении (вычитании) устанавливается в 1, если возникает перенос (заем) в старший бит (из старшего бита). Обычно данный флаг используется не по прямому назначению, а как признак возврата из подпрограммы: если подпрограмма (процедура или обработчик прерываний) завершилась успешно, то она возвращает CF=0, а если с ошибкой, то CF=1;

  5) AFфлаг вспомогательного переноса. Устанавливается в 1, если при сложении (вычитании) возникает перенос (заем) из бита 3. Флаг предназначен только для двоично-десятичной арифметики;

  6) OFфлаг переполнения. Устанавливается в 1, если знаковый бит изменился в той ситуации, когда этого не должно было произойти.

Пусть, например, машинная команда add (здесь и везде далее используются ассемблерные мнемоники машинных команд) выполнила следующее сложение:

                                        0010  0011  0100  0101

                                   +   0011  0010  0001  1001

                                        0101  0101  0101  1110   ,

тогда после ее выполнения получаются состояния флажков:

SF = 0,  ZF = 0,  PF = 0,  CF = 0,  AF = 0,  OF = 0  .

Если  add  выполнила сложение:

                                       0101  0100  0011  1001

                                   +  0100  0101  0110  1010

                                       1001  1001  1010  0011  ,

то флажки принимают состояния:

SF = 1,  ZF = 0,  PF = 1,  CF = 0,  AF = 1,  OF = 1 .

Флажки управления  влияют на выполнение специальных функций. Эти флажки устанавливаются лишь несколькими специальными машинными командами. Это флажки:

1) DFфлаг направления. Он используется при выполнении команд, обрабатывающих цепочки – последовательности ячеек памяти. Если флаг сброшен, цепочка обрабатывается с первого элемента, имеющего наименьший адрес. Иначе цепочка обрабатывается от наибольшего адреса к наименьшему;

2) IFфлаг разрешения прерываний. Когда установлен этот флажок, ЦП выполняет маскируемые прерывания. Иначе эти прерывания игнорируются;

3) TFфлаг трассировки. Если этот флажок установлен, то после выполнения каждой машинной команды, ЦП генерирует внутреннее аппаратное прерывание (прерывание номер 1).

Рассмотренный регистр FLAGS чрезвычайно важен не только для понимания логики работы ЦП, но и всей ЭВМ в целом. Это обусловлено тем, что данный регистр фактически является дескриптором ЦП. Дескриптор  (или блок управления) – структура данных, используемая для управления модулем ЭВМ. При этом каждый сколько-нибудь сложный модуль ВС имеет свой блок управления.

Последний блок ЦП образуют сегментные регистры CS, SS, DS и ES. Данные регистры используются для адресации ячеек ОП.

 


Предыдущий раздел В начало Следующий раздел