Technika mikroprocesorowa
zawartości rejestru i liczeniu upływającego przy tym czasu Prześledźmy prace poniższej pętli:
— Załadowanie wartości 0 do rejestru 16 /di r!6, 0
—■ Każda etykieta posiada swój adres w kodzie programu i jest wykorzystywana w skokach ety kie tal:
—■ Dekrementacja zawartości rejestru (1-sze wykonanie tego rozkazu daje wyniku wartość 255, ponieważ operacje matematyczne wykonywane sa modulo 256)
dec rI6
— Porównanie zawartości rejestru ze wskazana liczba (tu: z zerem) cpi r 16, 0
—- Skok warunkowy, jeśli w wyniku dekrementacji nie osiągnięto zera, to program skacze do etykiety 1, w przeciwnym razie przechodzi do następnej instrukcji (tu: etykieta koniec) brnę etykieta1 koniec:
W wyniku porównania cpi zawartości rejestru (tu: 16) i stałej (tu: 0) następuję ustawienie (lub wyzerowanie) dwóch flag: Z i C. Rozkaz skoku warunkowego np. brnę lub breą lub brio itd. następujący bezpośrednio po rozkazie porównania cpi lub cp testuje flagę Z lub flagę C i wg jej wartości orientuje sie czy należy wykonać skok warunkowy. Z tej przyczyny rozkazy: porównania i skoku warunkowego musza następować bezpośrednio po sobie tj. nie mogą zostać rozdzielone rozkazem trzecim, który mógłby wplynac w sposób niezaplanowany na wartość flag: Z lub C.
Wykonaj symulacje działania programu. Przechodząc program praca krokowa sprawdź, ile cykli potrzeba na wykonanie poszczególnych rozkazów w pętli tj. dec, cpi i brnę. Liczba cykli jednokrotnego wykonania pętli pomnożona przez liczbę obejść pętli da całkowita liczbę cykli traconych w tej pętli. Policz ja.
Ustaw kursor na etykiecie koniec: i z Menu Debug pobierz Toggle Breakpoint. Z lewej strony etykiety koniec: pojawi sie czerwona kropka, oznaczajaca punkt, w którym zatrzyma sie wykonanie programu. Z Menu Debug wybierz Reset, a następnie Run. Program wykona wszystkie rozkazy az do osiągnięcia punktu Breakpoint. Z Cycle Counter sprawdź, w ilu cyklach program został wykonany, a ze Stop Watch , w jakim czasie został wykonany dla wybranej częstotliwości kwarcu.
14