
- •Замковец с.В. Левин н.А. Попкова е.Я. Архитетура микропроцессоров
- •Удк 681.3.06
- •Классификация микропроцессоров по архитектуре
- •Архитектура микропроцессоров 80х86
- •2.1. Используемые типы данных
- •2.2. Регистры микропроцессоров
- •2.3. Режимы адресации
- •2.4. Управление стеками
- •2.5. Сегментная организация памяти
- •Система команд микропроцессоров
- •3.2.Команды передачи данных
- •Команды двоичной арифметики
- •Команды десятичной арифметики
- •Логические команды
- •Команды сдвигов
- •Команды обработки бит и байт
- •Команды обработки цепочек
- •Команды передачи управления
- •3.9.1. Команды условных переходов
- •3.9.2 Команды безусловных переходов
- •3.9.3 Команды вызова подпрограмм
- •3.9.4 Команды возврата из подпрограмм
- •4. Прерывания
- •4.1. Прерывания в реальном режиме
- •Защита по привилегиям
- •5.1. Определение уровней привилегий
- •Вычисления с плавающей запятой
- •6.1. Форматы чисел с плавающей запятой
- •6.3. Регистры сопроцессора
- •Mmx архитектура
- •7.1. Форматы представления данных
- •7.2. Арифметика с насыщением
- •7.3. Mmx регистры
- •7.4. Система команд mmx
- •1. Классификация микропроцессоров по архитектуре ... 8
- •2. Архитектура микропроцессоров 80х86 ………………...10
6.3. Регистры сопроцессора
Операнды команд арифметического сопроцессора могут находиться в памяти или в одном из восьми численных регистров. Эти регистры хранят числа только в формате с расширенной точностью.
Регистр управления содержит поля, значения в которых влияют на общее поведение сопроцессора. Содержимое этого регистра изменяется только при его явной загрузке программой. Регистр состояния имеет поля, показывающие внутренние условия процессора, например, биты кода условия, фиксирующие результаты сравнений. Регистр признаков применяется для регистрации особенностей содержимого численных регистров. Указатель команд и указатель операндов содержат адреса памяти последней команды сопроцессора и ее операндов.
Численные регистры образуют регистровый стек, состоящий из восьми 80-разрядных регистров данных R0-R7. В этих регистрах хранятся числа, представленные в форме с плавающей запятой в расширенном вещественном формате. Этот формат является единственным внутренним форматом чисел. В любой момент времени трехбитное поле TOP (Top of Stack), расположенное в слове состояния SW определяет регистр, являющийся текущей вершиной стека и обозначаемый ST(0). Если, например, в поле TOP содержится 011В, то вершиной стека является регистр R3 и именно он указывается в командах как ST(0). Регистр R4 находится сразу ниже вершины стека и обозначается как ST(1). Регистр R2 оказывается в самом низу стека и обозначается ST(7). Другими словами, регистр ST(0) содержит последнее включенное в стек значение, регистр ST(1) – предпоследнее и т.д.
Операция загрузки или включения в стек осушествляет декремент поля TOP и загружает адресуемые данные в новую вершину стека, что приводит к автоматической перенумерации регистров. При выполнении операции сохранения и извлечения из стека в приемник, например в память, передается содержимое текущей вершины стека, а затем производится инкремент поля TOP.
СИСТЕМА КОМАНД
Команды с плавающей запятой делятся на пять групп: команды передачи данных, арифметические команды, команды сравнения, команды трансцендентных операций и команды управления. Типичная команда воспринимает один или два операнда, выполняет указанную операцию и возвращает результат. Содержимое регистров наиболее часто служат операндами, но может привлекаться и содержимое памяти.
Команды передачи данных производят передачи данных между регистрами стека, а также между вершиной стека и памятью. Одной командой число из памяти, представленное в любом формате, преобразуется в формат с расширенной точностью и загружается в стек. Аналогичным образом, но в обратном порядке, осуществляется передача числа в память.
Команды загрузки FLD производят декремент вершины стека TOP и передают адресуемый операнд в новую вершину стека. Команды сохранения FST производят передачу содержимого ST(0) в память.
В устройстве с плавающей запятой имеются команды загрузки наиболее часто встречающихся в вычислениях констант: загрузка 0, загрузка 1, загрузка π, загрузка некоторых двоичных и десятичных логарифмов.
Набор арифметических команд включает варианты основных арифметических операций, а также команды извлечения корня квадратного, масштабирования и др. Примерами этих команд служат команды FADD, FSUB, FDIV, FMUL, FSQRT.
Команды группы сравнения предназначены для анализа числа в вершине стека и формирование кода условия. Например, команда FCOM х сравнивает содержимое ST(0) с операндом х и устанавливает коды условия (больше, меньше, равны или не сравнимы).
Команды группы трансцендентных функций выполняют базовые вычисления, относящиеся к тригонометрическим функциям (sin, cos и т.д.), обратным тригонометрическим функциям (arcsin, arcos, arctg и т.д.), логарифмическим функциям (log2, log10, loge), показательным функциям (хy, 2x, ex), гиперболическим функциям (sh, ch, th и т.д.) и обратным гиперболическим функциям (arsh, arch, arcth).
Команды группы управления ориентированы в основном на операции системного уровня. Для прикладных программистов наибольший интерес представляют команды, оперирующие словами управления и состояния. С их помощью можно задать режим работы сопроцессора, а также проанализировать результаты команд сравнения и проверки.