ďťż

loop

Lemur zaprasza

"LOOP,
LOOPE, LOOPZ, LOOPNE, LOOPNZ"



 



Jak pisałem poprzednio, przy naszych
obecnych umiejętnościach spokojnie można zrobić pętlę
"for .. to ..." - choćby tak, jak to demonstruje ten przykład.



Oczywiście - pętla działa co można
bez trudu stwierdzić - poprawnie, lecz to jest pretekstem do
wprowadzenia właśnie instrukcji LOOP.




Składnia:

LOOP ETYKIETA


Tu warto od razu
wyjaśnić, że loop - z
angielskiego oczywiście - znaczy "pętla".


No ale co właściwie robi LOOP?
Mówiąc krótko - zaledwie dwie rzeczy: Po pierwsze - zmniejsza
wartość CX o jeden
(DEC CX), po drugie
- jeśli CX jest
większe 0 powoduje bezwarunkowy przeskok do "ETYKIETA".



Jeśli chcielibyśmy
powiedzieć to językiem procesora - LOOP ETYKIETA jest skrutem
poniższych komend:




DEC CX

CMP CX,0
JNE ETYKIETA








Nie trzeba tu filozofa by stwierdzić, że LOOP
umożliwia tylko budowę pętli typu "downto" czy - jak
w basicu - "step -1" - a po ludzku pętli, w której
licznik maleje a nie rośnie.

Oczywiście jest to prawda, ale prawdą jest też, że nie warto
się męczyć wykonywaniem powyżej
pokazanej pętli, gdy można to rozwiązać LOOP'em.

Ponieważ postraszyłem w nagłówku pół tuzinem instrukcji,
najwyższy czas zakończyć ten przydługi opis LOOP - za
podsumowanie musi wystarczyć przykładowy
programik.



 



 



LOOPE/LOPZ, LOOPNE/LOOPNZ



Instrukcje LOOP?? mają
- jak nie trudno się domyśleć - coś wspólnego z instrukcją
LOOP
. Tym czymś jest choćby użycie.




Składnia:

LOOPE ETYKIETA

LOOPZ ETYKIETA

LOOPNE ETYKIETA

LOOPNZ ETYKIETA




Nie trudno się też domyśleć, że LOOP??
dotyczą w jakiś sposób instrukcji skoku warunkowego...

Kończąc więc domysły wyjaśniam, że działanie instrukcji LOOP**
jest następujące:




lZmniejszyć CX o jeden (DEC CX -
tak jak przy LOOP
)l

lJeśli CX>0 wykonać skok warunkowy
do "ETYKIETA" w zależności
od typu instrukcji: LOOPE - JE, LOOPNE - JNE,
LOOPZ - JZ, LOOPNZ - JNZ.
l

lJeśli CX=0, lub nie spełniono warunku
skoku warunkowego, zakończyć pętlę. l



A po jakie licho jest to wszystko aż
tak dokładnie zamotane? - jedną z przyczyn jest oczywiście -
wyjście na przeciw programiście... teraz ma on możliwość
wykonania działania w pętli, które nie tylko będzie
uzależnione od wartości CX, ale nawet może on
przeprowadzić porówn anie dwóch innych wartości (np.
CMP AX,BX
) i również na tej podstawie wykonać pętlę
lub jej nie wykonać... np. procedurka upewniająca się -
zadająca użytkownikowi ważne pytanie, które musi on
potwierdzić 3 razy np. "czy formatować dysk"
- mogłaby wyglądać tak jak to przedstawia niniejszy program.

Mam nadzieję, że po jego analizie nie będziesz mieć już
żadnych wątpliwości, ale oczywiście - gdybyś jednak miał
mieć - czekam na pytania.



 



Powrót do spisu treści
kursu





by Grzegorz Złotowicz

Form and Graphics:

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza