Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ОКО-2015.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5.69 Mб
Скачать

2.2.1 Арифметические флажки

Арифметические флажки являются признаками, представляющими общую характеристику результата выполнения операции. Наиболее широко применяются следующие флажки:

    • флажок переноса (Flag Carry), обозначаемый (FC).

Устанавливается в (1) в двух случаях:

1. Если при выполнении операции сложения имеет место перенос из старшего бита результата (представляет собой расширение результата на 1 бит влево);

2. Если при выполнении операции вычитания имеет место заем (borrow) в старший бит. Это возможно в случае, если уменьшаемое меньше вычитаемого. Если операнды интерпретируются как беззнаковые числа, данный флажок является признаком переполнения микропроцессорой системы.

В операциях над знаковыми числами самостоятельного значения не имеет.

    • флажок вспомогательного переноса или дополнительный перенос (Flag Auxiliary), обозначаемый (FA).

При сложении показывает перенос, а при вычитании – заем из младшей тетрады (бит 3) результата. Используется в операциях двоично-десятичной арифметики.

    • флажок нуля (Flag Zero), обозначаемый (FZ).

Признак нулевого результата. Устанавливается в (1), когда результат выполнения операции равняется (0).

    • флажок знака (Flag Sign), обозначаемый (FS).

Повторяет состояние знакового бита.

    • флажок переполнения (Flag Overflow), обозначаемый (FО).

В операциях над знаковыми числами показывает, находится ли результат внутри диапазона представимых чисел:

        • – результат правильный;

        • – возникло переполнение. Следует отметить, что (FO) устанавливается в (1), если перенос в старший разряд и из него не совпадают.

2.2.2 Контроль переполнения в микропроцессорных системах

Возможно, только при сложении чисел с одинаковыми знаками, когда для представления результата недостаточно отведенного количество разрядов (требуется больше, чем для представления операндов). Это может приводить не только к неправильному (по абсолютной величине) результату, но и к неправильному его знаку. Независимо от кода для представления отрицательных чисел (обратный или дополнительный), переполнение разрядной сетки имеет место всегда, если только при сложении положительных чисел возникает перенос в знаковый разряд, а при сложении отрицательных чисел такой перенос равен нулю. Введение масштабных коэффициентов, на которые необходимо умножить все исходные данные перед решением задачи, позволяет предотвратить переполнение. В микропроцессорных системах предусматривают специальные средства для обнаружения переполнения разрядной сетки:

– программный способ; основан на том, что при сложении чисел с одинаковыми знаками знак суммы должен совпадать со знаками операндов;

– аппаратный способ; основан на использовании модифицированных кодов.

При использовании модифицированных кодов знак числа изображается двумя одинаковыми цифрами. Эти цифры в процессе выполнения операций обрабатываются так же, как и числовые разряды. При этом появление в знаковых разрядах разных цифр (01 при сложении положительных и 10 при сложении отрицательных двоичных операндов) свидетельствует о переполнении разрядной сетки.

Модифицированный код позволяет формировать правильный знак результата даже при наличии переполнения.

Этот знак сохраняется во втором (старшем) знаковом разряде. Такой способ обнаружения переполнения разрядной сетки наиболее распространен в микропроцессорных системах, несмотря на некоторую избыточность в аппаратных средствах для представления чисел, поскольку позволяет оперативно (то есть, одновременно с результатом) получить информацию о переполнении.

На рис. 2.34 представлен формат двоичного знакового числа с использованием модифицированного кода.

Рисунок 2.34 – Формат двоичного знакового числа с использованием модифицированного кода

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

То есть операнды должны интерпретироваться самим пользователем как знаковые или беззнаковые. В операции вычитания используется дополни-тельный код вычитаемого. Если длина операндов превышает длину машинного слова, то сложение и вычитание выполняют в несколько приемов, организуя программный цикл.

Операцию начинают с младших частей операндов, «продвигаясь» далее в сторону старших частей. На каждом шаге должны обрабатываться возника-ющие переносы (или заемы).