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

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