Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_po_Arkht_EVM_i_Yazyk_assemblera.docx
Скачиваний:
44
Добавлен:
01.04.2022
Размер:
5.16 Mб
Скачать

Регистр признаков. Распиновка битов.

Регистр флагов -- иногда его называют регистром признаков — EFLAGS. Он состоит из одноразрядных флагов, отображающих в основном текущее состояние арифметико-логического устройства.

  • Признак нуля ZF (Zero Flag) — 1, если результат предыдущей операции равен нулю.

  • Признак знака SF (Sign Flag) — 1, если результат предыдущей операции отрицательный.

  • Признак переполнения OF (Overflow Flag) — 1, если при выполнении предыдущей операции произошло переполнение (overflow), то есть результат операции больше, чем зарезервированная для него память.

  • Признак переноса CF (Carry Flag) — 1, если бит был «перенесен» и стал битом более высокого порядка (в арифметических командах)

  • Признак прерывания IF (Interrupt Flag) — 1, если прерывания процессора разрешены.

  • Признак направления DF (Direction Flag) — используется для обработки строк

Распиновка битов:

    1. С помощью побитовых логические операции "И" и "ИЛИ" - оператор логическое "ИЛИ" записывается в виде вертикальной черты - "|" и может выполнятся между двумя переменными, а также между переменной и константой. Применение операции "ИЛИ" между двумя битами даёт в результате единственное значение - 1 (если хотя бы один из битов, к которому применяется оператор равен единице) или 0 (если оба бита равны нулю).

    2. При помощи битовой маски - битовая маска — это обычная константа с единичным N-ым битом. Находится она по формуле 2^N.

Регистр статуса (регистр состояния или регистр флагов) - это специальный регистр, который есть в любом процессоре, микропроцессоре или микроконтроллере.

Регистр состояния (Status Register) содержит данные об итоге выполнения последней арифметической или логической операции. Эти данные можно использовать для управления ходом программы с инструкциями условного перехода.

Обратите внимание, что регистр состояния обновляется после всех операций АЛУ (арифметико-логического устройства), как указано в справочнике по набору команд. 

SREG - это регистр состояния в AVR. Это 8-разрядный регистр, в котором каждый бит (разряд) отображает состояние какой-либо операции (или результата операции).

Каждый бит (флаг) доступен как для чтения, так и для записи. При инициализации все биты равны нулю.

Адрес регистра SREG - 0x3F (в шестнадцатеричной системе).

Каждый из битов (флагов) этого регистра можно установить, сбросить или проверить отдельно с помощью команд общего назначения или специально предусмотренных для этого команд, которые работают только с определённым флагом. Распиновка битов показана на рисунке.

Флаг I (бит 7): Global Interrupt Enable (Флаг глобального разрешения прерываний). 

Для включения прерываний флаг I должен быть установлен. Затем управление включением отдельных прерываний выполняется в отдельных регистрах управления. Если флаг I сброшен, ни одно из прерываний не включено, независимо от настроек отдельного прерывания. Флаг I очищается аппаратным обеспечением после завершения прерывания (автоматически сбрасывается), а устанавливается инструкцией RETI для включения последующих прерываний. Флаг I также может быть установлен и очищен инструкциями SEI и CLI, как описано в документации.

Флаг T (бит 6): Bit Copy Storage (Хранение Копируемого Бита)

Инструкции копирования бита (Bit Copy), то есть инструкции BLD (Bit LoaD) и BST (Bit STore), используют флаг T как источник или приёмник при операциях с битом. Бит из регистра в Регистре Файла (Register File) можно скопировать в бит Т с помощью инструкции BST, а состояние флага Т можно скопировать в бит регистра Регистра Файла при помощи команды BLD.

Флаг H (бит 5): Half Carry Flag (Флаг половинного переноса)

Флаг полупереноса H указывает на полуперенос в некоторых арифметических операциях. Полуперенос полезен в арифметике BCD.

Флаг полупереноса ведёт себя также, как флаг обычного переноса, только он связан с младшей тетрадой. Например,

  01011010 = 90

+

  00001111 = 15

=

  01101001 = 105

При выполнении этой операции будет установлен флаг полупереноса, так как произошёл перенос из третьего бита (старшего бита младшей тетрады).

Флаг S (бит 4): Sign Bit (Флаг знака)

S = N (+) V (исключающее или между флагами N и V)

Флаг S равен итогу операции исключающего или между флагом отрицательного результата N и флагом переполнения V.

Флаг V (бит 3): Two’s Complement Overflow Flag (Флаг переполнения дополнительного кода)

Флаг V поддерживает арифметику дополнения до двух. Более подробно об этом в описании набора команд процессора.

Флаг N (бит 2): Negative Flag (Флаг отрицательного значения)

Флаг N указывает на то, что результат арифметической или логической операции был отрицательным.

Флаг Z (бит 1): Zero Flag (Флаг нуля)

Флаг Z указывает на то, что результат арифметической или логической операции равен нулю. 

Флаг C (бит 0): Carry Flag (Флаг переноса)

Флаг C указывает на перенос при арифметической или логической операции.