Регистр состояния

Регистры общего назначения

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

В микроконтроллере 8051 младшие 32 байта резидентной памяти данных сгруппированы в 4 банка по 8 регистров R0-R7 в каждом и занимают адреса:

Банк 0 00H ­– 07H

Банк 1 08H – 0FH

Банк 2 10H – 17H

Банк 3 18H – 1FH

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

► флаг переноса (Carry) – устанавливается при переполнении разрядной сетки; при алгебраическом сложении двух двоичных чисел признаком переполнения является наличие переноса в знаковый разряд суммы при отсутствии переноса из ее знакового разряда (положительное переполнение) или наличие переноса из знакового разряда суммы при отсутствии переноса в ее знаковый разряд (отрицательное переполнение); если и в знаковый и, из знакового разряда суммы есть переносы или нет этих обоих переносов, то переполнение отсутствует.

► флаг отрицательного результата (Negative) – устанавливается, когда результат операции является отрицательным числом; отрицательным обычно считается число, содержащее единицу в знаковом (старшем) разряде.

► флаг нулевого результата (Zero) – устанавливается, когда результат операции равен нулю;

► флаг переноса (Half Overflow) – устанавливается при возникновении переноса из младшей тетрады 8-битного числа в старшую (из третьего разряда в четвертый).

Разрядность регистра состояния обычно равна разрядности ядра, но некоторые его биты могут быть задействованы или не задействованы в работе других узлов ядра.