Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Объясните назначение флага переноса (С). Можно ли использовать этот флаг при работе с числами со знаком. Если да, то как.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Ответ: Разряд 0 - С (флаг переноса). Этот флаг указывает на переполнение в результате выполнения какой-либо арифметической или логической операции. Флаг переноса устанавливается различными командами и может опрашиваться напрямую. К операциям, изменяющим этот флаг, относятся сложение, вычитание, циклические сдвиги и некоторые логические операции. Дополнительно: Этот принцип важен для арифметических операций, которые выполняются над данными, состоящими из нескольких байтов. Рассмотрим еще один пример. Результат -3 можно получить или с помощью сложения (команда add) чисел +12 и -15, или же с помощью вычитания (команда sub) числа +15 из числа +12. Для этих операций отрицательный результат определяют по флагам S и N. Возможность получить одинаковые результаты как в случае прибавления отрицательного, так и в случае вычитания положительного числа, возмещает отсутствие в наборе команд семейства AVR команды addi (сложение восьмиразрядных констант). Вычитание отрицательных значений дает такой же результат, что и при сложении положительных. Существует еще один вариант: константа вначале загружается в какой-либо регистр, а затем содержимое обоих регистров складывается с помощью команды add. Если речь идет о такой константе как 1, то лучше просто воспользоваться командой inc. Этот разряд условий всегда устанавливается, если результат какой-либо арифметической или логической операции равен нулю. В противном случае, флаг Z сбрасывается.
Флаг переноса CF (англ. Carry flag) — флаг регистра признаков 8086-совместимых процессоров, который устанавливается (1), если в результате операции из старшего бита происходит перенос при сложении или заемe при вычитании, иначе CF сбрасывается. Кроме того, CF используется в логических и унарных операциях. Такая архитектура означает, что, например, при 32-битном машинном слове результат сложения фактически получается 33-битный — 32 бита в регистре и ещё один бит в cf. Микроконтроллер TMS320x24x может производить арифметические операции различными способами, в зависимости от того, какие исходные данные используются, и в каком формате необходимо получить конечный результат. Числа могут быть как знаковые, так и беззнаковые. Знаковые числа всегда представляются в дополнительном коде. Это значит, что если сложить число со своим двоичным дополнением, то в результате получится ноль. Так же следует иметь в виду, что только программист знает, между какими двоичными разрядами его числа стоит точка, так как TMS320x24x ни коим образом этого не отслеживает. При выполнении арифметических операций (сложение и вычитание) в микроконтроллере TMS320x24x следует учитывать особенности архитектуры центрального процессора, состоящие в следующем: ü реально все операции в АЛУ выполняются над 32-разрядными операндами. Двоичный результат в пределах 32-разрядной сетки оказывается правильным независимо от того, рассматриваются ли эти числа программистом как числа без знака или как числа со знаком в дополнительном коде. Отличия проявляются только в формировании признаков результата операции: флаг переноса С формируется как признак переполнения при выполнении арифметических операций над 32-разрядными числами без знака, а флаг переполнения OV – как признак переполнения при выполнении операций над 32-разрядными числами со знаком в дополнительном коде (ниже см. более подробно);
Флаг переноса CF (Carry Flag) индицирует перенос или заем при выполнении арифметических операций. Переносом называется ситуация, когда в результате выполнения правильной, в общем, команды образуется число, содержащее более 16 двоичных разрядов и, следовательно, не помещающееся в регистр или ячейку памяти. Пусть, например, в регистре АХ содержится число 60000, а в регистре ВХ - 40000. При выполнении команды сложения add AX,BX в регистре-приемнике результата, которым в данном случае будет служить регистр АХ, должно быть записано число 100000, которое, разумеется, там поместиться не может. В этом случае и устанавливается флаг CF, по состоянию которого можно установить, что произошел перенос и, следовательно, содержимое АХ (которое в данном случае будет равно 100000 - 65536 = 34464) не является правильным результатом. Необходимо подчеркнуть, что ситуация переноса, как и вообще любая ошибка, возникшая по ходу выполнения программы, не приводит ни к каким последствиям, кроме установки соответствующего флага. Процессор, установив флаг, считает свою миссию выполненной и переходит к выполнению следующей команды. Если перенос в данном случае действительно является индикатором ошибки, программа должна после выполнения команды сложения проанализировать состояние флага CF, и при установленном флаге перейти на фрагмент обработки этой ошибки. Сказанное справедливо по отношению ко всем ошибочным ситуациям, возникающим в программе, - программа сама обязана отлавливать все ошибки и выполнять предусмотренные для таких случаев действия. Единственное, что может сделать процессор - это сообщить программе о подозрительном результате установкой того или иного флага.
|
||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 1283; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.114.228 (0.011 с.) |