Ciklus példák

Áttekintés

Elrejtés

A ciklusok is ugyanazokkal az ugró utasításokkal oldhatóak meg, mint az elágazások. A különbség csak annyi, hogy míg az elágazásoknál előre ugrunk, hogy egy-egy kódrészletet kihagyjunk, addig a ciklusoknál a kódban visszafelé ugrunk, és megismétlünk részleteket.

Faktoriális számítás

Elrejtés

A feladat, hogy számítsuk ki az EAX regiszterben a 6! (6 faktoriális) értéket.


1. megoldás:

    MOV     EAX, 1  ; Szorzat előkészítése
    MOV     ECX, 1  ; ECX lesz a ciklusváltozó

ciklus:             ; itt kezdődik a ciklus, ide ugrunk vissza

    MUL     ECX     ; Szorzás a ciklusváltozóval
    INC     ECX     ; Ciklusváltozó növelése

    CMP     ECX, 6  ; Ha még nem értük el a ciklus végét
    JLE     ciklus  ;   akkor vissza a kezdetekhez

2. megoldás:

    MOV     EAX, 1  ; Szorzat előkészítése
    MOV     ECX, 6  ; ECX lesz a ciklusváltozó (most csökkentjük)

ciklus:             ; itt kezdődik a ciklus, ide ugrunk vissza

    MUL     ECX     ; Szorzás a ciklusváltozóval
    
    LOOP    ciklus  ; a LOOP megold mindent (csökkenti ECX-et és visszaugrik, ha nem 0 az értéke)