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

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

Opis instrukcji mikroprocesora Z80 – 3

SPIS TREŚCI

Opis instrukcji mikroprocesora Z80 – 3

Grupa instrukcji wymiany, przesłań i przeszukiwań blokowych

EX DE,HL

      

EXCHANGE REGISTER PAIRS = Wymień ze sobą pary rejestrów

Operacja:   DE ←→ HL
Mnemonik:   EX
Argumenty:   DE,HL
1 1 1 0 1 0 1 1 EB
Opis:   2 bajtowa zawartość pary rejestrów DE zostaje wymieniona z parę HL.
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli zawartość pary rejestrów DE wynosi 2822H, a zawartość pary rejestrów HL wynosi 499AH, to po wykonaniu instrukcji EX DE,HL w parze rejestrów DE znajdzie się 499AH, a w parze HL 2822H.

EX AF,AF'

      

EXCHANGE REGISTER PAIRS = Wymień ze sobą pary rejestrów

Operacja:   AF ←→ A'F'
Mnemonik:   EX
Argumenty:   AF,AF'
0 0 0 0 1 0 0 0 08
Opis:   2 bajtowa zawartość pary rejestrów AF zostaje wymieniona z zawartością drugiej pary AF'. Para rejestrów AF' składa się z alternatywnych rejestrów akumulatora A' oraz znaczników F'.
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli para rejestrów AF zawiera liczbę 9900H, a para AF' zawiera liczbę 5944H, to instrukcja EX AF,AF' powoduje, iż w AF znajdzie się liczba 5944H, a w AF' liczba 9900H.

EXX

      

EXCHANGE EXTRA REGISTERS = Wymień z rejestrami zapasowymi

Operacja:   BC ←→ BC', DE ←→ DE', HL ←→ HL'
Mnemonik:   EXX
Argumenty:   Brak
1 1 0 1 1 0 0 1 D9
Opis:   Każda 2 bajtowa zawartość par rejestrów BC, DE i HL zostaje wymieniona z 2 bajtową zawartością odpowiednich rejestrów zapasowych BC', DE' i HL'.
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli pary rejestrów posiadały zawartość:
BC = 445AH   BC' = 0988H
DE = 3DA2H   DE' = 9300H
HL = 8859H   HL' = 00E7H

to po wykonaniu instrukcji EXX rejestry te przyjmą następującą zawartość:

BC = 0988H   BC' = 445AH
DE = 9300H   DE' = 3DA2H
HL = 00E7H   HL' = 8859H

EX (SP),HL

      

EXCHANGE HL WITH STACK TOP = Wymień HL ze szczytem stosu

Operacja:   H ←→ (SP+1), L ←→ (SP)
Mnemonik:   EX
Argumenty:   (SP),HL
1 1 1 0 0 0 1 1 E3
Opis:   Młodszy bajt pary rejestrów HL jest wymieniany z zawartością komórki pamięci o adresie określonym przez zawartość rejestru wskaźnika stosu SP, a starszy bajt HL jest wymieniany z kolejną komórką pamięci o adresie SP+1. Zawartość SP nie ulega zmianie.
Cykle Takty Czas
5 19 (4,3,4,3,5) 4,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli para rejestrów HL zawiera 7012H, rejestr wskaźnika stosu zawiera 8856H, komórka pamięci pod adresem 8856H zawiera bajt 11H, a następna komórka pamięci o adresie 8857H zawiera bajt 22H, to instrukcja EX (SP),HL powoduje, iż para rejestrów HL przyjmie zawartość 2211H, w komórce pamięci o adresie 8856H zostanie umieszczony bajt 12H, w następnej komórce o adresie 8857H zostanie umieszczony bajt 70H, a rejestr wskaźnika stosu zatrzyma swą zawartość 8856H.

EX (SP),IX

      

EXCHANGE IX WITH STACK TOP = Wymień IX ze szczytem stosu

Operacja:   IXH ←→ (SP+1), IXL ←→ (SP)
Mnemonik:   EX
Argumenty:   (SP),IX
1 1 0 1 1 1 0 1 DD
1 1 1 0 0 0 1 1 E3
Opis:   Młodszy bajt rejestru indeksowego IX jest wymieniany z zawartością komórki pamięci o adresie określonym przez zawartość rejestru wskaźnika stosu SP, a starszy bajt IX jest wymieniany z kolejną komórką pamięci o adresie SP+1. Zawartość SP nie ulega zmianie.
Cykle Takty Czas
6 23 (4,4,3,4,3,5) 5,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr indeksowy IX zawiera 3988H, rejestr wskaźnika stosu zawiera 0100H, komórka pamięci pod adresem 0100H zawiera bajt 90H, a następna komórka pamięci o adresie 0101H zawiera bajt 48H, to instrukcja EX (SP),IX powoduje, iż rejestr indeksowy IX przyjmie zawartość 4890H, w komórce pamięci o adresie 0100H zostanie umieszczony bajt 88H, w następnej komórce o adresie 0101H zostanie umieszczony bajt 39H, a rejestr wskaźnika stosu zatrzyma swą zawartość 0100H.

EX (SP),IY

      

EXCHANGE IY WITH STACK TOP = Wymień IY ze szczytem stosu

Operacja:   IYH ←→ (SP+1), IYL ←→ (SP)
Mnemonik:   EX
Argumenty:   (SP),IX
1 1 1 1 1 1 0 1 FD
1 1 1 0 0 0 1 1 E3
Opis:   Młodszy bajt rejestru indeksowego IY jest wymieniany z zawartością komórki pamięci o adresie określonym przez zawartość rejestru wskaźnika stosu SP, a starszy bajt IY jest wymieniany z kolejną komórką pamięci o adresie SP+1. Zawartość SP nie ulega zmianie.
Cykle Takty Czas
6 23 (4,4,3,4,3,5) 5,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr indeksowy IY zawiera 3988H, rejestr wskaźnika stosu zawiera 0100H, komórka pamięci pod adresem 0100H zawiera bajt 90H, a następna komórka pamięci o adresie 0101H zawiera bajt 48H, to instrukcja EX (SP),IY powoduje, iż rejestr indeksowy IY przyjmie zawartość 4890H, w komórce pamięci o adresie 0100H zostanie umieszczony bajt 88H, w następnej komórce o adresie 0101H zostanie umieszczony bajt 39H, a rejestr wskaźnika stosu zatrzyma swą zawartość 0100H.

LDI

      

LOAD DATA AND INCREMENT = Ładuj dane i zwiększ

Operacja:   (DE) ← (HL), DE ← DE+1, HL ← HL+1, BC ← BC-1
Mnemonik:   LDI
Argumenty:   Brak
1 1 1 0 1 1 0 1 ED
1 0 1 0 0 0 0 0 A0
Opis:   Bajt danych jest przepisywany z komórki pamięci adresowanej przez zawartość pary rejestrów HL do komórki adresowanej parą rejestrów DE. Następnie zawartości obu par rejestrów są zwiększane o 1, a para rejestrów BC (ang. byte counter - licznik bajtów) jest zmniejszana o 1.
Cykle Takty Czas
4 16 (4,4,3,5) 4,00μs
Zmieniane znaczniki:   S nie jest zmieniany
Z nie jest zmieniany
H jest zerowany
P / V jest ustawiany na 1, jeśli BC-1 ≠ 0, inaczej zerowany
N jest zerowany
C nie jest zmieniany
Przykład:   Jeśli para rejestrów HL zawiera 1111H, komórka pamięci 1111H zawiera bajt 88H, para rejestrów DE zawiera 2222H a para rejestrów BC zawiera 7H, to instrukcja LDI daje w wyniku następujące zawartości rejestrów i komórek pamięci:
HL zawiera 1112H
(1111H) zawiera 88H
DE zawiera 2223H
(2222H) zawiera 88H
BC zawiera 6H

LDIR

      

LOAD DATA,  INCREMENT AND REPEAT = Ładuj dane, zwiększ i powtarzaj

Operacja:   (DE) ← (HL), DE ← DE+1, HL ← HL+1, BC ← BC-1
Mnemonik:   LDIR
Argumenty:   Brak
1 1 1 0 1 1 0 1 ED
1 0 1 1 0 0 0 0 B0
Opis:   Ta dwubajtowa instrukcja przesyła bajt danych z komórki pamięci adresowanej przez zawartość pary rejestrów HL do komórki adresowanej parą rejestrów DE. Obie te pary rejestrów są zwiększane o 1, a para rejestrów BC (ang. byte counter - licznik bajtów) jest zmniejszana o 1. Jeśli w wyniku zmniejszenia rejestr BC osiągnie wartość 0, instrukcja zostaje zakończona. Jeśli BC jest różne od zera, licznik rozkazów PC zostaje zmniejszony o 2 i wykonanie instrukcji powtarza się. Rozpoznawane są przerwania oraz wykonane zostają dwa cykle odświeżania po każdym przesyle danych. Jeśli przed wykonaniem instrukcji para rejestrów BC zostanie ustawiona na zero, to pętla przejdzie przez pełne 64KB pamięci.

Dla BC ≠ 0:

Cykle Takty Czas
5 21 (4,4,3,5,5) 5,25μs
Dla BC = 0:
Cykle Takty Czas
4 16 (4,4,3,5) 4,00μs
Zmieniane znaczniki:   S nie jest zmieniany
Z nie jest zmieniany
H jest zerowany
P / V jest zerowany
N jest zerowany
C nie jest zmieniany
Przykład:   Jeśli para rejestrów HL zawiera 1111H, para rejestrów DE zawiera 2222H, para rejestrów BC zawiera 0003H i pamięć posiada następującą zawartość:
(1111H) zawiera 88H            (2222H) zawiera 66H
(1112H) zawiera 36H   (2223H) zawiera 59H
(1113H) zawiera 0A5H   (2224H) zawiera 0C5H

to wykonanie instrukcji LDIR spowoduje następującą zmianę zawartości rejestrów i pamięci:

HL zawiera 1114H      
DE zawiera 2225H      
BC zawiera 0000H      
(1111H) zawiera 88H            (2222H) zawiera 88H
(1112H) zawiera 36H   (2223H) zawiera 36H
(1113H) zawiera 0A5H   (2224H) zawiera 0A5H

LDD

      

LOAD DATA AND DECREMENT = Ładuj dane i zmniejsz

Operacja:   (DE) ← (HL), DE ← DE-1, HL ← HL-1, BC ← BC-1
Mnemonik:   LDD
Argumenty:   Brak
1 1 1 0 1 1 0 1 ED
1 0 1 0 1 0 0 0 A8
Opis:   Bajt danych jest przepisywany z komórki pamięci adresowanej przez zawartość pary rejestrów HL do komórki adresowanej parą rejestrów DE. Następnie zawartości  par rejestrów DE, HL oraz BC (ang. byte counter - licznik bajtów) są zmniejszane o 1.
Cykle Takty Czas
4 16 (4,4,3,5) 4,00μs
Zmieniane znaczniki:   S nie jest zmieniany
Z nie jest zmieniany
H jest zerowany
P / V jest ustawiany na 1, jeśli BC-1 ≠ 0, inaczej zerowany
N jest zerowany
C nie jest zmieniany
Przykład:   Jeśli para rejestrów HL zawiera 1111H, komórka pamięci 1111H zawiera bajt 88H, para rejestrów DE zawiera 2222H a para rejestrów BC zawiera 7H, to instrukcja LDD daje w wyniku następujące zawartości rejestrów i komórek pamięci:
HL zawiera 1110H
(1111H) zawiera 88H
DE zawiera 2221H
(2222H) zawiera 88H
BC zawiera 6H

LDDR

      

LOAD DATA, DECREMENT AND REPEAT = Ładuj dane, zmniejsz i powtarzaj

Operacja:   (DE) ← (HL), DE ← DE-1, HL ← HL-1, BC ← BC-1
Mnemonik:   LDDR
Argumenty:   Brak
1 1 1 0 1 1 0 1 ED
1 0 1 1 1 0 0 0 B8
Opis:   Ta dwubajtowa instrukcja przesyła bajt danych z komórki pamięci adresowanej przez zawartość pary rejestrów HL do komórki adresowanej parą rejestrów DE. Następnie pary rejestrów DE, HL i BC (ang. byte counter - licznik bajtów) są zmniejszane o 1. Jeśli w wyniku zmniejszenia rejestr BC osiągnie wartość 0, instrukcja zostaje zakończona. Jeśli zawartość BC jest różna od zera, licznik rozkazów PC zostaje zmniejszony o 2 i wykonanie instrukcji powtarza się. Rozpoznawane są przerwania oraz wykonane zostają dwa cykle odświeżania po każdym przesyle danych. Jeśli przed wykonaniem instrukcji para rejestrów BC zostanie ustawiona na zero, to pętla przejdzie przez pełne 64KB pamięci.

Dla BC ≠ 0:

Cykle Takty Czas
5 21 (4,4,3,5,5) 5,25μs
Dla BC = 0:
Cykle Takty Czas
4 16 (4,4,3,5) 4,00μs
Zmieniane znaczniki:   S nie jest zmieniany
Z nie jest zmieniany
H jest zerowany
P / V jest zerowany
N jest zerowany
C nie jest zmieniany
Przykład:   Jeśli para rejestrów HL zawiera 1114H, para rejestrów DE zawiera 2225H, para rejestrów BC zawiera 0003H i pamięć posiada następującą zawartość:
(1114H) zawiera 0A5H            (2225H) zawiera 0C5H
(1113H) zawiera 36H   (2224H) zawiera 59H
(1112H) zawiera 88H   (2223H) zawiera 66H

to wykonanie instrukcji LDDR spowoduje następującą zmianę zawartości rejestrów i pamięci:

HL zawiera 1111H      
DE zawiera 2222H      
BC zawiera 0000H      
(1114H) zawiera 0A5H            (2225H) zawiera 0A5H
(1113H) zawiera 36H   (2224H) zawiera 36H
(1112H) zawiera 88H   (2223H) zawiera 88H

CPI

      

COMPARE AND INCREMENT = Porównaj i zwiększ

Operacja:   A-(HL), HL ← HL+1, BC ← BC-1
Mnemonik:   CPI
Argumenty:   Brak
1 1 1 0 1 1 0 1 ED
1 0 1 0 0 0 0 1 A1
Opis:   Zawartość komórki pamięci adresowanej przez parę rejestrów HL jest porównywana z zawartością akumulatora. Powoduje to odpowiednie ustawienie znaczników. Następnie para rejestrów HL jest zwiększana o 1, a para BC (licznik bajtów) jest zmniejszana o 1.
Cykle Takty Czas
4 16 (4,4,3,5) 4,00μs
Zmieniane znaczniki:   S jest ustawiany na 1, gdy wynik ujemny. Inaczej jest zerowany.
Z jest ustawiany na 1, jeśli A = (HL); inaczej zerowany
H zostaje ustawiony na 1, jeśli wystąpiła pożyczka z bitu 4; inaczej jest zerowany
P / V jest ustawiany na 1, jeśli BC-1 nie jest równe zero; inaczej zerowany
N jest ustawiany na 1
C nie jest zmieniany
Przykład:   Jeśli para rejestrów HL zawiera 1111H, komórka pamięci 1111H zawiera 3BH, akumulator zawiera 3BH, a BC (licznik bajtów) zawiera 0001H, to wykonanie instrukcji CPI spowoduje ustawienie BC na 0000H, pary rejestrów HL na 1112H, znacznika Z w rejestrze F na 1, znacznika P / V w F na 0. Zawartość akumulatora ani komórki pamięci 1111H nie ulega zmianie.

CPIR

      

COMPARE, INCREMENT AND REPEAT = Porównaj, zwiększ i powtarzaj

Operacja:   A-(HL), HL ← HL+1, BC ← BC-1
Mnemonik:   CPIR
Argumenty:   Brak
1 1 1 0 1 1 0 1 ED
1 0 1 1 0 0 0 1 B1
Opis:   Zawartość komórki pamięci adresowanej przez parę rejestrów HL jest porównywana z zawartością akumulatora. Powoduje to odpowiednie ustawienie znaczników. Następnie para rejestrów HL jest zwiększana o 1, a para BC (licznik bajtów) jest zmniejszana o 1. Jeśli po zmniejszeniu para BC przyjmuje wartość zero lub było A = (HL), instrukcja kończy się. Jeśli BC ≠ 0 i A ≠ (HL), licznik rozkazów zostaje zmniejszony o 2 i instrukcja jest powtarzana. Rozpoznawane są przerwania oraz wykonywane dwa cykle odświeżania pamięci po każdym teście.

Jeśli przed wykonaniem instrukcji para BC zawiera zero, to instrukcja przejdzie przez wszystkie komórki pamięci (64KB) o ile nie zostanie napotkana zgodność z akumulatorem.

Dla BC ≠ 0 i A ≠ (HL):

Cykle Takty Czas
5 21 (4,4,3,5,5) 5,25μs
Dla BC = 0 lub A = (HL):
Cykle Takty Czas
4 16 (4,4,3,5) 4,00μs
Zmieniane znaczniki:   S jest ustawiany na 1, gdy wynik ujemny. Inaczej jest zerowany.
Z jest ustawiany na 1, jeśli A = (HL); inaczej zerowany
H zostaje ustawiony na 1, jeśli wystąpiła pożyczka z bitu 4; inaczej jest zerowany
P / V jest ustawiany na 1, jeśli BC-1 nie jest równe zero; inaczej zerowany
N jest ustawiany na 1
C nie jest zmieniany
Przykład:   Jeśli para rejestrów HL zawiera 1111H, akumulator zawiera 0F3H, BC zawiera 0007H, a komórki pamięci posiadają poniższą zawartość:
(1111H) zawiera 52H
(1112H) zawiera 00H
(1113H) zawiera 0F3H

