Команды управления процессором
В группе команд управления процессором различают три типа: операции с флагами, установки ЦП в особые состояния и синхронизации с сопроцессорами.
Операции с флагами.Включают семь мнемокодов команд: STC (установка флага переноса CF), CMC (дополнение флага переноса CF), CLC (сброс флага переноса CF), STD (установка флага направления DF), CLD (сброс флага направления DF), STI и CLI (соответственно установка и сброс флага разрешения прерывания IF).
Назначение перечисленных команд очевидно. Так, команды STC CMC и CLC позволяют задавать требуемое исходное значение флага CF при различных арифметических и логических преобразованиях данных и сдвигах. Команды STD и CLD используются при обработке строк для задания направления обработки: от первого элемента строки к последнему или наоборот. Наконец, команды STI и CLI служат для управления системой прерываний и позволяют соответственно разрешить или запретить прерывание на любом участке программы.
Команды установки ЦП в особые состояния.Включают два мнемокода: HLT (останов) и WAIT (ожидание), которые переводят процессор соответственно в состояние ожидания или останова.
Находясь в любом из этих состояний, процессор не выполняет никаких действий до тех пор, пока не будут поданы определенные внешние воздействия. Из состояния останова процессор может быть выведен двумя способами: путем начального сброса (сигналом по входу RESET) либо внешним прерыванием (сигнал запроса по входу INTR). При первом способе процессор перейдет к выполнению основной программы сначала, во втором - к выполнению программы обслуживания прерывания соответствующего уровня. При выполнении команды HLT содержимое указателя команд IP автоматически увеличивается на единицу, так что после выполнения программы обслуживания прерывания процессор перейдет к выполнению следующей за HLT команды.
Основной способ вывода процессора из состояния ожидания состоит вподаче сигнала отрицательной полярности на вход TEST. Таким образом, время нахождения в состоянии ожидания определяется моментами подачи команды WAIT и появлением активного нуля на входе TEST. Управление ожиданием с помощью этого механизма позволяет осуществлять синхронизацию, т. е. сопряжение во времени работы процессора с различными внешними устройствами (например, с сопроцессорами либо с устройствами, обладающими меньшим быстродействием). В случае, когда сигнал на входе TEST активен в момент подачи команды WAIT, процессор будет находиться в состоянии ожидания в течение трех тактов ГТИ.
Второй способ вывода процессора из состояния ожидания заключается в подаче запроса прерывания по входу INTR. Однако в этом случае процессор выходит из состояния ожидания только временно. По команде WAIT не происходит автоматического наращивания указателя команд IP, вследствие чего после выполнения соответствующей программы обслуживания прерывания процессор вновь перейдет к выполнению команды WAIT, т. е. перейдет в состояние ожидания. Важно отметить, что при возобновлении работы процессора после ожидания (по сигналу TEST = 0) внешние прерывания не будут обслуживаться до тех пор, пока не выполнится следующая за WAIT команда.
Команды синхронизации с сопроцессорами.Команды служат целям проектирования многопроцессорных систем на основе ЦП. Хотя система команд ЦП достаточно развита, в ней отсутствуют некоторые команды, характерные для высокопроизводительных систем. Как обычно, недостающие команды процессора можно реализовать с помощью соответствующих подпрограмм. Однако более эффективным решением является использование сопроцессоров - специализированных процессоров, предназначенных для расширения функций основного процессора. Например, отсутствующие в системе команд операции над числами с плавающей запятой могут быть выполнены спомощью сопроцессора Intel 8087.
Для организации совместной работы основного процессора системы с сопроцессорами служит команда ESC. Первый байт формата команды содержит код операции ESC, равный 11011, и трехразрядное поле х; второй байт имеет структуру постбайта, в котором поле reg обозначено как у (рис 1.9). Поле х указывает номер того сопроцессора многопроцессорной системы, который должен выполнить операцию, а поле у - номер (код) этой операции. Для организации взаимодействия основного процессора с сопроцессорами последние должны следить за появлением в потоке команд основного процессора команды ESC, которая укажет, какой сопроцессор и какую операцию должен выполнять. В общем случае поля х и у позволяют задать 64 комбинации 6-разрядных двоичных кодов, что при необходимости произвольным образом изменяет стандартное назначение полей х и у. Например, можно построить систему с одним сопроцессором, который выполняет 64 различные операции, либо с восемью сопроцессорами, каждый из которых будет выполнять до восьми операций, и т. д.
Рис. 1.9. Фрагмент программы умножения чисел с плавающей запятой
Поля mod и rim второго байта команды ESC используются для задания адреса операнда. По содержимому этих полей основной процессор извлекает операнд из памяти и выставляет его значение на ШД в качестве операнда для сопроцессора. Таким образом, основной процессор выдает всю необходимую информацию для работы соответствующего сопроцессора: момент включения в работу (появление кода операции ESC), номер сопроцессора (поле х), код операции (поле у) и операнд (выставлен на ШД).
Контрольные вопросы
1. Каково назначение блока преобразования адресов в ЦП?
2. Дайте сравнительную характеристику способов адресации.
3. Чем определяется время формирования исполнительного адреса?
4. Каковы основные отличия работы ЦП в минимальном и максимальном режимах?
5. В чем заключается назначение системного контроллера Intel 8288?
6. 7. В чем состоит различие в использовании флагов CF и OF?
8. В чем сходство и различие выполнения команд MUL и IMUL, а также DIV и IDIV?
9. В чем состоит основное назначение команды SCAS?
10. Какие ограничения присущи командам передачи управления?
11. Перечислите все префиксы, которые можно использовать с командой MOV.
12. Объясните главное различие в состояниях останова и ожидания, в которые ЦП попадает после выполнения команды HLT и WAIT, соответственно?
13. Какие команды выполняют удвоение и деление пополам чисел со знаком?
14. Сколько восьмиразрядных РОН вы знаете? Перечислите их имена.
15. Как используется регистр ВР для доступа к содержимому стека?
16. Что принято называть программной моделью процессора?
17. Для чего служат регистры-индексы?
18. В каких операциях по умолчанию используется сегментный регистр ES?
19. Могут ли совпадать значения в регистрах DS и CS?
20. Назовите три флага управления режимом работы ЦП.
21. В какое значение установятся флаги CF и SF после вычитания из меньшего числа большего?
22. В каком из способов адресации используется больше всего составляющих при формировании эффективного адреса?
23. Сколько байтов занимает самый длинный и самый короткий формат команды?
24. Почему очередь команд состоит из 6-ти байтов?
25. В чем состоит особенность команд работы с портами ввода и вывода?
26. Какое значение примут флаги ZF, SF и CF после выполнения команды
add ah,bh, если перед выполнением команды ah = bh = 128?
27. Объясните назначение флага DF на примере. Когда требуется устанавливать DF = 1?
28. Поясните принцип формирования мнемокодов команд условных переходов.
29. Как ЦП определит начальный адрес подпрограммы обслуживания прерывания 25-го уровня?
30. Какие действия может выполнять ЦП, находясь в состоянии ожидания?
Раздел 2. Арифметический процессор
Дата добавления: 2015-12-22; просмотров: 966;