На главную Назад
Добро пожаловать, уважаемый посетитель!

Микросхема 8087 имеет расширенный набор типов данных,

необходимых для поддержки ее расширенных арифметических

возможностей.В то время как микропроцессор 8088 может

непосредственно работать только с байтами и словами, микросхема

8087 имеет семь типов данных.Шесть из них присущи лишь микросхеме

8087.На Фиг. 7.1 показаны все семь типов данных, с которыми

работает микросхема 8087.Четыре формата представляют целые числа,

а три формата - вещественные, или числа с плавающей точкой.Один

формат представляет упакованные десятичные числа.

 

Рисунок 7.2 иллюстрирует способы, которыми микросхема хранит

эти числа в памяти.Как и в случае данных микропроцессора 8088,

все данные хранятся с младшей частью операнда, записанной в младших

адресах.Бит знака всегда оказывается в байте по старшему адресу

памяти.Мы будем обсуждать назначение различных полей по мере

того, как будем рассматривать разные типы данных.

 

Сопроцессор 8087 работает с тремя типами целых чисел:словом,

которое имеет длину 16 бит и идентично слову микропроцессора 8088;

коротким целым числом, имеющим длину 32 бита; длинным целым числом,

64-значением.Все эти числа являются числами, представленными в

двоичном дополнительном коде.

 

В программе целое слово определяется с помощью оператора DW.

Такое целое слово может иметь значение в диапазоне от - 32768 до

32767.Этот целый формат уже использовался в наборе команд

микропроцессора 8088.Это - единственный формат данных, общий для

микропроцессора 8088 и арифметического сопроцессора 8087.Короткий

целый формат требуется в операторе описания данных длиной 32 бита.

Такое описание двойного слова выполняет оператор DD, определяющий

целые числа, лежащие в диапазоне от -232 до 232-1.Напоминаем, что

с помощью оператора DD можно также определить пару

СЕГМЕНТ:СМЕЩЕНИЕ.Ассемблер решает сам, какую именно форму

сгенерировать, основываясь на операнде.Если операнд - адрес,

порождается пара СЕГМЕНТ:СМЕЩЕНИЕ; если же операнд - просто число,

соответственно порождается длинное целое число.Для описания

длинных 64-битовых целых чисел используется оператор определения

счетверенного слова DQ.Эта директива вынуждает ассемблер

сформировать поле данных, состоящее их четырех слов (восьми байт).

Такой тип целого может иметь значения в диапазоне от -264 до 264-1.

Этот оператор ассемблера, так же как и операторы DB, DW и DD, может

определить константу, неопределенное поле (если задан операнд "?"),

 

<ДДДД ВОЗРАСТАНИЕ ЗНАЧЕНИЯ

 

ЪДВДДДДДДДДДДДДДДДї

СЛОВА ЦЕЛЫЕіSіВЕЛИЧИНАі(ДВОИЧНОЕ

АДБДДДДДДДДДДДДДДДЩ ДОПОЛНЕНИЕ)

150

 

ЪДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї

КОРОТКОЕ ЦЕЛОЕ іSіВЕЛИЧИНАі(ДВОИЧНОЕ

АДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ ДОПОЛНЕНИЕ)

310

 

ЪДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї

ДЛИННОЕ ЦЕЛОЕіSіВЕЛИЧИНАі

АДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

63

 

ЪДВДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї

УПАКОВАННОЕ ДЕСЯТИЧНОЕ іSіXіВЕЛИЧИНАі

АДБДДДДДДДБd17Бd16Бd15Бd14Бd13Бd12Бd11Бd10Бd9ДБd8ДБd7ДБd6ДБd5ДБd4ДБd3ДБd2ДБd1ДБd0ДЩ

79720

 

ЪДВДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДї

КОРОТКОЕ ВЕЩЕСТВЕННОЕ іSіПОРЯДОКіМАНТИССАі

АДБДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДЩ

31 230

 

ЪДВДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї

ДЛИННОЕ ВЕЩЕСТВЕННОЕ іSіПОРЯДОКіМАНТИССАі

АДБДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

63520

 

ЪДВДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї

ВРЕМЕННОЕ ВЕЩЕСТВЕННОЕ іSіПОРЯДОКГДДїМАНТИССАі

АДБДДДДДДДДДДДДДДДДДДБДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

79 64 630

 

КОММЕНТАРИИ:

