Флаг переполнения

    Флаг переполнения  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.

      Вообще говоря, операция сложения  в процессоре

    выполняется одинаково над числами и со знаком, и без знака, а также

    с десятичными  числами.  Флаги переноса, дополнительного переноса и

    переполнения содержат  информацию о выполненной  операции, позволяя

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

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

    арифметической  операции   выходит    за  пределы   диапазона  чисел,

    представленных  в дополнительном  виде. Переполнение  отличается от

    переноса,  который показывает,  что произошел  перенос из  старшего

    бита результата.