Opis instrukcji mikroprocesora Z80


Przesył blokowy i przeszukiwanie

Tablica 8 wymienia bardzo zaawansowane instrukcje przesyłów blokowych. Wszystkie te instrukcje współpracują z następującymi trzema rejestrami:

 

    HL wskazuje obszar źródłowy
    DE wskazuje obszar przeznaczenia
    BC jest licznikiem bajtów

 

Gdy programista zainicjuje te trzy rejestry, może on użyć dowolnej z czterech instrukcji przesyłu. Instrukcja LDI (ang. Load and Increment - prześlij i zwiększ) przesyła jeden bajt z komórki wskazywanej przez HL do komórki wskazywanej przez DE. Następnie pary rejestrów HL i DL zostają automatycznie zwiększone i są gotowe do adresowania następnej komórki w bloku. Również w tym samym czasie zostaje zmniejszony licznik bajtów (para rejestrów BC). Instrukcja ta przydaje się przy przesyłaniu bloku danych, gdzie przy każdym przesyle wymagane jest przetwarzanie innych danych. Instrukcja LDIR (ang. Load, Increment and Repeat - prześlij, zwiększ i powtarzaj) jest rozszerzeniem instrukcji LDI. Te same operacje przesyłu i zwiększania są powtarzane aż do wyzerowania licznika bajtów w BC. W ten sposób pojedyncza instrukcja potrafi przenieść dowolny blok danych z jednego miejsca pamięci w dowolne inne.

Ponieważ używane są rejestry 16-bitowe, rozmiar bloku może sięgać do 64KB (1KB = 1024B) i może być przesuwany z dowolnego miejsca w pamięci w dowolne inne. Co więcej, bloki mogą się pokrywać, ponieważ nie istnieją ograniczenia co do danych, które są używane w tych trzech parach rejestrów.

Instrukcje LDD i LDDR są bardzo podobne do LDI i LDIR. Jedyną różnicą jest to, iż pary rejestrów HL i DE są zmniejszane po wykonaniu każdego przesłania bajtu, zatem przesył rozpoczyna się od końca bloku ku jego początkowi.

 

Tablica 8. Grupa Przesyłu Blokowego - LDI, LDIR, LDD, LDDR

    Źródło  
    Rej. pośr.  
Przeznaczenie     (HL)  
Rejestrowe
pośrednie
(DE) ED
A0
LDI - prześlij (DE) → (HL)
zwiększ HL i DE, zmniejsz BD
ED
B0
LDIR - prześlij (DE) → (HL)
zwiększ HL i DE, zmniejsz BD, powtarzaj do BC = 0
ED
A8
LDD - prześlij (DE) → (HL)
zmniejsz HL i DE, zmniejsz BD
ED
B8
LDDR - prześlij (DE) → (HL)
zmniejsz HL i DE, zmniejsz BD, powtarzaj do BC = 0
      Uwaga:
Rejestr HL wskazuje źródło
Rejestr DE wskazuje miejsce docelowe
Rejestr BC jest licznikiem bajtów

 

Tablica 9 określa kody operacyjne dla czterech instrukcji przeszukiwań blokowych. Pierwsza z nich, CPI (ang. Compare and Increment - porównaj i zwiększ) porównuje dane w akumulatorze z zawartością komórki pamięci wskazywanej przez rejestr HL. Wynik porównania zostaje zapamiętany w jednym z bitów znaczników, a para rejestrów jest następnie zwiększana i licznik bajtów (para rejestrów BC) jest zmniejszany.

Instrukcja CPIR jest jedynie rozszerzeniem instrukcji CPI, gdzie porównywanie powtarza się aż do wystąpienia zgodności lub wyzerowania licznika bajtów w parze rejestrów BC. W ten sposób ta pojedyncza instrukcja może przeglądnąć całą pamięć w poszukiwaniu 8 bitowego znaku.

Instrukcje CPD (ang. Compare and Decrement - porównaj i zmniejsz) i CPDR (Compare, Decrement and Repeat - porównaj, zmniejsz i powtarzaj) są podobnymi instrukcjami, ich jedyną różnicą jest to, iż zmniejszają HL po każdym porównaniu, zatem pamięć jest przeszukiwana w kierunku przeciwnym. Przeszukiwanie rozpoczyna się od końca bloku, a nie od jego początku.

 

Tablica 9. Grupa Przeszukiwania Blokowego - CPI, CPIR, CPD, CPDR

Źródło  
Rej. pośr.  
(HL)  
ED
A1
CPI
zwiększ HL, zmniejsz BC
ED
B1
CPIR
zwiększ HL, zmniejsz BC, powtarzaj aż BC = 0 lub wystąpi zgodność
ED
A9
CPD
zmniejsz HL, zmniejsz BC
ED
B9
CPDR
zmniejsz HL, zmniejsz BC, powtarzaj aż BC = 0 lub wystąpi zgodność
Uwaga:
HL wskazuje komórkę pamięci, która ma być porównywana z zawartością A
BC jest licznikiem bajtów

 

Te instrukcje blokowe są niezmiernie przydatne w aplikacjach przetwarzających łańcuchy znakowe.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.