S - бит знака (0 - плюс, 1 - минус)

dn - Десятичная цифра (по две на бит)

X - Незначащие биты; 8087 их игнорирует при загрузке и обнуляет при сохранении

- Позиция подразумеваемой двомичной точки

I - Целый бит мантиссы; сохраняется для временных действительных, подразумевается - для коротких и длинных

ПОРЯДОК (нормализованные значения):

Короткие действительные: 127 (7FH)

Длинные действительные: 1023 (3FFH)

Временные действительные: 16383 (3FFFH) 

 

Фиг. 7.1 Форматы данных 8087 (Copyright Intel 1980)

а также несколько восьмибайтовых полей с помощью команды DUP.

Оставшийся целый тип данных - упакованный десятичный формат.

Этот тип данных представляет целое число в упакованном десяточном

формате.Такие данные занимают десять байт.Один байт

резервируется для знака, а оставшиеся девять байт содержат 18

десяточных цифр.Такое упакованное представление десятичных чисел

идентично представлению десятичных операндов микропроцессора 8088,

но при этом представлении одновременно обрабатывается 18 цифр.

Команды десятичной коррекции упакованных десятичных чисел

микропроцессора 8088 допускают одновременно только две десятичные

цифры.Кроме того, упакованные десятичгые числа микропроцессора

8088 требуют, чтобы программист определил метод обработки знака

числа, если используются отрицательные числа.Упакованные

десятичные числа сопроцессора 8087 имеют бит знака в старешм байте.

Упакованное десятичное число хранится в десятичном коде, причем

старший бит 10-байтного поля содержит знак (0 - положительно, 1 -

отрицательно).

Для описания упакованного десяточного числа используется

оператор определения десятибайтового поля DT.Чтобы задать

уракованное десятичное число в этом поле, необходимо использовать

шестнадцатеричную запись.Если в поле операнда окажется целое

число, ассемблер преобразует его в дополнительный двоичный код, а

не в упакованное десятичное число.К счастью, преобразовать

десятичное число в необходимую шестнадцатеричную форму легко.

A

ЪДВДВДДДДДДДДДДДї

і |M|і

+3іS|S|і

і |B|і

ГДБДБДДДДДДДДДДДґ

іі

+2іі

іі

ЪДВДВДДДДДДДДДДДїГДДДДДДДДДДДДДДДґЪДВДВДДДДДДДДДДДї

і |M|іііі |M|і

+1іS|S|і+1іі +3іS|S|і

і |B|іііі |E|і

ГДБДБДДДДДДДДДВДґГДДДДДДДДДДДДДВДґГДЕДЕДДДДДДДДДДДґ

і|Lіі|LііL|M|і

+0і|Sі+0і|Sі +2іS|S|і

і|Bіі|BііE|F|і

АДДДДДДДДДДДДДБДЩАДДДДДДДДДДДДДБДЩГДБДБДДДДДДДДДДДґ

7070іі

ЦЕЛЫЕ СЛОВАКОРОТКИЕ ЦЕЛЫЕ +1іі

іі

іЪДВДДДДДДДДДДДДДїГДДДДДДДДДДДДДВДґЪДВДВДДДДДДДДДДДї

іі | іі |Lіі |M|і

і+9іS|(X)і +0і |Sі +9іS|S|і

іі | іі |Fіі |E|і

іГДБДДДДДВДДДДДДДґАДДДДДДДДДДДДДБДЩГДБДБДДДДДДДДДВДґ

іі|і70і |Lі

Р+8і|іКОРОТКИЕ ВЕЩЕСТВ. +8і |Sі

Оі|іі |Eі

ЪДВДВДДДДДДДДДДДї СГДДДДДДДЕДДДДДДДґЪДВДВДДДДДДДДДДДїГДВДВДДДДДДДДДБДґ

і |M|і Ті|іі |M|і іі |M|і

+7іS|S|і+7і|і +7іS|S|і і +7іI|S|і

і |B|і Аі|іі |E|і іі |F|і

ГДБДБДДДДДДДДДДДґ ДГДДДДДДДЕДДДДДДДґГДБДБДДВДВДВДДДДґ іГДБДБДДДДДДДДДДДґ

іі Рі|іі|L|M|і ііі

+6іі Е+6і|і +6і|S|S|і і +6іі

іі Сі|іі|E|F|і Ріі

