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 – 14

SPIS TREŚCI

Opis instrukcji mikroprocesora Z80 – 14

Grupa instrukcji skoków

JP nn

JUMP = Skocz

Operacja: PCnn
Mnemonik: JP
Argumenty nn
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 0 0 0 1 1 C3
← n → LSB
← n → MSB

Uwaga: pierwszy argument za kodem
instrukcji jest młodszym bajtem
adresu nn, drugi jest starszym
bajtem nn.

Opis: Argument nn jest ładowany do rejestru
licznika rozkazów PC (Program Counter).
Następna instrukcja do wykonania
zostanie pobrana spod adresu nn.
Cykle Takty Czas
3 10 (4,3,3) 2,50μs
Zmieniane znaczniki: Żaden

JP (HL)

JUMP = Skocz

Operacja: PCHL
Mnemonik: JP
Argumenty (HL)
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 0 1 0 0 1 E9
Opis: Licznik rozkazów (rejestr PC)
jest ładowany zawartością pary
rejestrów HL. Następna
instrukcja zostanie pobrana
spod adresu wskazywanego
przez nową zawartość PC.
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki: Żaden
Przykład: Jeśli zawartość licznika
rozkazów PC jest równa 1000H,
a zawartość pary rejestrów HL
wynosi 4800H, to po wykonaniu
instrukcji JP (HL) zawartość
licznika rozkazów zmieni się na
4800H
.

JP (IX)

JUMP = Skocz

Operacja: PCIX
Mnemonik: JP
Argumenty (IX)
b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 1 1 1 0 1 DD
1 1 1 0 1 0 0 1 E9
Opis: Licznik rozkazów (rejestr PC)
jest ładowany zawartością
rejestru indeksowego IX.
Następna instrukcja zostanie
pobrana spod adresu
wskazywanego przez nową
zawartość PC.
Cykle Takty Czas
2 8 (4,4) 2,00μs
Zmieniane znaczniki: Żaden
Przykład: Jeśli zawartość licznika
rozkazów PC jest równa 1000H,
a zawartość rejestru
indeksowego IX wynosi 4800H,
to po wykonaniu instrukcji
JP (IX) zawartość licznika
rozkazów zmieni się na 4800H.

JP (IY)

JUMP = Skocz

Operacja: PCIY
Mnemonik: JP
Argumenty (IY)
b7 b6 b5 b4 b3 b2 b1 b0
1 1 1 1 1 1 0 1 FD
1 1 1 0 1 0 0 1 E9
Opis: Licznik rozkazów (rejestr PC)
jest ładowany zawartością
rejestru indeksowego IY.
Następna instrukcja zostanie
pobrana spod adresu
wskazywanego przez nową
zawartość PC.
Cykle Takty Czas
2 8 (4,4) 2,00μs
Zmieniane znaczniki: Żaden
Przykład: Jeśli zawartość licznika
rozkazów PC jest równa
1000H, a zawartość rejestru
indeksowego IY wynosi
4800H, to po wykonaniu
instrukcji JP (IY)
zawartość licznika rozkazów
zmieni się na 4800H.

JP cc,nn

JUMP = Skocz warunkowo

Operacja: Jeśli cc jest spełnione, to PCnn
Mnemonik: JP
Argumenty cc,nn
b7 b6 b5 b4 b3 b2 b1 b0
1 1 ← cc → 0 1 0  
← n → LSB
← n → MSB

Uwaga: pierwszy argument za kodem|
instrukcji jest młodszym bajtem adresu nn,
drugi jest starszym bajtem nn.

Opis: Jeśli warunek cc jest prawdziwy, to
instrukcja ładuje argument nn do rejestru
licznika rozkazów PC (ang. Program Counter)
i program wykonuje się dalej począwszy od
instrukcji pod adresem nn. Jeśli warunek cc
jest fałszywy, to licznik programu PC jest
zwiększany w normalny sposób i program
kontynuuje się od kolejnej instrukcji
w programie. Warunek cc jest programowany
jako jeden z ośmiu stanów, które
odpowiadają bitom w rejestrze znaczników F.
W kodzie instrukcji stany te są
przedstawiane następująco:
cc   Warunek Znacznik
000
001
010
011
100
101
110
111
  NZ - nie zero
Z - zero
NC - brak przeniesienia
C - jest przeniesienie
PO - brak parzystości
PE - parzystość
P - znak dodatni
M 0 znak ujemny
Z
Z
C
C
P/V
P/V
S
S
Cykle Takty Czas
3 10 (4,3,3) 2,50μs
Zmieniane znaczniki: Żaden
Przykład Jeśli znacznik przeniesienia C w rejestrze F
jest ustawiony na 1, to wykonanie instrukcji
JP C,1520H spowoduje, że kolejną
instrukcją wykonywaną w programie będzie
instrukcja spod adresu 1520H.

JR e

JUMP RELATIVE = Skocz względnie

Operacja: PCPC + e
Mnemonik: JR
Argumenty e
b7 b6 b5 b4 b3 b2 b1 b0
0 0 0 1 1 0 0 0 18
← e-2 →  
Opis: Instrukcja udostępnia bezwarunkowe
odgałęzienia do innych segmentów
programu. Wartość przesunięcia e
jest dodawana do Licznika Rozkazów
(PC = Program Counter) i następna
instrukcja będzie wykonana od tego
wynikowego adresu. Skok jest
mierzony od adresu kodu
operacyjnego instrukcji i posiada
zakres od -126 do +129 bajtów.
Asembler automatycznie dopasowuje
e dla dwukrotnie zwiększonego PC.
Cykle Takty Czas
3 12 (4,3,5) 3,00μs
Zmieniane znaczniki: Żaden
Przykład Aby skoczyć naprzód o pięć komórek
spod adresu 480H, używane jest
polecenie asemblera JR $+5.
Wynikowy kod i końcowa wartość PC
są pokazane poniżej:
Adres   Instrukcja
480
481
482
483
484
485
486
...
  18H      ; JR ...
03H      ; $+5
-
-
-
-            ;← PC po skoku
-
-

JR C,e

JUMP RELATIVE = Skocz względnie

Operacja: Jeśli C=0, to kontynuuj
Jeśli C=1, to PCPC + e
Mnemonik: JR
Argumenty NC,e
b7 b6 b5 b4 b3 b2 b1 b0
0 0 1 1 1 0 0 0 38
← e-2 →  
Opis: Instrukcja udostępnia warunkowe odgałęzienia do
innych segmentów programu w zależności od
wyniku testu na znaczniku przeniesienia C. Jeśli
znacznik ten ma stan 1, to wartość przesunięcia
e
jest dodawana do Licznika Rozkazów
(PC = Program Counter)
i następna instrukcja
będzie wykonana od tego wynikowego adresu.
Skok jest mierzony od adresu kodu operacyjnego
instrukcji i posiada zakres od -126 do +129 bajtów.
Asembler automatycznie dopasowuje e dla
dwukrotnie zwiększonego PC.

Jeśli znacznik jest równy 0, to następna instrukcja
do wykonania zostanie pobrana z kolejnego adresu
za tą instrukcją.
Warunek spełniony   Warunek niespełniony
Cykle Takty Czas   Cykle Takty Czas
3 12 (4,3,5) 3,00μs   2 7 (4,3) 1,75μs

Zmieniane znaczniki: Żaden
Przykład Ustawiony jest znacznik przeniesienia C i trzeba
skoczyć wstecz o cztery komórki od adresu 480H.
Instrukcja asemblera ma postać JR C,$-4.
Wynikowy kod oraz końcowa wartość rejestru PC
są pokazane poniżej:
Adres   Instrukcja
47C
47D
47E
47F
480
481
...
  -          ;← PC po skoku
