Serwis Edukacyjny
nauczycieli

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

©2026 mgr Jerzy Wałaszek

Opis instrukcji mikroprocesora Z80 – 2

SPIS TREŚCI

Opis instrukcji mikroprocesora Z80 – 2

Grupa instrukcji ładowania 16 bitowego

LD dd,nn

LOAD DATA = Ładuj Dane

Operacja: ddnn
Mnemonik: LD
Argumenty: dd,nn
b7 b6 b5 b4 b3 b2 b1 b0
0 0 dd 0 0 0 1  
  n   LSB
  n   MSB
Opis: 2 bajtowa liczba całkowita nn jest
ładowana do pary rejestrów dd,
gdzie dd oznacza pary rejestrów
BC
, DE, HL lub SP, a w kodzie
operacyjnym instrukcji pole dd
przyjmuje następujące wartości:
Para   dd
BC
DE
HL
SP
  00
01
10
11

Pierwszy bajt argumentu nn za
kodem instrukcji jest młodszym
bajtem liczby nn - LSB, drugi jest
bajtem starszym - MSB.
Cykle Takty Czas
2 10 (4,3,3) 2,50μs

Zmieniane znaczniki: Żaden.
Przykład: Po wykonaniu instrukcji
LD HL,5000H zawartość pary
rejestrów HL wynosi 5000H.

LD IX,nn

LOAD DATA = Ładuj Dane

Operacja: IXnn
Mnemonik: LD
Argumenty: IX,nn
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 1 1 1 0 1 DD
0 0 1 0 0 0 0 1 21
  n   LSB
  n   MSB
Opis: Liczba całkowita nn jest ładowana
do rejestru indeksowego IX.
Pierwszy bajt argumentu nn za
kodem instrukcji jest młodszym
bajtem liczby nn - LSB, drugi jest
bajtem starszym - MSB.
Cykle Takty Czas
4 14 (4,4,3,3) 3,50μs
Zmieniane znaczniki: Żaden.
Przykład: Po wykonaniu instrukcji
LD IX,45A2H
zawartość rejestru
indeksowego IX wynosi 45A2H.

LD IY,nn

LOAD DATA = Ładuj Dane

Operacja: IYnn
Mnemonik: LD
Argumenty: IY,nn
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 1 1 1 0 1 FD
0 0 1 0 0 0 0 1 21
  n   LSB
  n   MSB
Opis: Liczba całkowita nn jest ładowana
do rejestru indeksowego IY.
Pierwszy bajt argumentu nn za
kodem instrukcji jest młodszym
bajtem liczby nn - LSB, drugi jest
bajtem starszym - MSB.
Cykle Takty Czas
4 14 (4,4,3,3) 3,50μs
Zmieniane znaczniki: Żaden.
Przykład: Po wykonaniu instrukcji
LD IY,7733H
zawartość rejestru
indeksowego IY wynosi 7733H.

LD HL,(nn)

LOAD DATA = Ładuj Dane

Operacja: H ← (nn+1), L ← (nn)
Mnemonik: LD
Argumenty: HL,(nn)
b7 b6 b5 b4 b3 b2 b1 b0
0 0 1 0 1 0 1 0 2A
  n   LSB
  n   MSB
Opis: Zawartość komórki pamięci
o adresie nn jest ładowana do
dolnej połówki pary rejestrów HL
(do rejestru L), a zawartość
kolejnej komórki pamięci
o adresie nn+1 trafia do górnej
połówki pary rejestrów HL
(do rejestru H)
. Za kodem
operacyjnym instrukcji najpierw
jest umieszczony młodszy bajt
adresu nn, a następnie starszy.
Cykle Takty Czas
5 16 (4,3,3,3,3) 4,00μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli pod adresem 4545H
umieszczony jest w pamięci bajt
37H, a pod adresem 4546H
umieszczony jest bajt 0A1H, to
instrukcja LD HL,(4545H)
załaduje do pary rejestrów HL
liczbę 0A127H.

LD dd,(nn)

LOAD DATA = Ładuj Dane

Operacja: ddH ← (nn+1), ddL ← (nn)
Mnemonik: LD
Argumenty: dd,(nn)
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 0 1 1 0 1 ED
0 1 dd 1 0 1 1  
  n   LSB
  n   MSB
Opis: Zawartość komórki pamięci
o adresie nn jest ładowana do
dolnej połówki pary rejestrów dd,
a zawartość kolejnej komórki
pamięci o adresie nn+1 trafia do
górnej połówki pary rejestrów dd.
Pole dd definiuje pary rejestrów
BC, DE, HL lub SP następująco:
Para   dd
BC
DE
HL
SP
  00
01
10
11

Za kodem operacyjnym instrukcji
najpierw jest umieszczony młodszy
bajt adresu nn, a następnie starszy.
Cykle Takty Czas
6 20 (4,4,3,3,3,3) 5,00μs

Zmieniane znaczniki: Żaden.
Przykład: Jeśli pod adresem 2130H umieszczony
jest w pamięci bajt 65H, a pod adresem
2131H umieszczony jest bajt 78H, to
instrukcja LD BC,(4545H) załaduje
do pary rejestrów BC liczbę 7865H.

LD IX,(nn)

LOAD DATA = Ładuj Dane

Operacja: IXH ← (nn+1), IXL ← (nn)
Mnemonik: LD
Argumenty: IX,(nn)
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 1 1 1 0 1 DD
0 0 1 0 1 0 1 0 2A
  n   LSB
  n   MSB
Opis: Zawartość komórki pamięci
o adresie nn jest ładowana do
dolnej połówki rejestru
indeksowego IX, a zawartość
kolejnej komórki pamięci
o adresie nn+1 trafia do górnej
połówki rejestru indeksowego IX.
Za kodem operacyjnym instrukcji
najpierw jest umieszczony
młodszy bajt adresu nn,
a następnie starszy.
Cykle Takty Czas
6 20 (4,4,3,3,3,3) 5,00μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli pod adresem 6666H
umieszczony jest w pamięci bajt
92H, a pod adresem 6667H
umieszczony jest bajt 0DAH, to
instrukcja LD IX,(6666H)
załaduje do rejestru indeksowego
IX liczbę 0DA92H.

LD IY,(nn)

LOAD DATA = Ładuj Dane

Operacja: IYH ← (nn+1), IYL ← (nn)
Mnemonik: LD
Argumenty: IY,(nn)
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 1 1 1 0 1 FD
0 0 1 0 1 0 1 0 2A
  n   LSB
  n   MSB
Opis: Zawartość komórki pamięci
o adresie nn jest ładowana do
dolnej połówki rejestru
indeksowego IY, a zawartość
kolejnej komórki pamięci
o adresie nn+1 trafia do górnej
połówki rejestru indeksowego
IY. Za kodem operacyjnym
instrukcji najpierw jest
umieszczony młodszy bajt
adresu nn, a następnie starszy.
Cykle Takty Czas
6 20 (4,4,3,3,3,3) 5,00μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli pod adresem 6666H
umieszczony jest w pamięci bajt
92H, a pod adresem 6667H
umieszczony jest bajt 0DAH, to
instrukcja LD IY,(6666H)
załaduje do rejestru indeksowego
IY liczbę 0DA92H.

LD (nn),HL

LOAD DATA = Ładuj Dane

Operacja: (nn+1) ← H, (nn) ← L
Mnemonik: LD
Argumenty: (nn),HL
b7 b6 b5 b4 b3 b2 b1 b0
0 0 1 0 0 0 1 0 22
  n   LSB
  n   MSB
Opis: Zawartość dolnej połówki pary
rejestrów HL (rejestr L) jest
ładowana do komórki pamięci
o adresie nn, a zawartość górnej
połówki pary rejestrów HL
(rejestr H)
jest ładowana do
następnej komórki pamięci
o adresie nn+1. Za kodem
operacyjnym instrukcji znajduje
się najpierw młodszy bajt
adresu nn, a następnie bajt
starszy.
Cykle Takty Czas
5 16 (4,3,3,3,3) 4,00μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli zawartość pary rejestrów HL
wynosi 483AH, to po wykonaniu
instrukcji LD (0B229H),HL komórka
o adresie 0B229H zawiera 3AH,
a komórka o adresie 0B22AH zawiera
48H
.

LD (nn),dd

LOAD DATA = Ładuj Dane

Operacja: (nn+1) ← ddH, (nn) ← ddL
Mnemonik: LD
Argumenty: (nn),dd
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 0 1 1 0 1 ED
0 1 dd 0 0 1 1  
  n   LSB
  n   MSB
Opis: Młodszy bajt pary rejestrów dd
jest ładowany do komórki pamięci
o adresie nn; starszy bajt do
komórki o adresie nn+1. Pole dd
definiuje pary rejestrów BC, DE, HL
lub SP następująco:
Para   dd
BC
DE
HL
SP
  00
01
10
11

Za kodem operacyjnym instrukcji
najpierw jest umieszczony młodszy
bajt adresu nn, a następnie starszy.
Cykle Takty Czas
6 20 (4,4,3,3,3,3) 5,00μs

Zmieniane znaczniki: Żaden.
Przykład: Jeśli para rejestrów BC zawiera
liczbę 4644H, to instrukcja
LD (1000H),BC
umieści bajt 44H
w komórce pamięci pod adresem
1000H
, a bajt 46H w komórce pod
adresem 1001H.

LD (nn),IX

LOAD DATA = Ładuj Dane

Operacja: (nn+1) ← IXH, (nn) ← IXL
Mnemonik: LD
Argumenty: (nn),IX
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 1 1 1 0 1 DD
0 0 1 0 0 0 1 0 22
  n   LSB
  n   MSB
Opis: Młodszy bajt rejestru indeksowego
IX
jest ładowany do komórki pamięci
o adresie nn; starszy bajt do komórki
o adresie nn+1. Za kodem
operacyjnym instrukcji najpierw jest
umieszczony młodszy bajt adresu nn,
a następnie starszy.
Cykle Takty Czas
6 20 (4,4,3,3,3,3) 5,00μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli rejestr indeksowy IX zawiera
liczbę 5A30H, to instrukcja
LD (4392H),IX umieści bajt 30H
w komórce pamięci pod adresem 4392H,
a bajt 5AH w komórce pod adresem
4393H.

LD (nn),IY

LOAD DATA = Ładuj Dane

Operacja: (nn+1) ← IYH, (nn) ← IYL
Mnemonik: LD
Argumenty: (nn),IY
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 1 1 1 0 1 FD
0 0 1 0 0 0 1 0 22
  n   LSB
  n   MSB
Opis: Młodszy bajt rejestru indeksowego
IY
jest ładowany do komórki pamięci
o adresie nn; starszy bajt do komórki
o adresie nn+1. Za kodem
operacyjnym instrukcji najpierw jest
umieszczony młodszy bajt adresu nn,
a następnie starszy.
Cykle Takty Czas
6 20 (4,4,3,3,3,3) 5,00μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli rejestr indeksowy IY zawiera
liczbę 4174H, to instrukcja
LD (8838H),IY
umieści bajt 74H
w komórce pamięci pod adresem
8838H
, a bajt 41H w komórce pod
adresem 8839H.

LD SP,HL

LOAD DATA = Ładuj Dane

Operacja: SPHL
Mnemonik: LD
Argumenty: SP,HL
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 1 1 0 0 1 F9
Opis: Zawartość pary rejestrów HL
jest ładowana do rejestru
wskaźnika stosu SP.
Cykle Takty Czas
1 6 (6) 1,50μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli para rejestrów HL zawiera
442EH
, to instrukcja LD SP,HL
umieszcza w rejestrze wskaźnika
stosu również 442EH.

LD SP,IX

LOAD DATA = Ładuj Dane

Operacja: SPIX
Mnemonik: LD
Argumenty: SP,IX
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 1 1 1 0 1 DD
1 1 1 1 1 0 0 1 F9
Opis: 2 bajtowa zawartość rejestru
indeksowego IX jest ładowana
do rejestru wskaźnika stosu SP.
Cykle Takty Czas
2 10 (4,6) 2,50μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli rejestr indeksowy IX
zawiera 98DAH, to instrukcja
LD SP,IX
umieszcza w rejestrze
wskaźnika stosu również 98DAH.

LD SP,IY

LOAD DATA = Ładuj Dane

Operacja: SPIY
Mnemonik: LD
Argumenty: SP,IY
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 1 1 1 0 1 FD
1 1 1 1 1 0 0 1 F9
Opis: 2 bajtowa zawartość rejestru
indeksowego IY jest ładowana
do rejestru wskaźnika stosu SP.
Cykle Takty Czas
2 10 (4,6) 2,50μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli rejestr indeksowy IY zawiera
0A227H
, to instrukcja LD SP,IY
umieszcza w rejestrze wskaźnika
stosu również 0A227H.

PUSH qq

PUSH ONTO STACK = Umieść na stosie

Operacja: (SP-2) ← qqL, (SP-1) ← qqH
Mnemonik: PUSH
Argumenty: qq
b7 b6 b5 b4 b3 b2 b1 b0
1 1 qq 0 1 0 1  
Opis: Zawartość pary rejestrów qq jest
umieszczana na zewnętrznym stosie LIFO
(ang. last-in, first-out - ostatni wchodzi,
pierwszy wychodzi)
. Rejestr wskaźnika stosu
SP
przechowuje 16 bitowy adres bieżącego
szczytu stosu. Ta instrukcja najpierw
zmniejsza SP i ładuje starszy bajt pary
rejestrów qq pod adres pamięci określony
przez SP. Następnie SP jest ponownie
zmniejszany i młodszy bajt qq jest
umieszczany w pamięci pod nowym adresem
w SP. Argument qq określa parę rejestrów
BC
, DE, HL lub AF i w kodzie operacyjnym
instrukcji przyjmuje następujące wartości:
Para   qq
BC
DE
HL
AF
  00
01
10
11
Cykle Takty Czas
3 11 (5,3,3) 2,75μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli para rejestrów AF zawiera 2233H,
a wskaźnik stosu SP zawiera 1007H, to
instrukcja PUSH AF powoduje umieszczenie
22H
w komórce o adresie 1006H, 33H
w komórce o adresie 1005H i 1005H
w rejestrze wskaźnika stosu SP.

PUSH IX

PUSH ONTO STACK = Umieść na stosie

Operacja: (SP-2) ← IXL, (SP-1) ← IXH
Mnemonik: PUSH
Argumenty: IX
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 1 1 1 0 1 DD
1 1 1 0 0 1 0 1 E5
Opis: Zawartość rejestru indeksowego IX jest
umieszczana na zewnętrznym stosie LIFO
(ang. last-in, first-out - ostatni wchodzi,
pierwszy wychodzi)
. Rejestr wskaźnika stosu
SP
przechowuje 16 bitowy adres bieżącego
szczytu stosu. Instrukcja najpierw zmniejsza
SP
i ładuje starszy bajt rejestru IX pod adres
pamięci określony przez SP. Następnie SP
jest ponownie zmniejszany i młodszy bajt IX
jest umieszczany w pamięci pod nowym
adresem w SP.
Cykle Takty Czas
4 15 (4,5,3,3) 3,75μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli rejestr indeksowy IX zawiera 2233H,
a wskaźnik stosu SP zawiera 1007H, to
instrukcja PUSH IX powoduje umieszczenie
22H
w komórce o adresie 1006H,
3H
w komórce o adresie 1005H i 1005H
w rejestrze wskaźnika stosu SP.

PUSH IY

PUSH ONTO STACK = Umieść na stosie

Operacja: (SP-2) ← IYL, (SP-1) ← IYH
Mnemonik: PUSH
Argumenty: IY
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 1 1 1 0 1 FD
1 1 1 0 0 1 0 1 E5
Opis: Zawartość rejestru indeksowego IY jest
umieszczana na zewnętrznym stosie LIFO
(ang. last-in, first-out - ostatni wchodzi,
pierwszy wychodzi)
. Rejestr wskaźnika
stosu SP przechowuje 16 bitowy adres
bieżącego szczytu stosu. Instrukcja
najpierw zmniejsza SP i ładuje starszy bajt
rejestru IY pod adres pamięci określony
przez SP. Następnie SP jest ponownie
zmniejszany i młodszy bajt IY jest
umieszczany w pamięci pod nowym
adresem w SP.
Cykle Takty Czas
4 15 (4,5,3,3) 3,75μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli rejestr indeksowy IY zawiera 2233H,
a wskaźnik stosu SP zawiera 1007H, to
instrukcja PUSH IY powoduje umieszczenie
22H
w komórce o adresie 1006H, 33H
w komórce o adresie 1005H i 1005H
w rejestrze wskaźnika stosu SP.

POP qq

POP FROM STACK = Pobierz ze stosu

Operacja: qqH ← (SP+1), qqL ← (SP)
Mnemonik: POP
Argumenty: qq
b7 b6 b5 b4 b3 b2 b1 b0
1 1 qq 0 0 0 1  
Opis: Dwa szczytowe bajty zewnętrznego stosu LIFO
(ang. last-in, first-out - ostatni wchodzi,
pierwszy wychodzi)
w pamięci są pobierane do
pary rejestrów qq. Rejestr wskaźnika stosu SP
zawiera 16 bitowy adres bieżącego szczytu
stosu. Instrukcja ta najpierw ładuje do
młodszego bajtu qq bajt z pamięci spod adresu
odpowiadającego zawartości SP; następnie SP
jest zwiększany o 1 i użyty do pobrania
kolejnego, starszego bajtu qq, po czym SP jest
ponownie zwiększany o 1. Argument qq określa
parę rejestrów BC, DE, HL lub AF i w kodzie
operacyjnym instrukcji przyjmuje następujące
wartości:
Para   qq
BC
DE
HL
AF
  00
01
10
11
Cykle Takty Czas
3 10 (4,3,3) 2,50μs
Zmieniane znaczniki: Żaden - o ile nie jest pobierana para AF,
wtedy znaczniki zostają odtworzone
zgodnie z zawartością rejestru F.
Przykład: Jeśli wskaźnik stosu SP zawiera 1000H,
a w pamięci pod adresem 1000H jest bajt
55H i pod adresem 1001H jest bajt 33H,
to instrukcja POP HL umieści w parze
rejestrów HL wartość 3355H, a rejestr
wskaźnika stosu zmieni swoją zawartość
na 1002H.

POP IX

POP FROM STACK = Pobierz ze stosu

Operacja: IXH ← (SP+1), IXL ← (SP)
Mnemonik: POP
Argumenty: IX
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 1 1 1 0 1 DD
1 1 1 0 0 0 0 1 E1
Opis: Dwa szczytowe bajty zewnętrznego stosu
LIFO (ang. last-in, first-out - ostatni wchodzi,
pierwszy wychodzi)
w pamięci są pobierane
do rejestru indeksowego IX. Rejestr
wskaźnika stosu SP zawiera 16 bitowy adres
bieżącego szczytu stosu. Instrukcja ta
najpierw ładuje do młodszego bajtu IX bajt
z pamięci spod adresu odpowiadającego
zawartości SP; następnie SP jest zwiększany
o 1 i użyty do pobrania kolejnego, starszego
bajtu IX, po czym SP jest ponownie
zwiększany o 1.
Cykle Takty Czas
4 14 (4,4,3,3) 3,50μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli wskaźnik stosu SP zawiera 1000H,
a w pamięci pod adresem 1000H jest bajt 55H
i pod adresem 1001H jest bajt 33H, to instrukcja
POP IX
umieści w rejestrze indeksowym IX
wartość 3355H, a rejestr wskaźnika stosu zmieni
swoją zawartość na 1002H.

POP IY

POP FROM STACK = Pobierz ze stosu

Operacja: IYH ← (SP+1), IYL ← (SP)
Mnemonik: POP
Argumenty: IY
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 1 1 1 0 1 DD
1 1 1 1 1 1 0 1 FD
Opis: Dwa szczytowe bajty zewnętrznego stosu
LIFO (ang. last-in, first-out - ostatni
wchodzi, pierwszy wychodzi)
w pamięci
są pobierane do rejestru indeksowego IY.
Rejestr wskaźnika stosu SP zawiera
16 bitowy adres bieżącego szczytu stosu.
Instrukcja ta najpierw ładuje do młodszego
bajtu IY bajt z pamięci spod adresu
odpowiadającego zawartości SP; następnie
SP
jest zwiększany o 1 i użyty do pobrania
kolejnego, starszego bajtu IY, po czym SP
jest ponownie zwiększany o 1.
Cykle Takty Czas
4 14 (4,4,3,3) 3,50μs
Zmieniane znaczniki: Żaden.
Przykład: Jeśli wskaźnik stosu SP zawiera 1000H,
a w pamięci pod adresem 1000H jest bajt
55H
i pod adresem 1001H jest bajt 33H, to
instrukcja POP IY umieści w rejestrze
indeksowym IY wartość 3355H, a rejestr
wskaźnika stosu zmieni swoją zawartość
na 1002H.

do podrozdziału  do strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2026 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.