Слайд 2
![История сопроцессоров Intel 8087, Intel 80287, Intel 80387 – отдельные,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-1.jpg)
История сопроцессоров
Intel 8087, Intel 80287, Intel 80387 – отдельные, независимые устройства
Начиная
с Intel 80486 – составная часть процессора
Слайд 3
![Типы данных Двоичные целые числа (16, 32, 64 бит) Двоично-десятичные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-2.jpg)
Типы данных
Двоичные целые числа (16, 32, 64 бит)
Двоично-десятичные числа (80 бит)
Вещественные
числа (32, 64, 80 бит)
Специальные значения (константы)
Бесконечность (+ или –)
Нечисло, неопределенность и т.д.
Слайд 4
![Архитектура сопроцессора 13 регистров: 8 регистров – стек сопроцессора (80](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-3.jpg)
Архитектура сопроцессора
13 регистров:
8 регистров – стек сопроцессора (80 бит)
1 регистр тегов
1
регистр состояния
1 регистр управления
1 регистр – указатель команды
1 регистр – указатель данных
Слайд 5
![Стек сопроцессора ST или ST(0) – вершина стека ST(1) …](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-4.jpg)
Стек сопроцессора
ST или ST(0) – вершина стека
ST(1)
…
ST(6)
ST(7) – дно стека
Аналоги регистров
EAX, EBX, ECX, EDX, …
Слайд 6
![Регистр тегов Описывает состояние каждого регистра стека: Регистр свободен Регистр](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-5.jpg)
Регистр тегов
Описывает состояние каждого регистра стека:
Регистр свободен
Регистр занят ненулевым числом
Регистр занят
нулевым числом
Регистр занят специальным значением
Слайд 7
![Регистр состояния Описывает состояние сопроцессора после последней команды: Указатель на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-6.jpg)
Регистр состояния
Описывает состояние сопроцессора после последней команды:
Указатель на вершину стека сопроцессора
Биты
флагов (аналог SF, ZF и т.д.)
Биты исключительных состояний
Слайд 8
![Исключительные состояния сопроцессора Недействительный операнд Деление на 0 Переполнение Потеря значимости Потеря точности](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-7.jpg)
Исключительные состояния сопроцессора
Недействительный операнд
Деление на 0
Переполнение
Потеря значимости
Потеря точности
Слайд 9
![Регистр управления Описывает особенности обработки данных: Поле управления точностью Обычная](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-8.jpg)
Регистр управления
Описывает особенности обработки данных:
Поле управления точностью
Обычная
Двойная
Расширенная
Поле управления округлением
К ближайшему
С избытком
С
недостатком
С отсечением
Слайд 10
![Регистр управления Описывает особенности обработки данных: Поле управления бесконечностью Аффинная](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-9.jpg)
Регистр управления
Описывает особенности обработки данных:
Поле управления бесконечностью
Аффинная
Проективная
Маски исключительных ситуаций
Генерация ошибки
Возврат специального
значения
Слайд 11
![Регистр – указатель команды Содержит адрес команды, вызвавшей исключительную ситуацию](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-10.jpg)
Регистр – указатель команды
Содержит адрес команды, вызвавшей исключительную ситуацию
Слайд 12
![Регистр – указатель данных Содержит адрес операнда в команде, вызвавшей исключительную ситуацию](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-11.jpg)
Регистр – указатель данных
Содержит адрес операнда в команде, вызвавшей исключительную ситуацию
Слайд 13
![Система команд сопроцессора Команды пересылки данных Арифметические команды Трансцендентные команды Команды сравнения Команды управления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-12.jpg)
Система команд сопроцессора
Команды пересылки данных
Арифметические команды
Трансцендентные команды
Команды сравнения
Команды управления
Слайд 14
![Мнемоника команд сопроцессора Первая буква команды – F Вторая буква](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-13.jpg)
Мнемоника команд сопроцессора
Первая буква команды – F
Вторая буква – тип данных
I – двоичные целые числа
B – двоично-десятичные числа
Слайд 15
![Команды управления FINIT Инициализация сопроцессора](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-14.jpg)
Команды управления
FINIT
Инициализация сопроцессора
Слайд 16
![Пример include masm32.inc includelib masm32.lib ... .data number dq 12.345](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-15.jpg)
Пример
include masm32.inc
includelib masm32.lib
...
.data
number dq 12.345
.data?
string db 20 dup (?)
.code
...
PUSH offset string
PUSH
dword ptr number+4
PUSH dword ptr number
CALL FloatToStr
Слайд 17
![Команды пересылки данных FLD переменная FILD переменная FBLD переменная аналог PUSH](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-16.jpg)
Команды пересылки данных
FLD переменная
FILD переменная
FBLD переменная
аналог PUSH
Слайд 18
![Пример .data integer dd 2 float dd 3.0 double dq](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-17.jpg)
Пример
.data
integer dd 2
float dd 3.0
double dq 4.0
.code
...
FILD integer
FLD float
FLD double
Слайд 19
![Команды пересылки данных FST переменная FIST переменная FBST переменная аналог MOV переменная, [ESP]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-18.jpg)
Команды пересылки данных
FST переменная
FIST переменная
FBST переменная
аналог MOV переменная, [ESP]
Слайд 20
![Команды пересылки данных FSTP переменная FISTP переменная FBSTP переменная аналог POP](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-19.jpg)
Команды пересылки данных
FSTP переменная
FISTP переменная
FBSTP переменная
аналог POP
Слайд 21
![Пример .data dPI dq 3.14159265358979323846 .data? fPI dd ? .code ... FLD dPI FSTP fPI](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-20.jpg)
Пример
.data
dPI dq 3.14159265358979323846
.data?
fPI dd ?
.code
...
FLD dPI
FSTP fPI
Слайд 22
![Команды пересылки данных FLDZ FILD 0 FLD1 FILD 1 FLDPI FLD 3.14159265358979323846 ...](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-21.jpg)
Команды пересылки данных
FLDZ
FILD 0
FLD1
FILD 1
FLDPI
FLD 3.14159265358979323846
...
Слайд 23
![Арифметические команды FADD переменная FIADD переменная ST = ST +](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-22.jpg)
Арифметические команды
FADD переменная
FIADD переменная
ST = ST + переменная
FADD ST(i), ST(j)
ST(i) =
ST(i) + ST(j)
Слайд 24
![Пример .data x dq 3.1 y dq 1.7 .data? z](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-23.jpg)
Пример
.data
x dq 3.1
y dq 1.7
.data?
z dq ?
.code
...
FLD x
FADD y
FSTP z
.data
x dq
3.1
y dq 1.7
.data?
z dq ?
.code
...
FLD x
FLD y
FADD ST, ST(1)
FSTP z
Слайд 25
![Арифметические команды FMUL переменная FIMUL переменная ST = ST *](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-24.jpg)
Арифметические команды
FMUL переменная
FIMUL переменная
ST = ST * переменная
FMUL ST(i), ST(j)
ST(i) =
ST(i) * ST(j)
Слайд 26
![Арифметические команды FSUB переменная FISUB переменная ST = ST -](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-25.jpg)
Арифметические команды
FSUB переменная
FISUB переменная
ST = ST - переменная
FSUB ST(i), ST(j)
ST(i) =
ST(i) - ST(j)
Слайд 27
![Арифметические команды FDIV переменная FIDIV переменная ST = ST /](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-26.jpg)
Арифметические команды
FDIV переменная
FIDIV переменная
ST = ST / переменная
FDIV ST(i), ST(j)
ST(i) =
ST(i) / ST(j)
Слайд 28
![Арифметические команды FSUBR переменная ST = переменная - ST FDIVR переменная ST = переменная / ST](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-27.jpg)
Арифметические команды
FSUBR переменная
ST = переменная - ST
FDIVR переменная
ST = переменная /
ST
Слайд 29
![Арифметические команды FABS ST = |ST| FCHS ST = - ST FSQRT ST = sqrt(ST) FRNDINT](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-28.jpg)
Арифметические команды
FABS
ST = |ST|
FCHS
ST = - ST
FSQRT
ST = sqrt(ST)
FRNDINT
Слайд 30
![Трансцендентные команды FSIN ST = sin(ST) FCOS ST = cos(ST)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-29.jpg)
Трансцендентные команды
FSIN
ST = sin(ST)
FCOS
ST = cos(ST)
Слайд 31
![Пример x + y = z include masm32.inc includelib masm32.lib](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-30.jpg)
Пример x + y = z
include masm32.inc
includelib masm32.lib
...
.data
template db ”Выражение: %s
+ %s = %s”, 0
.data?
xString db 20 dup (?)
yString db 20 dup (?)
zString db 20 dup (?)
result db 80 dup (?)
Слайд 32
![Пример x + y = z .code ... PUSH offset](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-31.jpg)
Пример x + y = z
.code
...
PUSH offset zString
PUSH offset yString
PUSH offset
xString
PUSH offset template
PUSH offset result
CALL wsprintf
ADD ESP, 20
Слайд 33
![Вычисление сложных выражений D = b2 – 4ac](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-32.jpg)
Вычисление сложных выражений
D = b2 – 4ac
Слайд 34
![Вычисление сложных выражений D = b2 – 4ac](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-33.jpg)
Вычисление сложных выражений
D = b2 – 4ac
Слайд 35
![Вычисление сложных выражений D = b2 – 4ac](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-34.jpg)
Вычисление сложных выражений
D = b2 – 4ac
Слайд 36
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-35.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
Слайд 37
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-36.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
Слайд 38
![Вычисление сложных выражений D = b2 – 4ac FLD b FMUL b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-37.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
Слайд 39
![Вычисление сложных выражений D = b2 – 4ac FLD b FMUL b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-38.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
Слайд 40
![Вычисление сложных выражений D = b2 – 4ac FLD b FMUL b FLD 4 ;!!!](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-39.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
Слайд 41
![Вычисление сложных выражений D = b2 – 4ac FLD b FMUL b FLD 4 ;!!!](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-40.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
Слайд 42
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-41.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
FMUL
a
Слайд 43
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-42.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
FMUL
a
Слайд 44
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-43.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
FMUL
a
FMUL c
Слайд 45
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-44.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
FMUL
a
FMUL c
Слайд 46
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-45.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
FMUL
a
FMUL c
FSUBR ST, ST(1)
Слайд 47
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-46.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
FMUL
a
FMUL c
FSUBR ST, ST(1)
Слайд 48
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-47.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
FMUL
a
FMUL c
FSUBR ST, ST(1)
FSTP D
Слайд 49
![Вычисление сложных выражений D = b2 – 4ac FLD b](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-48.jpg)
Вычисление сложных выражений
D = b2 – 4ac
FLD b
FMUL b
FLD 4 ;!!!
FMUL
a
FMUL c
FSUBR ST, ST(1)
FSTP D
Слайд 50
![Команды сравнения FCOM Сравнивает ST(0) и ST(1) FCOM переменная Сравнивает](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-49.jpg)
Команды сравнения
FCOM
Сравнивает ST(0) и ST(1)
FCOM переменная
Сравнивает ST(0) и переменную
FCOMP переменная
Сравнивает ST(0)
и переменную
Выталкивает ST(0) из стека
Слайд 51
![Команды сравнения FICOM переменная Сравнивает ST(0) и переменную FICOMP переменная](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-50.jpg)
Команды сравнения
FICOM переменная
Сравнивает ST(0) и переменную
FICOMP переменная
Сравнивает ST(0) и переменную
Выталкивает ST(0)
из стека
FTST
Сравнивает ST(0) и 0
Слайд 52
![Результат работы команд сравнения](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-51.jpg)
Результат работы команд сравнения
Слайд 53
![Вспомогательные команды FSTSW Записывает регистр состояния сопроцессора в регистр AX](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/186655/slide-52.jpg)
Вспомогательные команды
FSTSW
Записывает регистр состояния сопроцессора в регистр AX
SAHF
Записывает регистр AH в
младший байт регистра флагов процессора