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

add R16, R17 ; R16 = 9, R17 = 7

Регистр R17 содержит число 7, и после сложения с содержимым R16, в котором хранится 9, результатом будет число $10, которое не может быть размешено в младшей тетраде. В этом случае будем установлен флаг Н в регистре состояния. Если младшая тетрада результата имеет значение меньшее, чем 10, то флаг Н будет сброшен в 0.

Как и флаги полупереноса для всех других контроллеров, рассмотренных в этой книге, бит Н меняется при переносе/заеме из младшего шестнадцатеричного разряда (тетрады). Его изменение не основано на десятичном результате операции. Но если требуется контролировать декадный перенос при операциях с двоично-десятичными числами, бит полупереноса может быть непосредственно использован при выполнении операции сложения, как это показано выше. Если результат операции больше или равен 10, то устанавливается значение флага Н = 1, которое указывает, что правильный двоично-десятичный результат может быть получен путем прибавления числа 6.

Использование флагов отрицательного результата N, переполнения V и знака S может показаться довольно сложным, если рассматривать, как они устанавливаются в 1 или сбрасываются в 0 при арифметических операциях. Следует понять их назначение, и тогда их применение станет простым и логичным. Эти биты надо проверять только после операций сложения или вычитания, в процессе которых используются или получаются отрицательные числа, представляемые в дополнительном коде.

Go to Top