МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

В дальнейшем в реальных программах этот код можно сократить до одной команды «sbiw». Но здесь мне хотелось показать, что при работе с числами, разрядностью больше 8, надо вычитать 1 вместо выполнения операции декремента. Должен также еще раз обратить ваше внимание на то, что приведенный выше код для операции декремента будет работать только, если число находится в 16-ти старших РОН.

Смена знака содержимого регистра производится при помощи команды «neg» (команда 36.28). Она просто вычитает содержимое регистра из нуля и помещает результат обратно в регистр. Смена знака 16-разрядного (и более) числа гораздо более сложная операция, которая требует применения команд вычитания и использования дополнительного регистра.

neg A ; Меняем знак младшего байта

clr Rn ; Выполняем команду «sbc» с нулем

; для старшего байта

sbc Rn, A + 1 ; Здесь Rn - любой РОН

mov A + 1, Rn

Команда дополнения «com» (команда 36.29) инвертирует значения всех битов в заданном РОН. Она не изменяет знак числа, а выполняет те же действия, что и логическая операция Исключающее ИЛИ (XOR) с числом $0FF. Эта команда называется также «дополнение до единицы».

Go to Top