Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
29-32.doc
Скачиваний:
10
Добавлен:
23.04.2019
Размер:
221 Кб
Скачать
☆

Целые числа

Арифметический сопроцессор наряду с вещественными числами способен обрабатывать и целые числа. Он имеет команды, выполняющие преобразования целых чисел в вещественные и обратно.

Возможно четыре формата целых чисел:

  • целое число;

  • короткое целое число;

  • длинное целое число;

  • упакованное десятичное число

Целое число занимает два байта. Его формат полностью соответствует используемому центральным процессором. Для представления отрицательных чисел используется дополнительный код. Короткое целое и длинное целое имеют аналогичные форматы, но занимают, соответственно, 4 и 8 байт.

Упакованное десятичное число занимает 10 байт. Это число содержит 18 десятичных цифр, расположенных по две в каждом байте. Знак упакованного десятичного числа находится в старшем бите самого левого байта. Остальные биты старшего байта должны быть равны 0.

Существуют команды сопроцессора, которые преобразуют числа в формат упакованных десятичных чисел из внутреннего представления в расширенном вещественном формате. Если программа делает попытку преобразования в упакованный формат денормализованных чисел, нечисел, бесконечности и тому подобных, в результате получается неопределенность. Неопределенность в упакованном формате представляет собой число, в котором два старших байта содержат единицы во всех разрядах. Содержимое остальных восьми байтов произвольно. При попытке использовать такое упакованное число в операциях фиксируется ошибка.

Для представления отрицательных целых чисел используется дополнительный код.

В дополнительном коде положительные числа содержат нуль в самом старшем бите числа:

0XXX XXXX XXXX XXXX

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

Например, число +5 в дополнительном коде выглядит следующим образом:

0000 0000 0000 0101 = +5

Для получения числа -5 вначале инвертируем значение каждого бита:

1111 1111 1111 1010

Теперь прибавим к полученному числу +1:

1111 1111 1111 1011 = -5

Упакованное целое число состоит из 18 разрядов. В каждом байте такого числа один полубайт (четыре разряда) отвечает за представление одной десятичной цифры, поэтому он может содержать значения от 0000 до 1001, то есть от 0 до 9 в десятичной системе счисления.

Регистры сопроцессора

Арифметический сопроцессор содержит восемь численных 80-битовых регистров, предназначенных для хранения промежуточных результатов вычислений, регистра управления, регистра состояния, регистра тегов, регистра указателя команды и регистра указателя операнда.

Численные регистры

Численные регистры, как правило, в технической литературе обозначаются ST0 - ST7.

Численные регистры используются как стек. Регистр состояния в поле ST содержит номер численного регистра, являющегося вершиной стека. При выполнении команд в качестве операнда могут выступать численные регистры. В этом случае номер указанного в команде регистра прибавляется к содержимому поля ST регистра состояния и таким образом определяется используемый регистр. Большинство команд после выполнения увеличивают поле ST регистра состояния, как бы записывая результаты своей работы в стек численных регистров.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]