Cykly DO-WHILE, FOR-LOOP (assembler)
Na rozdiel od konštrukcií, ako IF-ELSE a SWITCH-CASE, v ktorých sa pre daný prípad vykoná daná činnosť len raz,
cykly túto činnosť opakujú. V prípade FOR-LOOP cyklu sa činnosť opakuje n-krát. V prípade DO-WHILE sa činnosť
opakuje, kým je splnená podmienka, takže môžeme nastaviť počet opakovaní inkrementáciou premennej, alebo podmieniť
cyklus vonkajším vstupom.
DO-WHILE cyklus
While cyklus používame napríklad v hlavnom cykle programu, vtedy väčšinou s podmienkou, ktorá je vždy platná,
napríklad true, alebo 0 == 0. Taktiež ho používame napríklad pri čakaní na stlačenie tlačidla, alebo iný vstup. Kým
nie je tlačidlo stlačené, program je zacyklený vo WHILE cykle a jeho stlačením ho ukončíme.
Vo vyšších jazykoch vyzerá DO-WHILE cyklus napríklad takto:
While (hodnota != 100){ hodnota++; CALL LED_1_Invert(); }
Tento istý program prepísaný do assemblera vyzerá nasledovne:
while1: INC hodnota ; hodnota = hodnota+1 CALL LED_1_Invert CMP hodnota,100 ; porovnaj hodnota,100 JNZ while1 ; ak hodnota-100 <> 0, skoč na while1
V prípade nekonečnej podmienky použijeme obyčajný skok, JMP
while2: ... JMP while2
FOR-LOOP cyklus
For cyklus používame vtedy, ak vieme, koľko krát chceme činnosť opakovať. Môžeme ho použiť napríklad pri meraní a
priemerovaní, kedy meriame vstup napríklad 128×, výsledky spočítavame a následne ich delíme 128.
Vo vyššom jazyku vyzerá FOR cyklus takto:
For (i = 0; i<100; i++){ CALL LED_1_Invert(); }
Podobný program prepísaný do assemblera vyzerá takto:
MOV hodnota,0 for1: CALL LED_1_Invert INC hodnota CMP hodnota,100 JNZ for1
Všimnite si podobnosť s WHILE cyklom, ktorá vznikla kvôli tomu, že v oboch cykloch vieme, koľko krát časť programu opakujeme.