Inline Assembler

Hallöle,
hier liegt wohl ein Missverständniss der "Constraint"-Charakter im I/O-Bereich des ASM-Codes vor. Folgender geänderter Code liefert die gewünschte "42"...

void setup()
{ 
  Serial.begin(9600);
}
void loop()
{
  asmTest(42);
}

void asmTest( uint8_t argC )
{
  uint8_t outC = 0;
 
  asm volatile
  (
    "cnt:    INC   %[outA]  \n\t"
    "        DEC   %[argA]  \n\t"
    "        BRNE  cnt      \n\t"
    : [argA] "+r"  (argC),  
      [outA] "+r"  (outC) 
    :
  );
 
  Serial.println( outC ); // gibt 42 aus wie es sein sollte
}

Die "Constraints" sind nicht einfach zu verstehen und ich musste auch zuerst etwas "um die Ecke" denken, dann aber ging es sogar mit 32Bit-Werten...
Gute Info dazu >>> Inline Assembler Cookbook
Rudi