ГДДДДДДДДДДДДДДДґ ОГДДДДДДДЕДДДДДДДґГДДДДДДБДБДБДДДДґ ОГДДДДДДДДДДДДДДДґ

іі Ві|ііі Сіі

+5іі+5і|і +5іі Т +5іі

ііі|ііііі

ГДДДДДДДДДДДДДДДґГДДДДДДДЕДДДДДДДґГДДДДДДДДДДДДДДДґ АГДДДДДДДДДДДДДДДґ

ііі|ііі Діі

+4іі+4і|і +4іі Р +4іі

ііі|ііі Еіі

ГДДДДДДДДДДДДДДДґГДДДДДДДЕДДДДДДДґГДДДДДДДДДДДДДДДґ СГДДДДДДДДДДДДДДДґ

ііі|ііі Оіі

+3іі+3і|і +3іі В +3іі

ііі|ііііі

ГДДДДДДДДДДДДДДДґГДДДДДДДЕДДДДДДДґГДДДДДДДДДДДДДДДґГДДДДДДДДДДДДДВДґ

ііі|іііі | і

+2іі+2і|і +2іі +2і | і

ііі|іііі | і

ГДДДДДДДДДДДДДДДґГДДДДДДДЕДДДДДДДґГДДДДДДДДДДДДДДДґГДДДДДДДДДДДДДДДґ

ііі|ііііі

+1іі+1і|і +1іі +1іі

ііі|ііііі

ГДДДДДДДДДДДДДВДґГДДДДДДДЕДДДДДДДґГДДДДДДДДДДДДДВДґ ГДДДДДДДДДДДДДВДґ

і|Lіі|іі |Lіі |Lі

+0і|Sі+0і|і +0і |Sі +0і |Sі

і|Bіі|іі |Fіі |Fі

АДДДДДДДДДДДДДБДЩАДДДДДДДБДДДДДДДЩАДДДДДДДДДДДДДБДЩАДДДДДДДДДДДДДБДЩ

70707070

ДЛИННЫЕ ЦЕЛЫЕУПАКОВАННЫЕ ДЕС.ДЛИННЫЕ ВЕЩЕСТВ.ВРЕМЕННЫЕ ВЕЩЕСТВ.

 

S: Бит знака S: Бит знака

MSB/LSB: Старший/младший бит MSE/LSE: Старший/младший бит порядка

MSD/LSD: Старшая/младшая десятичная цифра MSF/LSF: Старший/младший бит дробной части

(X): Биты не имеют значения I: Целый бит мантиссы

A

Фиг. 7.2 Структура хранения данных в 8087

Microsoft (R) Macro Assembler Version 5.001/1/80 04:03:56

Фиг. 7.3 Целочисленные форматы данных сопроцессора 8087Page1-1

 

 

PAGE,132

TITLEФиг. 7.3 Целочисленные форматы данных сопроцессора 8087

 

0000CODESEGMENT

 

000004D2WORDDW1234

7_3.ASM(6): warning A4016: Reserved word used as symbol: WORD

0002FB2EDW-1234

 

000440E20100SHORT_INTEGERDD123456

0008C01DFEFFDD-123456

 

000CD202964900000000LONG_INTEGERDQ1234567890

00142EFD69B6FFFFFFFFDQ-1234567890

001C????????????????DQ?

002478563412907856341200PACKED_BCDDT00123456789012345678H

002E78563412907856341280DT80123456789012345678H ; Отрицательное от предыдущего

00380002[DT2 DUP (?)

???????????????

?????

]

 

004CCODEENDS

END

 

Фиг. 7.3 Целочисленные форматы данных сопроцессора 8087

 

Просто запишите нужное число в десятичной форме, а затем добавьте

букву H, показывающую, что это - шестнадцатеричное число.

Изобразить отрицательное число труднее.Если вы напишите перед

десятичным числом знак "-", ассемблер преобразует его в двоичный

дополнительный код, даже если есть буква H.Поэтому в этом случае

нужно подсчитать десятичные цифры и удлинить число до 20 цифр.

первые две цифры должны быть 80, чтобы показать, что число

отрицательно.То есть, чтобы изобразить -1234 в упакованном

десятичном формате, надо записать:

 

DT 80000000000000001234H

 

На Фиг. 7.3 изображен листинг ассемблера, иллюстрирующий

сформированные ассемблером значения в случае четырех типов целых

чисел.


 

Mail.ru