Система команд AVR содержит более 130 операций (прил. 3). Она содержит регистровые операции, операции с битами в разрядах регистров общего назначения, команды управления ходом программы и др.
Арифметические операции (сложение и вычитание) могут выполняться с числами без знака в двоичном коде и с числами со знаком в дополнительном двоичном коде. В МК вычитание выполняется с помощью аппаратного двоичного вычитателя, у МК типа m163 имеется аппаратный умножитель. Во всех операциях умножения результат помещается в двойной регистр R0,R1. Любые операции между рабочим регистром и константой (например «#->R» или «R & #») возможны только для r16..r31, а операции с битами I/O регистров (например «1->PortB.4») – только для p0..p31.
При выполнении арифметических и логических операций формируются значения признаков результата:
– признак С принимает единичное значение:
– при появлении единицы переноса из старшего разряда при выполнении операции сложения;
– при появлении единицы займа в старший разряд при выполнении операции вычитания;
– при выходе единицы за пределы разрядной сетки при выполнении операции сдвига;
– при выполнении операций сложения и вычитания с числами без знака при переполнении разрядной сетки;
– признак Zпринимает единичное значение при получении нулевого результата операции; при выполнении операции вычитания с учетом займа Z=1, если нулевой результат получен при выполнении данной и предшествующей операций;
– признак Nпринимает значение, равное значению старшего разряда кода результата; при выполнении арифметических операций с числами со знаком и отсутствии переполнения разрядной сетки он представляет знак результата;
– признак Vпринимает единичное значение,если при выполнении арифметической операции с числами со знаком возникло переполнение разрядной сетки;
– признак S=NVпредставляет знак результата при выполнении арифметических операций с числами со знаком вне зависимости от переполнения разрядной сетки; при переполнении разрядной сетки (V=1) знак результата противоположен значению в старшем разряде кода результата;
– признак Hпринимает единичное значение при наличии единицы переноса из разряда D3 в D4 при выполнении операции сложения, при наличии единицы займа в разряд D3 из разряда D4 при выполнении операции вычитания и при передаче единицы из разряда D3 в разряд D4 при выполнении операции сдвига кода влево.