Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ассемблер.doc
Скачиваний:
24
Добавлен:
25.08.2019
Размер:
526.34 Кб
Скачать

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

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

В арифметике чисел, представленныхв дополнительном коде, старший бит используется для хранения знака числа. Сумматор микропроцессора работает как со знакопеременными числами, так и беззнаковыми. Обычно сложение чисел со знаком дает верный результат. Однако некоторые из чисел, представленных в дополнительном коде, при сложении дают неверный результат. Пример на Фиг. 3.14 - сложение двух 8-битовых чисел, представленных в коде двоичного дополнения, - иллюстрирует этот случай. Если 72H и 53H - числа без знака, то результат их сложения верен. Если же это числа, представленныев дополнительном коде со знаком, то результат сложения 0C5H неверен, в коде двоичного дополнения он равен -59.

   

Шестнадцатеричное

Десятичный эквивалент

72H

114

+ 53H

+ 83

0C5H

197

Фиг. 3.14 8-битовое сложение с переполнением

сложение положительных чисел никогда не дает в результате отрицательное. Результат сложения оказался непредставиммым в диапазоне значений 8-битовых чисел в двоичном коде (от 127 до -128). Этот эффект принято называть переполнением,так как сумма вышла за пределы диапазона чисел, представимых в дополнительном коде.

Важно заметить, что переполнение и перенос - два различных флага и имеют разное значение. На Фиг. 3.14 нет переноса, так как сложение без знака дает правильный результат, а есть переполнение: что сложение со знаком дает неверный результат. Возможен и случай одновременно переноса и переполнения, как показано на Фиг. 3.15.

   

Шестнадцатеричное

Десятичный эквивалент

Hex

Со знаком

Без знака

8Eh

-114

142

0ADh

-83

173

1.3Bh

-197

315

Фиг. 3.15 8-битовое сложение с переносом и перепонением

Здесь показан пример сложения двух отрицательных чисел. Результат -197 выходит за пределы диапазона представимости в дополнительном коде. Это показано тем, что 8-битовый результат 3BH - положительное число. Кроме того в этом примере устанавливается флаг переноса, означающий, что сложение без знака дало число, большее максимального представимого. В случае 8-битовых чисел максимальное число равно 255.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]