Prof. Célio Guimarães - IC1
Atualizado em: 14/08/2012
Sejam (r1, r0) e (r3, r2) operandos de 16 bits onde r1 e r3 são os bytes mais significativos e r0 e r2 os menos significativos. Seja também cte16 uma constante de 16 bits, por exemplo $1234.
Soma: add r0, r2 adc r1, r3 Subtr: sub r0, r2 sbc r1, r3 Comparacao: ; equivale à subtacao sem alterar os operandos cp r0, r2 cpc r1, r3 No que se segue suponha que o operando 1 seja (r17, r16) (high, low) Subtrai constante de 16 bits do operando 1 subi r16, low(cte1) ; subtrai de r16 os 8 bits menos significativos de cte1 sbci r17, high(cte1) ; subtrai com CY de r17 os 8 bits mais significativos de cte1 Comparação com constante de 16 bits cpi r16, low(cte1) ldi r20, high(cte1) ; nao altera os flags! (bits de SREG) cpc r17, r20 Soma constante de 16 bits ao operando 1 subi r16, low(-cte1) ; nao existe soma com imediato no AVR, sbci r17, high(-cte1) ; subtraindo o negativo da constante = soma! Calcula o negativo (complemento de 2 ) do operando 1 com r16 com r17, subi r16, low (-1) sbci r17, high(-1)