Программа решения задачи состоит из последовательности команд, которые выполняются друг за другом. Исключения составляют команды передачи управления, изменяющие естественный ход выполнения программы путем передачи управления по указанному в них явному или неявному адресу.
Каждая команда программы начинает исполняться сразу, как только ее адрес (смещение) поступит в регистр микропроцессора Instruction Pointer (IP). Для выполнения любой, даже самой короткой команды в МП типа CISC требуется несколько тактов.
1. Первый такт у всех команд одинаковый — по адресу, поступившему в IP, выполняется считывание кода команды и передача этого кода в блок регистра команд (БРК) микропроцессора. Более подробно последовательность работы машины на этом такте можно описать следующим образом (здесь и далее указываются только основные управляющие сигналы):
l в регистр IP поступает сигнал считывания информации, и считанный код адреса смещения команды (Асмещ) поступит на вход узла формирования адреса в УУ;
|
|
l на второй вход этого устройства из МПП поступит считанный из регистра сегмента кода (CS) начальный адрес кодового сегмента;
l в УФА эти коды сложатся и сформируется абсолютный адрес команды по формуле
Аабс = А'сегм · 16 + Асмещ;
l абсолютный адрес по кодовым шинам адреса (КША) поступит в регистр адреса оперативного запоминающего устройства (ОЗУ), и будет подготовлена соответствующая этому адресу ячейка памяти для считывания информации;
l в ОЗУ поступит управляющий импульс считывания, и код команды из ячеек памяти будет передан на кодовые шины данных (КШД). Количество считанных ячеек зависит от длины кода считываемой команды;
l по КШД код команды пройдет на регистр данных ОЗУ и будет записан обратно в ячейки памяти, из которых он считывался (будет регенерирован);
l одновременно по тем же КШД код команды пройдет в УУ и будет записан в БРК.
Второй и последующие такты команды зависят от кода этой команды, и в первую очередь, от кода операции (КОП). Рассмотрим дальнейшую работу ПК применительно к выполнению ассемблерной команды ADD AX, Pole.
2. В соответствии с данной командой на втором такте должен быть расшифрован код операции команды для определения набора управляющих сигналов, необходимых для выполнения команды, из регистра АХ считано первое число, участвующее в операции, и это число помещено в регистр Рег1 АЛУ. Для этого:
l в начале второго такта выполнения команды код операции, соответствующий мнемонике ADD, поступит из БРК на вход дешифратора операций (ДШО) устройства управления, в котором по данному коду будет выбрана одна из шин;
l эта шина является адресной шиной ПЗУ микропрограмм, инициирующей группу ячеек памяти, содержащих сигналы, необходимые для управления выполнением операции сложения. Под действием этих управляющих сигналов в этом же втором такте из БРК будет считан адрес первого числа — АХ, код которого пройдет транзитом через УФА и по КША поступит в МПП;
|
|
l в МПП будет подготовлен для работы регистр АХ и из этого регистра будет считано первое число, которое по КШД пройдет в Рег1 АЛУ.
3. На третьем такте выполнения команды ADD AX, Pole из инициированных ячеек ПЗУ микропрограмм будут считаны сигналы, которые выполнят следующие действия:
l считают второй адрес из команды, находящейся в БРК. Символическое имя этого адреса Pole, но в коде машинной команды будет находиться уже двоичный код адреса Асмещ, взятый из таблицы адресов именованных полей памяти (эту таблицу можно видеть в конце листинга программы);
l передадут этот адрес на вход УФА. На второй вход УФА поступит начальный адрес сегмента данных Асегм из регистра DS. В УФА будет сформирован абсолютный адрес второго числа:
Аабс = А'сегм · 16 + Асмещ
(составляющие Абаз и Аинд в команде не использованы);
l адрес Аабс по КША пройдет в ОЗУ, где по этому адресу будет считано второе число;
l по КШД считанное число поступит в Рег2 АЛУ и обратно в ОЗУ для регенерации.
4. На четвертом такте все управляющие сигналы поступят в АЛУ, где:
l число из Рег1 будет передано на один вход сумматора;
l число из Рег2 будет передано на второй вход сумматора;
l в сумматоре числа сложатся и сумма поступит в Рег1 АЛУ.
5. В пятом последнем такте выполнения команды ADD AX, Pole сумма чисел из АЛУ должна быть передана и записана в регистр АХ МПП, а в регистре IP — сформирован адрес смещения следующей команды программы. Для этого:
l из кода команды в БРК будет считан первый адрес — АХ, который транзитом через УФА пройдет по КША в МПП, где инициирует для приема информации регистр АХ;
l из Рег1 АЛУ будет считана сумма чисел, которая по КШД пройдет на вход МПП и будет записана в регистр АХ;
l в регистр IP будет добавлено число 6, равное длине выполненной команды (в нашем случае команда ADD AX, Pole имеет длину 6 байтов);
Поскольку в регистре IP сменился код адреса смещения, ПК приступит к выполнению следующей команды программы.
В случае выполнения команд передачи управления в конце такой команды к содержимому IP добавится не длина выполненной команды, а разность между адресом смещения текущей команды и адресом смещения команды, к которой передано управление (при передаче управления в другой сегмент будет изменено и содержимое регистра CS).