Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ-шаблонответа.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
299.37 Кб
Скачать

Особые случаи при действиях над числами пт

Перечень:

1)неточный результат 2)численное антипереполнение 3)деление на нуль 4)численное переполнение 5)недействительная операция

В первых двух особых случаях возникает опасность потери точности вычислений. В случаях 3) и 4) не всегда возможно продолжение вычислений

Неточный результат - округление и его виды

Неточный результат возникает при действиях с мантиссой (например при умножении) или записи из временного вещественного. При этом в сопроцессоре устанавливается соответствующий флаг и происходит округление результата в соответствии с одним из четырех правил:

1) к ближайшему значению (по школьным правилам округления) 2) по направлению к + 3) по направлению к - 4) по направлению к 0 (усечение – выполняется легко и быстро).

При реализации численных методов использование разных способов округления по-разному влияет на точность метода.

Численное антипереполнение, денормализованные и ненормализованные числа, псевдонуль.

Результат умножения двух малых чисел может быть слишком мал для представления нормализованным числом (появление такого результата называют антипереполнением). Это означает, что при нормализации скорректированный порядок выходит за границу представимого диапазона порядков. В рамках стандарта такой результат представляется денормализованным числом. Для представления денормализованных чисел в диапазоне порядков выбирается одно значение 00……00 - оно свидетельствует, что число – денормализованное. При этом предполагается, что порядок равен 00……01, а мантисса не содержит 1 в целой части.

Однако вычисления при получении денормализованного результата можно (с определенной потерей точности) продолжать (в старых реализациях вместо денормализованного результата возникал «машинный нуль»).

Кодовые комбинации, содержащие ненулевое поле порядка и нулевой старший бит мантиссы (такое возвожно только в формате ВВ) называют ненормализованными числами.

Если перемножаются два денормализованных числа, содержащие в мантиссах суммарно более 64 нулей, то ненулевой результат не может представлен даже в формате ВВ. Такой результат называется псевдонулем.

Действия с бесконечностями

Деление на нуль или на очень малое число вызывает выход результата «вверх» за диапазон представимых значений формата ПТ (переполнение). Для результатов таких операций используется специальное значение “бесконечность”, которое отмечается особым кодом. Что произойдет, если использовать это значение в качестве операнда:

x/(+ ∞) = +0 x/(- ∞) = -0 (+x)(+∞) = + ∞ (-x)(+∞) = - ∞ и т.д. 0∞ или ∞/∞ возвращает NAN – значение «неопределенность».

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

  1. Для чего в основном в цифровых процессорах используется команда логического умножения (AND)

AND - поразрядное логическое умножение. Это команда побитового сброса (записи в заданные биты «нулей»). Пример:

and bh, 0Fh ; Сброс старшей тетрады (старшего ниббла) в байтовом операнде.

Если, например, исходно в регистре bh содержался операнд 1101 10012, то после выполнения команды в регистре bh будет содержаться 0000 10012 (отмечены очищенные биты).

Действие команды AND можно описать следующим образом: команда безусловно сбрасывает в 0 биты в тех позициях первого операнда, которые отмечены «нулями» в маске, оставляя прочие биты первого операнда неизменными.

  1. Для чего в основном в цифровых процессорах используется команда логического сложения (OR)

OR - поразрядное логическое сложение. Фактически это команда побитовой установки (т.е. записи «единицы» в заданные биты операнда). Пример:

or al, 0Ch ; Установка в 1 битов в позициях 2 и 3 в операнде al

Если исходно в al содержался, например операнд 1101 10012, то после выполнения команды в al будет содержаться 1101 1101 (отмечены установленные биты). Второй операнд это обычно константа, задавая которую, программист указывает, какие биты следует установить, он на жаргоне программистов носит название «маска».

Можно описать действие команды OR следующим образом: команда безусловно устанавливает в «единицу» биты в тех позициях первого операнда, которые отмечены «единицами» во втором операнде (в маске), оставляя прочие биты первого операнда неизменными.

  1. Для чего в основном в цифровых процессорах используется команда логического исключающего ИЛИ (XOR)

XOR - поразрядное исключающее ИЛИ, eXclusive OR (иногда на русском эту операцию называют «ЛИБО»). Эта двухоперандная команда фактически выполняет выборочное инвертирование битов. Например:

xor cl,0F0h ; Инвертирование битов старшей тетрады

Если исходно в cl содержалось 1101 10012, то после выполнения команды в cl будет содержаться 0010 10012 (отмечены проинвертированные биты).

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

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

Операция сдвига состоит в одновременном перемещении содержимого операнда в разрядной сетке. Существует 3 разновидности операции сдвигов, которые различаются тем, что происходит с битами, выходящими за пределы разрядной сетки с одного «конца» операнда, и с освобождающимися позициями на другом его «конце».

1) ROR, ROL, RCR, RCL - циклические сдвиги. При циклическом сдвиге то, что выходит за границу разрядной сетки, помещается в освобождающуюся позицию на другом конце операнда.

2) ASR,ASL / SAR,SAL - арифметические сдвиги. Эта разновидность сдвига осуществляется таким образом, что результат оказывается эквивалентен умножению (при сдвиге влево) или делению (при сдвиге вправо) операнда на основание системы счисления, т.е. на 2. Сравните: если «сдвинуть» цифры в десятичном числе на разряд влево, результат будет эквивалентен исходному числу, умноженному на 10 (12 и 120 после сдвига).

Более подробно особенности арифметического сдвига обсуждаются при рассмотрении системы команд процессоров х86.

3) SHL,SHR - логические сдвиги. При выполнении логических сдвигов биты, «выдвигаемые» из разрядной сетки, теряются, а противоположный конец операнда заполняется «нулями».

(Каждая из упомянутых разновидностей можен также иметь варианты, в составе системы команд х86 различают пять видов сдвигов).

  1. Что можно сделать, если Вы решили, что диапазон представимых значений целочисленных операндов в данном процессоре для ваших целей слишком мал ?

Если диапазон представимых чисел в данной разрядной сетке мал, можно использовать представление чисел с повышенной разрядностью – перейти от char к int или к double. И далее использовать для представления операнда два или три или более слов.

Как же это можно сделать в цифровом процессоре?

В некоторых процессорах может использоваться так называемая «арифметика с насыщением» при выходе результата за границу представимого диапазона процессор подставляет в качестве результата ближайщее к нему представимое число.

  1. Почему в системе команд ARM (четырехбайтовая кодировка) отсутствуют команды сдвига ?

Поскольку все команды имеют длину 4 байта и выровнены по границе 4-байтового слова

  1. Типовая регистровая модель процессора: регистры для операндов, регистры для адресов, счетчик команд, указатель стека, регистр состояний. Опишите кратко назначение перечисленных регистров.

???

  1. Что содержится в регистре состояния процессора (поясните ответ на примере регистра состояния в архитектуре ARM7) ?