Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Tłumaczenie: mgr Jerzy Wałaszek

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

Instrukcje mikroprocesora – 2

SPIS TREŚCI

Instrukcje mikroprocesora – 2

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.

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.