Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ (экз.).docx
Скачиваний:
32
Добавлен:
01.04.2022
Размер:
11.92 Mб
Скачать

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

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

Регистр состояния (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 указывает на перенос при арифметической или логической операции.