#include volatile uint8_t value8=0xaa; volatile uint16_t value16= 0xbbcc; int main() { // coloca em value8 o byte lido da PORTA D asm volatile("in %0, %1" : "=r" (value8) : "I" (_SFR_IO_ADDR(PORTD))); value8++; // agora vamos trocar os nibbles de value asm volatile("swap %0" : "=r" (value8) : "0" (value8)); // agora vamos trocar os bytes da variavel de 16 bits value16 asm volatile("mov __tmp_reg__, %A0" "\n\t" "mov %A0, %B0" "\n\t" "mov %B0, __tmp_reg__" "\n\t" : "=r" (value16) : "0" (value16) ); }