2795180261

2795180261



Laboratorium Techniki Mikroprocesorowej 2 - EZ1C600 034

lp:= l_powt

nn


lp:=lp-1


C,l_powt    /zainicjowanie    licznika    na    wartość pocz.

/etykieta początkowa pętli programowej inne działania    wewn. pętli

C    /dekrementacja    licznika    lp

NZ,powt    /skok na początek pętli    gdy    lp>0


LD

powt:

DEC JR

Powyższa implementacja pętli programowej wykorzystuje ustawianie flagi Z przez rozkaz DEC w sytuacji wyzerowania dekrementowanego przez ten rozkaz operandu. Powyższe rozwiązanie ma jeszcze jedną zaletę: możliwe jest wykonanie pętli 256 razy. Aby to uzyskać wystarczy zainicjować licznik pętli na 0. Podobny efekt można uzyskać przy wykorzystaniu rozkazu inkrementacji:

LD C,256-l_powt

powt:    ;etykieta początkowa pętli programowej

;    ...    inne działania wewn. pętli

INC C    ;inkrementacja licznika lp

JR    NZ,powt    ;skok na początek pętli gdy lp>0

Procesor eZ80 ma także dedykowany rozkaz DJNZ do obsługi pętli programowej:

LD B,ljpowt /zainicjowanie licznika na wartość pocz. powt:    /etykieta początkowa pętli programowej

/    ...    inne działania wewn. pętli

DJNZ powt    /skok na początek pętli gdy lp<l_powt

DEC

BC

/dekrement licznika pętli

LD

A,B

OR

C

/czy wyzerowany

JR

NZ,powt

/skok jeśli nie


Jego użycie jest najwygodniejszym sposobem na realizację pętli programowej, pozwala wykonać ją nawet 256 razy, jednak wymaga zawsze użycia rejestru B. Wszystkie powyższe przykłady realizacji w asemblerze Z80 zakładają że liczba powtórzeń pętli nie przekracza 256. Gdy pętla programowa powinna mieć większą liczbę powtórzeń, należy użyć dwubajtowego licznika. W takim przypadku korzystamy z rozkazów DEC lub INC operujących na rejestrach 16-bitowych (BC, DE, HL, IX, IY). Niestety rozkazy te nie zmieniają żadnej z flag, dlatego sprawdzenie czy 16-bitowy operand wyzerował się należy wykonać w sposób opisany wcześniej, np. przez policzenie sumy logicznej jego bajtów składowych:

Przy operowaniu na złożonych strukturach danych (np. tablice co najmniej dwuwymiarowe) zachodzi potrzeba zagłębiania pętli programowych jedna w drugiej.

1-13



Wyszukiwarka

Podobne podstrony:
Laboratorium Techniki Mikroprocesorowej 2 - EZ1C600 034 UWAGA: - pierwszą dyrektywą tekstu programu
Laboratorium Techniki Mikroprocesorowej 2 - EZ1C600 034 Laboratorium Techniki Mikroprocesorowej 2 -
Laboratorium Techniki Mikroprocesorowej 2 - EZ1C600 034 Laboratorium Techniki Mikroprocesorowej 2 -
Laboratorium Techniki Mikroprocesorowej 2 - EZ1C600 034 mniejsze’. Rozwiązaniem alternatywnym dla uż

więcej podobnych podstron