Флаг переполнения
Флаг переполнения OF - единственный флаг в старшем байте регистра
флагов,
который устанавливается
обычными арифметическими
операциями. Остальные флаги старшего
байта находятся под прямым
управлением программиста. Флаг
переполнения - еще
один
арифметический флаг, как флаг нуля и переноса. Флаг
переполнения
необходим для арифметики в
дополнительном коде в такой же степени,
как флаг переноса для арифметики
повышенной точности.
В
арифметике чисел, представленных в дополнительном коде,
старший
бит используется для
хранения знака числа.
Сумматор
микропроцессора работает как со
знакопеременными числами, так и
беззнаковыми. Обычно сложение чисел
со знаком дает
верный
результат. Однако
накоторые из чисел, представленных в дополни-
тельном коде, при сложении дают неверный результат. Пример на Фиг.
3.14
- сложение двух
8-битовых чисел, представленных в коде
двоичного дополнения, - иллюстрирует
этот случай. Если 72H и 53H -
Шестнадцатеричное Десятичный эквивалент
------------------------------------------------
72H 114
+ 53H + 83
------ ------
0C5H 197
------------------------------------------------
Фиг. 3.14
8-битовое сложение
с
переполнением
числа без знака, то результат их сложения
верен. Если же это числа,
представленные в дополнительном коде
со знаком, то
результат
сложения 0C5H неверен, в коде двоичного
дополнения он равен -59.
сложение
положительных чисел никогда
не дает в результате отри-
цательное. Результат сложения оказался непредставиммым в диапазоне
значений
8-битовых чисел в двоичном коде (от
127 до -128). Этот
эффект
принято называть переполнением, так как сумма вышла за
пределы диапазона чисел, представимых в
дополнительном коде.
Важно
заметить, что переполнение и
перенос - два различных
флага и имеют разное значение. На Фиг. 3.14
нет переноса, так как
сложение без знака дает правильный результат, а есть переполнение:
что сложение со знаком дает неверный
результат. Возможен и случай
одновременно переноса и переполнения, как показано на Фиг. 3.15.
Шестнадцатеричное Двоичное дополнение Беззнаковое
------------------------------------------------------------
8EH -114 142
0ADH - 83 173
----- -----
----
1 3BH -197 315
------------------------------------------------------------
Фиг. 3.15 8-битовое сложение с
переносом и перепонением
Здесь показан пример сложения двух
отрицательных чисел. Результат
-197 выходит за пределы диапазона представимости
в дополнительном
коде. Это показано тем, что 8-битовый
результат 3BH - положительное
число.
Кроме того в этом примере устанавливается флаг переноса,
означающий, что сложение без
знака дало число, большее
максимального представимого. В случае 8-битовых чисел максимальное
число равно 255.
Вообще говоря, операция сложения в процессоре
выполняется одинаково над числами и со
знаком, и без знака, а также
с десятичными числами. Флаги переноса,
дополнительного переноса и
переполнения содержат информацию о выполненной операции, позволяя
программе
определить верный результат
в используемой системе
счисления. Флаг
переполнения показывает, что
результат
арифметической операции выходит за
пределы диапазона чисел,
представленных в дополнительном виде.
Переполнение отличается от
переноса,
который показывает, что
произошел перенос из старшего
бита результата.
Содержание
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий