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