Арифметико-логическое устройство (АЛУ) выполняет все вычислительные операции в микропроцессорной системе. Непосредственно к АЛУ подключены 32 РОНа (регистровый файл), как показано на рис.8.
Рис.8 Арифметико-логическое устройство
В большинстве операций любой из этих регистров может использоваться в качестве источника входных данных либо приемника результата. При этом все арифметические и логические команды над РОНми имеют вид подобный add Rd,Rs. За названием мнемоники, которая описывает действие (addition – сложение), следуют два параметра (операнда). В данном случае это регистры Rd (destination – приемник) и Rs (source – источник), содержимое которых необходимо сложить между собою. Сумма будет размещена по адресу регистра Rd.
Таким образом, сложить любые два регистра можно двумя разными способами: add R16,R17 (сложить R16 с R17 и поместить сумму в R16) или add R17,R16 (сложить R17 с R16 и поместить сумму в R17). Причем выборка содержимого регистров, сложение и сохранение результата займет всего 1 период тактовой частоты.
Что касается, арифметических и логических действий над регистром и константой, то в целом они подобны действиями между РОНми. Однако в этих целях могут использоваться только старшая половина регистрового файла. Например, в команде вычитания константы из регистра subi Rd,K в качестве Rd могут выступать только регистры R16…R31.
В состав АЛУ микроконтроллеров семейства ATmega входит также 2-тактный аппаратный умножитель 8x8 бит, который способен работать как с беззнаковыми так и со знаковыми числами представленными в дополнительном коде. Во всех разновидностях операции умножения, 16-разрядное произведение помещается в регистры R1 (старший байт) и R0 (младший байт).
Регистры R26…R31 у AVR имеют двойное предназначение. Они могут быть использованы как три 16-разрядных указателя, которые имеют символьные имена X (XH:XL = R27:R26), Y (YH: YL = R29:R28), Z (ZH: ZL = R31:R30) и применяются для задания адресов ячеек SRAM в различных командах пересылки данных (ld Rd,X/Y/Z, st X/Y/Z,Rd и т.д.). Указатель Z, кроме этого, необходим инструкциям lpm/spm при чтении/записи FLASH-память программ. Регистры X и Y отсутствуют в некоторых устаревших моделях ATtiny.
АЛУ любого микропроцессора неразрывно связано с регистром флагов программы (регистр состояния программы), который у AVR имеет название SREG (Status Register) и расположен в пространстве РВВ. Описание битов SREG приведено в табл.4. Все флаги SREG доступны как для чтения, так и для записи.
Табл.4. Флаги регистра состояния программы SREG:
Номер бита |
Название флага |
Описание |
0 |
C |
Флаг переноса. Устанавливается в 1 если в результате операции произошел выход за границы байта. |
1 |
Z |
Флаг нуля. Устанавливается в 1 если результат операции равен нулю. |
2 |
N |
Флаг отрицательного результата. В этот флаг копируется содержимое 7-мого MSB результата операции. |
3 |
V |
Флаг переполнения в дополнительном коде. Устанавливается в 1 при переполнении разрядной сетки знакового результата. |
4 |
S |
Флаг знака. Содержимое флага определяется как N XOR V. |
5 |
H |
Флаг половинного переноса. Устанавливается в 1 если в результате операции сложения/вычитания произошел перенос/заем из 3-тего бита в 4-тый. |
6 |
T |
Флаг хранения копируемого бита. Флаг используется в качестве источника и приемника командами копирования битов bld и bst соответственно. |
7 |
I |
Флаг глобального разрешения прерываний. При установке в 1 этого флага происходит разрешение всех немаскируемых прерываний. |
Флаг Z является показателем нулевого результата во всех вычислительных операциях. Флаги С и H используются преимущественно для связи байтов в процессе сложения/вычитания (флаг С также в сдвиговых операциях). Биты N,S и V необходимы для знаковых вычислений. Флаг T – источник и приемник в командах копирования битов bld/bst, но может быть использован и как дополнительная ячейка для хранения любой пользовательской информации (флаг пользователя). Последний флаг I, в отличие от всех остальных, не связан с результатами вычислительных операций либо операций пересылок и предназначен для глобального разрешения/запрета прерываний.
Перейти к следующей части: Стек
Комментарии (0) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация