Система команд

Система команд 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 при выполнении операции сдвига кода влево.