Регистр состояния
Регистры общего назначения
Регистры общего назначения предназначены для временного хранения данных в процессе вычислений. Разрядность регистров определяет разрядность вычислений и, в конечном счете, разрядность самого микроконтроллера. Количество регистров может быть произвольным. Обычно в этих регистрах хранится информация, обрабатываемая в арифметическо-логическом устройстве и полученный в нем результат вычислений. На некоторые из регистров могут быть возложены еще какие либо дополнительные функции. В большинстве архитектур один из регистров отличается от других большими возможностями. Он обычно называется аккумулятор или рабочий регистр. В этом регистре может храниться одна из переменных, обрабатываемая в арифметическо-логическом устройстве, и туда же помещается результат операции.
В микроконтроллере 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-битного числа в старшую (из третьего разряда в четвертый).
Разрядность регистра состояния обычно равна разрядности ядра, но некоторые его биты могут быть задействованы или не задействованы в работе других узлов ядра.