Вы находитесь на странице: 1из 9

ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ НАУК И ТЕХНОЛОГИЙ


КАФЕДРА КОМПЬЮТЕРНОЙ ИНЖЕНЕРИИ

Лабораторная работа №5
по курсу «Микропроцессоры»

Выполнил:
Студент группы ПО-18
Сирота Д.Д.
Проверила:
Авксентьева О.А.

Донецк 2020
1. Архитектура сопроцессора i8087

Рис 1. Структурная схема сопроцессора i8087


Арифметический сопроцессор i8087 предназначен для выполнения
арифметических операций и вычисления элементарных функций и состоит из
двух блоков: управления (шинного интерфейса) и обработки.
Блок управления синхронизирует работу с основным микропроцессором и
содержит такие элементы, как устройство сопряжение с локальной шиной,
очередь команд, буфер операндов, регистры указатели, регистр состояния и
регистр управления.
Блок обработки связан с блоком упарвления 16-ти рарзрядной шиной и
реализует обработку данных. Содержит регистровый стек, регистр тегов,
модуль обработки порядков и мантисс (АЛУ, сдвигатель, временные
регистры) и ПЗУ констант.
Регистровый стек ST – группа из восьми 80-ти разрядных регистров, в
которых в формате временных вещественных (ВВ) хранятся все операнды.
Все типы данных при загрузке в блок обработки сопроцессора i8087
автоматы преобразуются в формат ВВ.

Рис 2. – Регистровый стек сопроцессора


Есть две основные операции над стеком. Операция загрузки (PUSH) и
выгрузки (POP). PUSH – загружает в регистр вершины стека 80-ти разрядное
число и увеличивает ST на единицу. POP – считывает число из текущей
вершины стека и уменьшает ST на единицу.

Рис 3. Операции над стеком. а) PUSH, б) POP


Каждый из восьми регистров сопроцессора содержит отдельный тег, которые
вместе образуют регистр тегов (TG). Регистр тегов 16-ти разрядный, под
каждый тег выделяет два разряда, что позволяет каждому тегу принимать
четыре значения.
Значения тега:
 00 – допустимое ненулевое значение
 01 – нулевое значение
 10 – специальное численное значение
 11 -пуст
В сопроцессоре i8087 есть регистры состояния и управления.
Регистр состояния содержит слово состояния SW. Необходим для того,
чтобы оценивать результат вычислений. Является аналогом регистра флагов
в микропроцессоре.
Регистр управления содержит слово управления CW, определяет вариант
обработки данных. Для каждого варианта программист может задать
маскирование особых случаев, точность вычислений, способ округления и
интерпретацию бесконечности.

Рис 3. Регистр состояния SR

Рис 4. Регистр управления CW


2. Формат данных сопроцессора i8087

3. Перевод чисел в нужный формат


Число в формате КВ – короткое вещественное имеет следующий вид:
Байты 3 2 1 0
Разряды 31 30 23 22 15 14 7 6 0
S P 1 M
,
где S[31] - знак числа
P[30…23] - порядок числа
1 - неявная единица, которая подразумевается в формат с ПЗ
M [23…0] - мантисса числа
Исходные данные:
Вариан
Функция K X Y C Формат данных
т
19 Z=K*C-X* 0. 4.2 5.
1.125 КВ
Y 5 5 4
1) Перевод числа K = + 0.5
0.510 = 0.12 = + 1.’0 * 2 -1
Qсм = 28-1 – 1= 27 – 1 = 128 -1 = 127 = 0111 1111
PK = -1 PK127 = 127 - 1 = 12610 = 0111 1110
MK = + 1’0
S P M
0 011 1111 0 (1, 000 0000 0 000 0000 0 000 0000
)
3 F 0 0 0 0 0 0

2) Перевод числа X = + 1.125


1.12510 = 1.0012 = + 1.’001 * 20
Qсм = 28-1 – 1= 27 – 1 = 128 -1 = 127 = 0111 1111
PK = 0 PK127 = 127 + 0 = 12710 = 0111 1111
MK = + 1’001
S P M
0 011 1111 1 (1, 001 0000 0 000 0000 0 000 0000
)
3 F A 0 0 0 0 0

3) Перевод числа Y = + 4.25


4.2510 = 100.012 = + 1.’0001 * 2 2
Qсм = 28-1 – 1= 27 – 1 = 128 -1 = 127 = 0111 1111
PK = 2 PK127 = 127 + 2 = 12910 = 1000 0001
MK = + 1’001
S P M
0 100 0000 1 (1,) 001 0000 0 000 0000 0 000 0000
4 0 9 0 0 0 0 0
4) Перевод числа C = + 5.4
5.410 = 101.0110011001100110011002 = 1.’01011001100110011001100 * 22
Qсм = 28-1 – 1= 27 – 1 = 128 -1 = 12710 = 0111 1111
PK = 2 PK127 = 127 + 2 = 12910 = 1000 0001
MK = + 1’0101 1001 1001 1001 1001 100
S P M
0 100 0000 1 (1, 010 1100 1 100 1100 1 100 1100
)
4 0 A C C C C C

