- •1.Общие сведения о пэвм.
- •3.Принципы взаимодействия основных частей пэвм.
- •4. Общие сведения об операционных системах, применяемых на пэвм.
- •5.Базовая система ввода/вывода (bios). Подсистема post.
- •Вопрос 9.Файловая система fat
- •10) Ntfs
- •11)Резидентные системные программы и утилиты. Командные файлы, файлы конфигурации системы
- •Файл autoexec.Nt
- •Файлы winstart.Bat и dosstart.Bat
- •Файл config.Nt
- •12. Прерывания дисковой системы пэвм.
- •14. Назначение, структурная схема и программирование контроллеров нdd.
- •15. Назначение и состав системы ввода-вывода.
- •19. Организация обмена данными через параллельные порты.
- •20. Характеристики микропроцессоров intel и amd
- •21. Математические сопроцессоры.
- •1. Регистры ммх
- •2. Типы данных ммх
- •3. Команды пересылки данных ммх
- •4. Команды преобразования типов ммх
- •5. Арифметические операции ммх
- •6. Команды сравнения ммх
- •7. Логические операции ммх
- •8. Сдвиговые операции ммх
- •9. Команды управления состоянием ммх
- •10. Расширение amd 3d
- •25. Модель микропроцессора для программиста.
- •Реальный режим общие сведения
- •26. Спецификация регистров микропроцессора. Режимы работы. Типы данных.
- •Реальный режим общие сведения
- •Работа с адресами
- •Обработка прерываний
- •27. Системные регистры.
- •Регистры управления памятью
- •Регистры управления процессором
- •Отладочные регистры
- •Машинно-специфичные регистры
- •31. Системные ресурсы пэвм
- •32. Дескрипторы
- •33. Сегмент состояния задачи
- •35. Прерывания пэвм
- •Исключения в защищённом режиме
- •Обработка аппаратных прерываний
- •39. Контроллер прерываний. Исключения.
- •42 Полупроводниковые пзу, рпзу.
- •43 Сегментация. Физические и логические адреса.
- •Общие сведения
- •Работа с адресами
- •Обработка прерываний
- •Вход в защищённый режим(286)
- •2.1. Подготовка к переключению в защищённый режим
- •2.2. Переключение в защищённый режим
- •2.3. Возврат в реальный режим
- •47 Режим виртуального процессора i8086
- •48 Преобразование адресов
- •Программирование микросхемы таймера 8253/8254.
- •50.Каналы и управление таймеров. Микросхемы таймера 8253/8254
- •Средства ms-dos для работы с таймером
- •51.Режимы работы таймеров. Микросхемы таймера 8253/8254
- •52.Назначение, структурная схема контроллера пдп(dma).
- •53 Программирование контроллера пдп(dma).
- •54 Организация ввода данных с клавиатуры.
- •56. Прерывания и порты клавиатуры.
- •58. Прерывания видеосистемы.
- •59.Организация вывода информации на экран дисплея через память видеоадаптера.
- •60. О рганизация вывода информации на экран дисплея через прерывания. Прерывания dos
- •Прерывания bios
- •Int 10h
- •Int 1Dh
- •Int 1Fh
21. Математические сопроцессоры.
В процессорах Intel все операции с плавающей запятой выполняет специальное устройство, FPU (Floating Point Unit), с собственными регистрами и собственным набором команд, поставлявшееся сначала в виде сопроцессора (8087, 80287, 80387, 80487), а начиная с 80486DX — встраивающееся в основной процессор. FPU полностью соответствует стандартам IEEE 754 и (начиная с 80486) IEEE 854.
Числовой процессор может выполнять операции с семью разными типами данных, представленными в таблице 9, — три целых двоичных, один целый десятичный и три типа данных с плавающей запятой.
Тип данных |
Бит |
Количество значащих цифр |
Пределы |
Целое слово |
16 |
4 |
-32768 — 32767 |
Короткое целое |
32 |
9 |
-2*109 — 2*109 |
Длинное целое |
64 |
18 |
-9*1018 — 9*1018 |
Упакованное десятичное |
80 |
18 |
-99..99 — +99..99 (18 цифр) |
Короткое вещественное |
32 |
7 |
1.18*10-38 — 3.40*1038 |
Длинное вещественное |
64 |
15—16 |
2.23*10-308 — 1.79*10308 |
Расширенное вещественное |
80 |
19 |
3.37*10-4932 — 1.18*104932 |
FPU предоставляет восемь регистров для хранения данных и пять вспомогательных регистров.
Регистры данных (R0 – R7) не адресуются по именам, как регистры основного процессора. Вместо этого эти восемь регистров рассматриваются как стек, вершина которого называется ST, а более глубокие элементы — ST(1), ST(2) и так далее до ST(7). Если, например, в какой-то момент времени регистр R5 называется ST (рис. 13), то после записи в этот стек числа оно будет записано в регистр R4, который станет называться ST, R5 станет называться ST(1) и т.д.
Регистр состояний SR содержит слово состояния FPU:
Бит 15: В — занятость FPU — этот флаг существует для совместимости с 8087, и его значение всегда совпадает с ES.
Бит 14: С3 — условный флаг 3.
Биты 13 – 11: ТОР — число от 0 до 7, показывающее, какой из регистров данных R0 – R7 в настоящий момент является вершиной стека.
Бит 10: С2 — условный флаг 2.
Бит 9: С1 — условный флаг 1.
Бит 8: С0 — условный флаг 0.
Бит 7: ES — общий флаг ошибки — равен 1, если произошло хотя бы одно немаскированное исключение.
Бит 6: SF — ошибка стека. Если С1 = 1, произошло переполнение (команда пыталась писать в непустую позицию в стеке), если С1 = 0, произошло антипереполнение (команда пыталась считать число из пустой позиции в стеке).
Бит 5: РЕ — флаг неточного результата — результат не может быть представлен точно.
Бит 4: UE — флаг антипереполнения — результат слишком маленький.
Бит 3: ОЕ — флаг переполнения — результат слишком большой.
Бит 2: ZE — флаг деления на ноль — выполнено деление на ноль.
Бит 1: DE — флаг денормализованного операнда — выполнена операция над денормализованным числом.
Бит 0: IE — флаг недопустимой операции — произошла ошибка стека (SF = 1) или выполнена недопустимая операция.
Биты С0 – С3 употребляются так же, как и биты, состояния в основном процессоре, — их значения отражают результат выполнения предыдущей команды и используются для условных переходов; команды
fstsw ax
sahf
копируют их значения в регистр FLAGS так, что флаг С0 переходит в CF, С2 — в PF, а С3 — в ZF (флаг С2 теряется).
Биты 0 – 5 отражают различные ошибочные ситуации, которые могут возникать при выполнении команд FPU. Они рассмотрены в описании управляющих регистров.
Регистр управления CR:
Биты 15 – 13 — зарезервированы.
Бит 12 «IC» — управление бесконечностью (поддерживается для совместимости с 8087 и 80287 — вне зависимости от значения этого бита +> -).
Биты 11 – 10 «RC» — управление округлением.
Биты 9 – 8 «PC» — управление точностью.
Биты 7 – 6 — зарезервированы.
Бит 5 «РМ» — маска неточного результата.
Бит 4 «UM» — маска антипереполнения.
Бит 3 «ОМ» — маска переполнения.
Бит 2 «ZM» — маска деления на ноль.
Бит 1 «DM» — маска денормализованного операнда.
Бит 0 «IM» — маска недействительной операции.
Биты RC определяют способ округления результатов команд FPU до заданной точности
Биты 0 – 5 регистра CR маскируют соответствующие исключения — если маскирующий бит установлен, исключения не происходит, а результат вызвавшей его команды определяется правилами для каждого исключения специально.
Регистр тегов TW содержит восемь пар бит, описывающих содержание каждого регистра данных, — биты 15 – 14 описывают регистр R7, 13 – 12 — R6 и т.д. Если пара бит (тег) равна 11, соответствующий регистр пуст. 00 означает, что регистр содержит число, 01 — ноль, 10 — нечисло, бесконечность, денормализованное число, неподдерживаемое число.
Регистры FIP и FDP содержат адрес последней выполненной команды (кроме FINIT, FCLEX, FLDCW, FSTCW, FSTSW, FSTSWAX, FSTENV, FLDENV, FSAVE, FRSTOR и FWAIT) и адрес ее операнда соответственно и используются в обработчиках исключений для анализа вызвавшей его команды.
Команды пересылки данных FPU
Команда: |
FLD источник |
Назначение: |
Загрузить вещественное число в стек |
Процессор: |
8087 |
Команда помещает содержимое источника (32-, 64- или 80-битная переменная или ST(n)) и уменьшает ТОР на 1. Команда FLD ST(0) делает копию вершины стека.
Команда: |
FST приемник |
Назначение: |
Скопировать вещественное число из стека |
Команда: |
FSTP приемник |
Назначение: |
Считать вещественное число из стека |
Процессор: |
8087 |
Копирует ST(0) в приемник (32- или 64-битную переменную или пустой ST(n) в случае FST; 32-, 64- или 80-битную переменную или пустой ST(n) в случае FSTP). FSTP после этого выталкивает число из стека (помечает ST(0) как пустой и увеличивает ТОР на один).
Команда: |
FILD источник |
Назначение: |
Загрузить целое число в стек |
Процессор: |
8087 |
Преобразовывает целое число со знаком из источника (16-, 32- или 64-битная переменная) в вещественный формат, помещает в вершину стека и уменьшает ТОР на 1.
Команда: |
FIST приемник |
Назначение: |
Скопировать целое число из стека |
Команда: |
FISTP приемник |
Назначение: |
Считать целое число из стека |
Процессор: |
8087 |
Преобразовывает число из вершины стека в целое со знаком и записывает его в приемник (16- или 32-битная переменная для FIST; 16-, 32- или 64-битная переменная для FISTP). FISTP после этого выталкивает число из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Попытка записи слишком большого числа, бесконечности или не-числа приводит к исключению «недопустимая операция» (и записи целой неопределенности, если IM = 1).
Команда: |
FADD приемник,источник |
Назначение: |
Сложение вещественных чисел |
Команда: |
FADDP приемник,источник |
Назначение: |
Сложение с выталкиванием из стека |
Команда: |
FIADD источник |
Назначение: |
Сложение целых чисел |
Процессор: |
8087 |
Команда выполняет сложение источника и приемника и помещает результат в приемник. Команда FADDP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды сложения могут принимать следующие формы:
FADD источник, когда источником является 32- или 64-битная переменная, а приемником — ST(0);
FADD ST(0),ST(n), FADD ST(n),ST(0), FADDP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU;
FADD без операндов — эквивалентно FADD ST(0),ST(1); FADDP без операндов — эквивалентно FADDP ST(1),ST(0);
FIADD источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0).
Команда: |
FSUB приемник,источник |
Назначение: |
Вычитание вещественных чисел |
Команда: |
FSUBP приемник,источник |
Назначение: |
Вычитание с выталкиванием из стека |
Команда: |
FISUB источник |
Назначение: |
Вычитание целых чисел |
Процессор: |
8087 |
Выполняет вычитание источника из приемника и сохраняет результат в приемнике. Команда FSUBP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды вычитания могут принимать следующие формы:
FSUB источник, когда источником является 32- или 64-битная переменная, содержащая вещественное число, а приемником — ST(0);
FSUB ST(0),ST(n), FSUB ST(n),ST(0), FSUBP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU;
FSUB без операндов — эквивалентно FSUB ST(0),ST(1); FSUBP без операндов — эквивалентно FSUBP ST(1),ST(0);
FISUB источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0).
Команда:
FINCSTP
Назначение:
Увеличить указатель вершины стека
Процессор:
8087
Поле ТОР регистра состояния FPU увеличивается на 1. Если ТОР было равно семи, оно обнуляется. Эта команда не эквивалентна выталкиванию ST(0) из стека, потому что регистр данных, который назывался ST(0) и стал ST(7), не помечается как пустой.
Команда:
FDECSTP
Назначение:
Уменьшить указатель вершины стека
Процессор:
8087
Поле ТОР регистра состояния FPU уменьшается на 1. Если ТОР было равно нулю, оно устанавливается в 7. Содержимое регистров данных и TW не изменяется.
Команда:
FFREE операнд
Назначение:
Освободить регистр данных
Процессор:
8087
Команда отмечает в регистре TW, что операнд (регистр данных ST(n)) — пустой. Содержимое регистра и ТОР не изменяются.
Команда:
FINIT
Назначение:
Инициализировать FPU
Команда:
FNINIT
Назначение:
Инициализировать FPU без ожидания
Процессор:
8087
Команды FINIT и FNINIT восстанавливают значения по умолчанию в регистрах CR, SR, TW, а начиная с 80387 — FIP и FDP Управляющий регистр инициализируется значением 037Fh (округление к ближайшему, 64-битная точность, все исключения замаскированы). Регистр состояния обнуляется (ТОР = 0, никакие флаги исключений не установлены). Регистры данных никак не изменяются, но все они помечаются пустыми в регистре TW. Регистры FIP и FDP обнуляются. Команда FINIT, в отличие от FNINIT, проверяет наличие произошедших и необработанных исключений и обрабатывает их до инициализации. Команда FINIT полностью эквивалентна (и на самом деле является) WAIT FNINIT.
Команда:
FCOM источник
Назначение:
Сравнить вещественные числа
Команда:
FCOMP источник
Назначение:
Сравнить и вытолкнуть из стека
Команда:
FCOMPP источник
Назначение:
Сравнить и вытолкнуть из стека два числа
Процессор:
8087
Команды выполняют сравнение содержимого регистра ST(0) с источником (32- или 64-битная переменная или регистр ST(n), если операнд не указан — ST(1)) и устанавливают флаги С0, С2 и С3 в соответствии с таблицей 14.
Таблица 14. Флаги сравнения FPU
Условие |
C3 |
C2 |
C0 |
ST(0) > источник |
0 |
0 |
0 |
ST(0) < источник |
0 |
0 |
1 |
ST(0) = источник |
1 |
0 |
0 |
Не сравнимы |
1 |
1 |
1 |
Расширения MMX.
Начиная с модификации процессора Pentium Р54С, все процессоры Intel содержат расширение ММХ, предназначенное для увеличения эффективности программ, работающих с большими потоками данных (обработка изображений, видео, синтез и обработка звука), то есть для всех тех случаев, когда нужно выполнить несложные операции над большими массивами однотипных чисел. ММХ предоставляет несколько новых типов данных, регистров и команд, позволяющих выполнять арифметические и логические операции над несколькими числами одновременно.