ВУЗ:
Составители:
39
4.1.3. «Исключительные» случаи
при выполнении операции сложения (вычитания)
В цифровом процессоре при сложении или вычитании (алгоритмы
вычитания будут рассмотрены далее) возможны случаи, когда полу-
ченный результат не помещается в разрядную сетку процессора.
В одном из ранее рассмотренных примеров при сложении возникло
переполнение разрядной сетки. Такой случай называется «исключи-
тельным», так как алгоритм сложения (вычитания) не может быть
завершен с получением правильного результата. В алгоритме сложе-
ния или вычитания предусматривается ветвь для обработки этой си-
туации. «Исключительный» случай переполнения разрядной сетки
получил название – «переполнение». Переполнение может быть об-
наружено или аппаратными, или программными средствами по од-
ному из следующих способов.
Первый способ основан на том, что если знаки исходных слагае-
мых одинаковы, а знак суммы противоположен знаку слагаемых –
это переполнение. Рассмотрим пример для восьмиразрядного про-
цессора, работающего в дополнительном коде с целыми числами
в формате с ФТ.
X=53
(8)
=101011
(2)
; Y=161
(8)
=1110001
(2)
.
[X]
2
0
0
1
0
1
0
1
1
[Y]
2
+
0
1
1
1
0
0
0
1
[S]
2
=
1
0
0
0
1
1
0
0
SF=1; СF=0; ZF=0; OF=1.
Флаг OF=1, так как знаки исходных слагаемых положительные, а
знак суммы – отрицательный. В этом случае результатом операции
сложения будет значение флага OF=1, а не значение регистра РСМ
(там неверный результат).
Недостатком этого способа является необходимость хранения
знаков слагаемых операндов до момента получения суммы, что тре-
бует дополнительных аппаратных или программных затрат.
Второй способ основан на использовании модифицированного кода.
Модифицированным называется такой код, когда под знак отводится
2 бит. Переполнение обнаруживается, если после сложения сумма име-
4.1.3. «Исключительные» случаи
при выполнении операции сложения (вычитания)
В цифровом процессоре при сложении или вычитании (алгоритмы
вычитания будут рассмотрены далее) возможны случаи, когда полу-
ченный результат не помещается в разрядную сетку процессора.
В одном из ранее рассмотренных примеров при сложении возникло
переполнение разрядной сетки. Такой случай называется «исключи-
тельным», так как алгоритм сложения (вычитания) не может быть
завершен с получением правильного результата. В алгоритме сложе-
ния или вычитания предусматривается ветвь для обработки этой си-
туации. «Исключительный» случай переполнения разрядной сетки
получил название – «переполнение». Переполнение может быть об-
наружено или аппаратными, или программными средствами по од-
ному из следующих способов.
Первый способ основан на том, что если знаки исходных слагае-
мых одинаковы, а знак суммы противоположен знаку слагаемых –
это переполнение. Рассмотрим пример для восьмиразрядного про-
цессора, работающего в дополнительном коде с целыми числами
в формате с ФТ.
X=53(8)=101011(2); Y=161(8)=1110001(2).
[X]2 0 0 1 0 1 0 1 1
[Y]2 + 0 1 1 1 0 0 0 1
[S]2 = 1 0 0 0 1 1 0 0
SF=1; СF=0; ZF=0; OF=1.
Флаг OF=1, так как знаки исходных слагаемых положительные, а
знак суммы – отрицательный. В этом случае результатом операции
сложения будет значение флага OF=1, а не значение регистра РСМ
(там неверный результат).
Недостатком этого способа является необходимость хранения
знаков слагаемых операндов до момента получения суммы, что тре-
бует дополнительных аппаратных или программных затрат.
Второй способ основан на использовании модифицированного кода.
Модифицированным называется такой код, когда под знак отводится
2 бит. Переполнение обнаруживается, если после сложения сумма име-
39
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »
