Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Tłumaczenie: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
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 |
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.
Ź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.
Ź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ą ABC jest licznikiem bajtów |
Te instrukcje blokowe są niezmiernie przydatne w aplikacjach przetwarzających łańcuchy znakowe.
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.