5) Перевод произведения K * C = 0.5 * 5.4 = 2.7


2.710 = 10.10110011001100110011002 = 1.’01011001100110011001100 * 21
Qсм = 28-1 – 1= 27 – 1 = 128 -1 = 127 = 0111 1111
PK = 1 PK127 = 127 + 1 = 12810 = 1000 0000
MK = + 1’0101 1001 1001 1001 1001 1001
S P M
0 100 0000 0 (1,) 010 1100 1 100 1100 1 100 1100
4 0 2 С С С С С

6) Перевод произведения X * Y = 1.125 * 4.25 = 4.78125


4.7812510 = 100.110012 = 1.’ 0011001 * 22
Qсм = 28-1 – 1= 27 – 1 = 128 -1 = 127 = 0111 1111
PK = +2 PK127 = 127 + 2 = 12910 = 1000 0000
MK = + 1’0011001
S P M
0 100 0000 0 (1,) 001 1001 0 000 0000 0 000 0000
4 0 1 9 0 0 0 0

7) Перевод вычитания K * C - X * Y = 2.7 – 4.78125 = -2.08125


-2.0812510 = -10.000 1010 0110 0110 0110 01102 =
= + 01.111 0101 1001 1001 1001 1002 = 1.111 0101 1001 1001 1001 1001 * 20
Qсм = 28-1 – 1= 27 – 1 = 128 -1 = 127 = 0111 1111
PK = 0 PK127 = 127 + 0 = 0111 1111
MK = + 1’111 0101 1001 1001 1001 1001
S P M
0 011 1111 1 (1,) 111 0101 1 001 1001 1 001 1001
3 F F 5 9 9 9 9

4. Разработка программы
Исходные данные:
Вариан
Функция K X Y C Формат данных
т
19 Z=K*C-X* 0. 4.2 5.
1.125 КВ
Y 5 5 4
Начальный адрес программы: 4000:0100
Адрес данных: 5000:0100
Число 16сс В памяти
K 3F 00 00 00 00 00 00 3F
X 3F A0 00 00 00 00 A0 3F
Y 40 90 00 00 00 00 90 40
C 40 AC CC CC CC CC AC 40
K*C 40 2C CC CC CC CC 2C 40
X*Y 40 19 00 00 00 00 19 40
K * C - X * Y 3F F5 99 99 99 99 F5 3F
Расположение чисел в памяти:
5000:0100 00 00 00 3F K
5000:0104 00 00 A0 3F X
5000:0108 00 00 90 40 Y
5000:010 CC CC AC C
С 40
5000:0110 99 99 F5 3F Z
Расположение чисел в стеке:
ST0 X ST0 X*Y ST0 K ST0 K*C ST0 Z
ST1 Y ST1 Y ST1 C ST1 C ST1 C
ST2 K ST2 K ST2 X*Y ST2 X*Y ST2 X*Y
ST3 C ST3 C ST3 Y ST3 Y ST3 Y
стек после стек после стек после стек после стек после
загрузки операндов умножения XCHG второго умножения вычитания
Код программы:
coop w reg OP
0100 B80050 MOV AX,5000 1011 1 000 0000 0000 0101 0000
B 8 0 0 5 0
coop d mod sreg reg
0103 9ED9 MOV DS,AX 100011 1 0 11 011 000
9 E D 9
;FINIT esc cop mod cop mem
0105 DBE3 ESC 1C, BL 11011 011 11 100 011
D B E 3
;FLD Y esc cop mod cop mem
0107 D9060801 ESC 08,[0108] 11011 001 00 000 110 0104h
D 9 0 6
; FLD X esc cop mod cop reg
0109 D9060401 ESC 08,[0104] 11011 001 00 000 110 0108h
D 9 0 6
;FLD C esc cop mod cop reg
010B D9060С01 ESC 08,[010С] 11011 001 00 000 110
010Ch
D 9 0 6
; FLD K esc cop mod cop reg
010D D9060001 ESC 08,[0100] 11011 001 00 000 110
0100h
D 9 0 6
; FMUL esc cop mod cop reg
010F D8С9 ESC 01,CL 11011 000 11 001 001
D 8C 9
;FXCH esc cop mod cop reg
0111 D9CA ESC 09,DL 11011 001 11  001 010
D 9 C A
; FMUL esc cop mod cop reg
0113 D8CB ESC 01,BL 11011 000 11 001 011
D 8 C B
; FSUB esc cop mod cop reg
0115 D8E2 ESC 04,DL 11011 000 11  100 010
D 8 E 2
;FST Z esc cop mod cop mem
0117 D9160001 ESC 0A,[0100] 11011 001 00 010 110
D 9 1 6

Вам также может понравиться