Рассмотренная выше команда прерывания INT при значении поля v = 0 имеет однобайтовый формат, т. е. не требует специаль­ного указания уровня прерывания. Эта команда автоматически воспринимается процессором как прерывание третьего уровня (type=3) и обычно используется в программах в качестве контрольной точки.

Команда прерывания при переполнении INTO вызывает пе­реход на обслуживание прерывания четвертого уровня (type = 4) в случае, когда значение флага переполнения OF = 1. Команда INTO обычно используется после арифметических команд над числами со знаком. Обычно несколько первых уровней прерыва­ний (до 32) резервируются под обработку ряда специфических ситуаций, таких, например, как попытка деления на нуль, переполнение и тому подобных.

Особенность обработки прерываний зарезервированных уров­ней состоит в том, что процессор переходит к их обслуживанию независимо от значения флага IF разрешения прерываний.

Однобайтовая команда IRET ставится в конце каждой про­граммы обслуживания прерывания и обеспечивает возврат из прерывания. По этой команде процессор извлекает из стека значение указателя команд IP и программного сегмента CS, а также восстанавливает прежнее содержимое регистра флагов F (как и по команде POPF). При необходимости содержимое остальных регистров ЦП, соответствующее прерываемой программе, может быть запомнено в стеке при переходе на программу обслужива­ния и затем восстановлено при возврате из нее с помощью команд обращения к стеку.

1.9. Команды управления процессором

В группе команд управления процессором различают три типа: операции с флагами, установки ЦП в особые состояния и синхронизации с сопроцессорами.

НЕ нашли? Не то? Что вы ищете?

Операции с флагами. Включают семь мнемокодов команд: 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.1. Архитектура арифметического процессора

Реализация алгоритмов, в которых необходима высокая точность вычислений, наталкивается на трудности, связанные с недостаточной разрядностью представимых данных. Кроме того, в системе команд ЦП отсутствуют операции с данными, представленными с плавающей запятой, что затрудняет обработку чисел, изменяющихся в широком диапазоне. Для увеличения разрядности данных и выполнения арифметических операций с плавающей запятой можно составить соответствующие подпрограммы, однако их выполнение будет занимать значительное время. Более эффективным является использование специальных аппаратных средств. К таким средствам относится арифметический процессор (АП) Intel 8087, который называют специализированным сопроцессором для выполнения арифметических операций над числами с плавающей запятой. АП позволяет работать с тремя типами данных; целыми числами, представленными в двоичной системе счисления; целыми числами, представленными в двоично-десятичной системе счисления; вещественными числами.

Двоичные целые числа. Могут быть представлены в одном из трех форматов: слово (16-разрядное число со знаком), короткое целое (32-разрядное число со знаком) и длинное целое (64-разрядное число со знаком). В памяти целые двоичные числа записываются начиная с младшего байта.

Мантисса

 

31

 

23

 

0

 

Порядок

 

64

 

79

 

0

 

ВВФ

 

Порядок

 

Мантисса

 

Двоично-десятичное представление чисел. Соответствует формату, показанному на рис. 2.1, а, где d17 – d0 - обозначают 4-разрядные коды цифр числа. Таким образом, максимальное число значащих разрядов равно 18. Для записи двоично-десятичных чисел в памяти отводится 10 байт. Старший байт (на рисунке разрядысодержит только знак числа в старшем бите, а остальные его разряды не используются.

Вещественные числа. Могут быть представлены в одном из трех форматов. Короткий вещественный формат (КВФ) занимает 32 двоичных разряда и состоит из 23-разрядной мантиссы, 8-разрядного порядка и знака мантиссы. Длинный вещественный формат (ДВФ) занимает 64 двоичных разряда и состоит из 52-разрядной мантиссы, 11-разрядного порядка и знака мантиссы. Внутренний вещественный формат (ВВФ) занимает 80 двоичных разрядов и состоит из 64-разрядной мантиссы, 15-разрядного порядка и знака мантиссы. Все форматы вещественных чисел соответствуют стандарту IEEE 754.

Диапазон значений вещественных чисел с плавающей запятой, в котором могут выполняться вычисления арифметическим процессором, приведен в табл. 4.1. Для представления бесконечно больших чисел введены специальные коды - единица во всех разрядах порядка и нуль во всех разрядах мантиссы. Комбинации представлений мантиссы и порядка, лежащие за пределами бесконечности, обозначены NAN (от английского Not А Number - не число). Они не воспринимаются процессором как числа, так как выходят за границы допустимой точности вычислений. Таким образом, максимальный рабочий диапазон значений чисел соответствует формату ВВФ и независимо от типа исходных данных АП выполняет все операции в этом формате. Преобразование исходных данных любого типа (целые, двоично-десятичные, вещественные в КВФ и ДВФ) в формат ВВФ осуществляется сопроцессором автоматически. Причем такое преобразование всегда происходит без потери точности, так как формат ВВФ обеспечивает максимальный рабочий диапазон значений чисел. Результат вычислений может быть получен в любой желаемой форме представления (целые, двоично-десятичные, вещественные КВФ и ДВФ), т. е. получение результата связано с обратным преобразованием из внутреннего вещественного формата в требуемый. Естественно, обратное преобразование в ряде случаев может вызвать потерю точности за счет необходимости округлений. В любом случае потери точности процессор сигнализирует об этом.

Способ записи мантиссы и порядка вещественных чисел имеет следующие особенности. Числа представляются в нормализованном виде, т. е. первая значащая цифра после запятой не нуль. Например, нормализованный вид десятичного числа 0,0057 есть 0,57*10-2.

Нормализованная мантисса двоичного числа всегда будет иметь «1» после запятой. Поскольку первая цифра после запятой всегда «1», нет смысла ее хранить, и в АП она условно переносится в разряд целых. Например, если записана мантисса О, то подразумевается, что записано число 1,010...0. Форматы вещественных чисел (рис. 2.1) содержат только знак мантиссы.

Таблица 2.1

Диапазоны
представлений

Диапазоны значений

Знак

Порядок

Мантисса

КВФ

ДВФ

ВВФ

1

1 1

1 1

NAN

NAN

NAN

. . .

. . .

. . .

. . .

. . .

1

1 1

00...01

NAN

NAN

NAN

1

1 1

00...00

- оо

- оо

- оо

1

11...10

11...11

- 3,37*1038

- 1,67*10308

- 1,2*104932

. . .

. . .

. . .

. . .

. . .

1

00...00

00...01

- 8,43*10-37

- 4,19*10-307

- 3,4*10-4931

1

00...00

00...00

- 0

- 0

- 0

0

00...00

00...00

+0

+0

+0

0

00...00

00...01

+ 8,43*10-37

+ 4,19*10-307

+ 3,4*10-4931

. . .

. . .

. . .

. . .

. . .

0

1 1

1 1

+ 3,37*1038

+ 1,67*10308

+ 1,2*104932

0

1 1

00...00

+ оо

+оо

+оо

0

1 1

00...01

NAN

NAN

NAN

. . .

. . .

. . .

. . .

. . .

0

11...11

11...11

NAN

NAN

NAN

Порядки всегда суммируются с константой смещения, выбранной так, что максимальное отрицательное значение порядка, будучи просуммировано с этой константой, дает в результате нуль. Константы смещения имеют различные значения для каждого формата вещественных чисел: КВФ - 127, ДВФ - 1023 и ВВФ - 16383.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27