to po wykonaniu CPIR zawartość pary rejestrów HL wynosi 1114H, zawartość BC jest równa 0004H, znaczniki P / V i Z w rejestrze F zostają ustawione na 1.


CPD

      

COMPARE AND DECREMENT = Porównaj i zmniejsz

Operacja:   A-(HL), HL ← HL-1, BC ← BC-1
Mnemonik:   CPD
Argumenty:   Brak
1 1 1 0 1 1 0 1 ED
1 0 1 0 1 0 0 1 A9
Opis:   Zawartość komórki pamięci adresowanej przez parę rejestrów HL jest porównywana z zawartością akumulatora. Powoduje to odpowiednie ustawienie znaczników. Następnie pary rejestrów HL i BC (licznik bajtów) są zmniejszane o 1.
Cykle Takty Czas
4 16 (4,4,3,5) 4,00μs
Zmieniane znaczniki:   S jest ustawiany na 1, gdy wynik ujemny. Inaczej jest zerowany.
Z jest ustawiany na 1, jeśli A = (HL); inaczej zerowany
H zostaje ustawiony na 1, jeśli wystąpiła pożyczka z bitu 4; inaczej jest zerowany
P / V jest ustawiany na 1, jeśli BC-1 nie jest równe zero; inaczej zerowany
N jest ustawiany na 1
C nie jest zmieniany
Przykład:   Jeśli para rejestrów HL zawiera 1111H, komórka pamięci 1111H zawiera 3BH, akumulator zawiera 3BH, a BC (licznik bajtów) zawiera 0001H, to wykonanie instrukcji CPD spowoduje ustawienie BC na 0000H, pary rejestrów HL na 1110H, znacznika Z w rejestrze F na 1, znacznika P / V w F na 0. Zawartość akumulatora ani komórki pamięci 1111H nie ulega zmianie.

CPDR

      

COMPARE, DECREMENT AND REPEAT = Porównaj, zmniejsz i powtarzaj

Operacja:   A-(HL), HL ← HL-1, BC ← BC-1
Mnemonik:   CPDR
Argumenty:   Brak
1 1 1 0 1 1 0 1 ED
1 0 1 1 1 0 0 1 B9
Opis:   Zawartość komórki pamięci adresowanej przez parę rejestrów HL jest porównywana z zawartością akumulatora. Powoduje to odpowiednie ustawienie znaczników. Następnie pary rejestrów HL i BC (licznik bajtów) są zmniejszane o 1. Jeśli po zmniejszeniu para BC przyjmuje wartość zero lub było A = (HL), instrukcja kończy się. Jeśli BC ≠ 0 i A ≠ (HL), licznik rozkazów zostaje zmniejszony o 2 i instrukcja jest powtarzana. Rozpoznawane są przerwania oraz wykonywane dwa cykle odświeżania pamięci po każdym teście.

Jeśli przed wykonaniem instrukcji para BC zawiera zero, to instrukcja przejdzie przez wszystkie komórki pamięci (64KB) o ile nie zostanie napotkana zgodność z akumulatorem.

Dla BC ≠ 0:

Cykle Takty Czas
5 21 (4,4,3,5,5) 5,25μs
Dla BC = 0:
Cykle Takty Czas
4 16 (4,4,3,5) 4,00μs
Zmieniane znaczniki:   S jest ustawiany na 1, gdy wynik ujemny. Inaczej jest zerowany.
Z jest ustawiany na 1, jeśli A = (HL); inaczej zerowany
H zostaje ustawiony na 1, jeśli wystąpiła pożyczka z bitu 4; inaczej jest zerowany
P / V jest ustawiany na 1, jeśli BC-1 nie jest równe zero; inaczej zerowany
N jest ustawiany na 1
C nie jest zmieniany
Przykład:   Jeśli para rejestrów HL zawiera 1118H, akumulator zawiera 0F3H, BC zawiera 0007H, a komórki pamięci posiadają poniższą zawartość:
(1118H) zawiera 52H
(1117H) zawiera 00H
(1116H) zawiera 0F3H

to po wykonaniu CPDR zawartość pary rejestrów HL wynosi 1115H, zawartość BC jest równa 0004H, znaczniki P / V i Z w rejestrze F zostają ustawione na 1.


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
©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: i-lo@eduinf.waw.pl

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

Informacje dodatkowe.