Hallo Programmierkundige - in C.

Vor Jahren war ich über eine Waitroutine gestolpert die ich nicht selten in meinen Quellen benutze besondes dann, wenn Warten angesagt ist ohne dass Timer, insbes. Interrupts erwünscht/zugelassen sind. Das übliche "delay" aus den Codesammlungen hatte ich eigentlich nie benutzt, weil ich der Hoffnung war, irgendwann in die Geheimnisse der erwähnten Routine einzdringen. Is nicht! Leider. Statt C klingt die mir immer noch wie Kantonesisch, Mandarin, Spanisch oder so - mit zusätzlichen Defekten in der Tastatur. Daher meine Bitte mir zum Verständnis des Ablaufes zu helfen.
Bei der Anwendung ist mir klar, dass die Routine ein Behelf ist - interuptgetriebene Timer wären da meist sinnvoller, die verwende ich auch. Nichts desto trotz würde ich gerne die Geheimnisse dieses Codes verstehen ;
Code:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  void wms ( uint16_t ms )      // 128 kHz-wms; Pausenwert ist nur experimentell !
                                //      M E I S T   keine Millisekunde ! ! !
// - - - - - - - - - - - - - - - -
  {                             // Weiter Messwerte in L3_tmr10.c und früher (siehe dort)
    for(; ms>0; ms--)
    {                           //
    uint16_t __c =  26;         // Ergibt am 14Dez21,17h34 1,001 sec bei wms=1000
                                // => bei wms ( 100) ist der (periphere) Einfluss
                                //      des Programmablaufs deutlich messbar !!
      __asm__ volatile (        //
         "1: sbiw %0,1" "\n\t"  //      schwankt >> mit Temperatur ! ! !
         "brne 1b"
         : "=w" (__c)          : "0" (__c)
      );
    }
  }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Meine Hoffung auf ein besseres Verständnis meinerseits durch Auflösen der Klammern erfüllten sich nie - das wird dadurch eher noch kryptischer.
Code:
// - - - - - - - - - - - - - - - -
  {                             //
  for(; ms>0; ms--)
    {                           //
      uint16_t __c =  26;       // Dieser Wert dient zur Anpassung an ControllerClock etc.
      __asm__ volatile ( "1: sbiw %0,1" "\n\t" "brne 1b" : "=w" (__c)  : "0" (__c)  );
    }
  }
// - - - - - - - - - - - - - - - -
Auch das Studium des entsprechenden Abschnittes der *.lls-Datei half mir nie. Daher die Bitte um Hilfe.

Ausschnitt "*.lls"
Code:
00000032 <wms>:
    for(; ms>0; ms--) 
    {                           //
    uint16_t __c =  26;         // Ergibt am 14Dez21,17h34 1,001 sec bei wms=1000
                                // => bei wms ( 100) ist der (periphere) Einfluss
                                //      des Programmablaufs deutlich messbar !!
      __asm__ volatile (        //
  32:    2a e1           ldi    r18, 0x1A    ; 26
  34:    30 e0           ldi    r19, 0x00    ; 0
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  void wms ( uint16_t ms )      // 128 kHz-wms; Pausenwert ist nur experimentell !
                                //      M E I S T   keine Millisekunde ! ! !
// - - - - - - - - - - - - - - - -
  {                             // Weiter Messwerte in L3_tmr10.c und früher
    for(; ms>0; ms--) 
  36:    04 c0           rjmp    .+8          ; 0x40 <__SREG__+0x1>
    {                           //
    uint16_t __c =  26;         // Ergibt am 14Dez21,17h34 1,001 sec bei wms=1000
                                // => bei wms ( 100) ist der (periphere) Einfluss
                                //      des Programmablaufs deutlich messbar !!
      __asm__ volatile (        //
  38:    f9 01           movw    r30, r18
  3a:    31 97           sbiw    r30, 0x01    ; 1
  3c:    f1 f7           brne    .-4          ; 0x3a <__CCP__+0x6>
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  void wms ( uint16_t ms )      // 128 kHz-wms; Pausenwert ist nur experimentell !
                                //      M E I S T   keine Millisekunde ! ! !
// - - - - - - - - - - - - - - - -
  {                             // Weiter Messwerte in L3_tmr10.c und früher
    for(; ms>0; ms--) 
  3e:    01 97           sbiw    r24, 0x01    ; 1
  40:    00 97           sbiw    r24, 0x00    ; 0
  42:    d1 f7           brne    .-12         ; 0x38 <__CCP__+0x4>
         "1: sbiw %0,1" "\n\t"  //      schwankt >> mit Temperatur ! ! !
         "brne 1b" 
         : "=w" (__c)          : "0" (__c) 
      ); 
    } 
  }
  44:    08 95           ret

00000046 <main>:
// ============================================================================= =
Danke im Voraus für Eure Mühe.