Frage zu schleifen



  • Hallo zusammen
    Um eine Schleife herunterzuzählen kann ich ja folgenden Code verwenden.

    mov ecx, 0xA
    L1: <irgend etwas
        loop L1
    

    Aber wie macht man das am besten, wenn man eine Schleife hochzählen will?

    Mfg Ishildur



  • Einen "besten Weg" gibt es da nicht. Unzaehlige Optimierungsmoeglichkeiten, etc.
    Ganz allgemein sind ja solche Schleifen in etwa wie folgt konstruiert:

    Zaehler=Startwert;
    Schleife:
    //irgendwas
    Zaehler=Next_Zaehler; //meist Zaehler-1 oder Zaehler+1
    if not Abbruchbedingung(Zaehler) goto Schleife // meist irgendwas Zaehler</>/=const
    

    Genauso laesst sich das 1:1 auch in Assembler umsetzen.
    Dein Beispiel ist praktisch nichts anderes als

    ecx=0xA;
    L1:
    //irgendwas
    if ecx==0 goto exitL1;
    ecx=ecx-1;
    goto L1;
    exitL1:
    ...
    

    Die dazu noetigen Befehle sind allg. mov fuer Zuweisungen,
    Rechenoperationen (zB. inc, dec, add, sub) fuer den Zaehler
    Vergleichsoperationen und bedingte Spruenge (cmp und j(n)b, j(n)a, j(n)e, j(n)l, j(n)g, etc.)



  • Was ich tun möchte, ist einen String zu durchlaufen und zwar vom Anfang bis zum Ende



  • Tja, wie wuerdest du das denn zB. in C machen (mit Char-Pointern)?


Anmelden zum Antworten