-
-
-
38H      ; JR C, ...
0FAH    ; $-4, 0FAH = -6 w kodzie U2
-

JR NC,e

JUMP RELATIVE = Skocz względnie

Operacja: Jeśli C=1, to kontynuuj
Jeśli C=0, to PCPC + e
Mnemonik: JR
Argumenty NC,e
b7 b6 b5 b4 b3 b2 b1 b0
0 0 1 1 1 0 0 0 38
← e-2 →  
Opis: Instrukcja udostępnia warunkowe odgałęzienia do
innych segmentów programu w zależności od wyniku
testu na znaczniku przeniesienia C. Jeśli znacznik
ten ma stan 0, to wartość przesunięcia e jest
dodawana do Licznika Rozkazów
(PC = Program Counter)
i następna instrukcja będzie
wykonana od tego wynikowego adresu. Skok jest
mierzony od adresu kodu operacyjnego instrukcji
i posiada zakres od -126 do +129 bajtów. Asembler
automatycznie dopasowuje e dla dwukrotnie
zwiększonego PC.

Jeśli znacznik jest równy 1, to następna instrukcja
do wykonania zostanie pobrana z kolejnego adresu
za tą instrukcją.
Warunek spełniony   Warunek niespełniony
Cykle Takty Czas   Cykle Takty Czas
3 12 (4,3,5) 3,00μs   2 7 (4,3) 1,75μs

Zmieniane znaczniki: Żaden
Przykład Znacznik przeniesienia C jest wyzerowany i trzeba
powtórzyć instrukcję skoku. Instrukcja asemblera
ma postać JR NC,$. Wynikowy kod oraz końcowa
wartość rejestru PC są pokazane poniżej:
Adres   Instrukcja
480
481
...
  30     ;← PC po skoku
00
-

JR Z,e

JUMP RELATIVE = Skocz względnie

Operacja: Jeśli Z=0, to kontynuuj
Jeśli Z=1, to PCPC + e
Mnemonik: JR
Argumenty Z,e
b7 b6 b5 b4 b3 b2 b1 b0
0 0 1 0 1 0 0 0 28
← e-2 →  
Opis: Instrukcja udostępnia warunkowe odgałęzienia do
innych segmentów programu w zależności od wyniku
testu na znaczniku zera Z. Jeśli znacznik ten ma
stan 1, to wartość przesunięcia e jest dodawana do
Licznika Rozkazów (PC = Program Counter)
i następna instrukcja będzie wykonana od tego
wynikowego adresu. Skok jest mierzony od adresu
kodu operacyjnego instrukcji i posiada zakres
od -126 do +129 bajtów. Asembler automatycznie
dopasowuje e dla dwukrotnie zwiększonego PC.

Jeśli znacznik jest równy 0, to następna instrukcja
do wykonania zostanie pobrana z kolejnego adresu
za tą instrukcją.
Warunek spełniony   Warunek niespełniony
Cykle Takty Czas   Cykle Takty Czas
3 12 (4,3,5) 3,00μs   2 7 (4,3) 1,75μs

Zmieniane znaczniki: Żaden
Przykład Znacznik zera Z jest ustawiony na 1 i trzeba skoczyć
naprzód o pięć komórek od adresu 300H. Instrukcja
asemblera ma postać JR Z,$+5. Wynikowy kod oraz
końcowa wartość rejestru PC są pokazane poniżej:
Adres   Instrukcja
300
301
302
303
304
305
306
...
  28H      ; JR Z
03H      ; $+5
-
-
-
-            ;← PC po skoku
-
-

JR NZ,e

JUMP RELATIVE = Skocz względnie

Operacja: Jeśli Z=1, to kontynuuj
Jeśli Z=0, to PCPC + e
Mnemonik: JR
Argumenty NZ,e
b7 b6 b5 b4 b3 b2 b1 b0
0 0 1 0 0 0 0 0 20
← e-2 →  
Opis: Instrukcja udostępnia warunkowe odgałęzienia do
innych segmentów programu w zależności od
wyniku testu na znaczniku zera Z. Jeśli znacznik
ten ma stan 0, to wartość przesunięcia e jest
dodawana do Licznika Rozkazów
(PC = Program Counter) i następna instrukcja
będzie wykonana od tego wynikowego adresu.
Skok jest mierzony od adresu kodu operacyjnego
instrukcji i posiada zakres od -126 do +129 bajtów.
Asembler automatycznie dopasowuje e dla
dwukrotnie zwiększonego PC.

Jeśli znacznik jest równy 1, to następna instrukcja
do wykonania zostanie pobrana z kolejnego adresu
za tą instrukcją.
Warunek spełniony   Warunek niespełniony
Cykle Takty Czas   Cykle Takty Czas
3 12 (4,3,5) 3,00μs   2 7 (4,3) 1,75μs

Zmieniane znaczniki: Żaden
Przykład Znacznik zera Z jest wyzerowany i trzeba skoczyć
wstecz o cztery komórki od adresu 300H. Instrukcja
asemblera ma postać JR NZ,$-4. Wynikowy kod
oraz końcowa wartość rejestru PC są pokazane
poniżej:
Adres   Instrukcja
2FC
2FD
2FE
2FF
300
301
...
  -          ;← PC po skoku
-
-
-
20H     ; JR NZ
0FAH   ; $-4, OFAH=-6 w kodzie U2
-

DJNZ e

DECREMENT AND JUMP ON NON ZERO = Zmniejsz i skocz przy nie-zerze

Operacja: BB - 1
Jeśli B = 0, to kontynuuj
Jeśli B 0, to PCPC + e
Mnemonik: DJNZ
Argumenty e
b7 b6 b5 b4 b3 b2 b1 b0
0 0 0 1 0 0 0 0 10
← e-2 →  
Opis: Instrukcja ta jest podobna do instrukcji skoków warunkowych z tą różnicą,
iż warunek rozgałęzienia jest oparty na zawartości rejestru B. Rejestr B jest
najpierw zmniejszany o 1, a jeśli jego wartość jest wciąż różna od zera, to
przesunięcie e zostaje dodane do zawartości rejestru licznika rozkazów PC.
Następną wykonywaną instrukcją będzie instrukcja znajdująca się pod
adresem wskazywanym przez nową zawartość PC. Skok jest mierzony od
adresu kodu operacyjnego instrukcji i posiada zakres od -128 do +129 bajtów.
Asembler automatycznie modyfikuje tę wartość dla zwiększonego o 2 PC.

Jeśli wynikiem zmniejszenia rejestru B jest zero, to zostanie wykonana kolejna
instrukcja za instrukcją DJNZ w programie.
B 0   B = 0
Cykle Takty Czas   Cykle Takty Czas
3 13 (5,3,5) 3,25μs   2 8 (5,3) 2,00μs

Zmieniane znaczniki: Żaden
Przykład Do demonstracji zastosowania instrukcji DJNZ używana jest typowa procedura,
która przemieszcza wiersz z bufora wejściowego (INBUF) do bufora wyjściowego
(OUTBUF). Bajty są przesuwane aż do napotkania CR (ang. carriage return - znak
końca wiersza o kodzie DH)
lub do przesłania 80H bajtów.

      LD   B,80H       ; ustaw licznik
      LD   HL,INBUF    ; ustaw wskaźniki
      LD   DE,OUTBUF

LOOP: LD   A,(HL)      ; pobierz następny bajt z bufora
                       ; wejściowego

      LD   (DE),A      ; umieść go w buforze wyjściowym
      CP   0DH         ; czy jest to CR?
      JR   Z,DONE      ; jeśli tak, to zakończ
      INC  HL          ; przesuń wskaźniki na następne bajty
      INC  DE
      DJNZ LOOP        ; kontynuuj w pętli aż do przesłania
                       ; 80H bajtów lub napotkania CR

DONE:


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.