Zestaw instrukcji mikroprocesora Z80


Grupa instrukcji ładowania 16 bitowego

 

LD dd,nn

      

LOAD DATA = Ładuj Dane

Operacja:   dd ← nn
Mnemonik:   LD
Argumenty:   dd,nn
 
0 0 d d 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:   IX ← nn
Mnemonik:   LD
Argumenty:   IX,nn
 
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:   IY ← nn
Mnemonik:   LD
Argumenty:   IY,nn
 
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)
 
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)
 
1 1 1 0 1 1 0 1 ED
0 1 d d 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)
 
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)
 
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
 
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 (rejestru 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
 
1 1 1 0 1 1 0 1 ED
0 1 d d 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
 
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
 
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:   SP ← HL
Mnemonik:   LD
Argumenty:   SP,HL
 
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:   SP ← IX
Mnemonik:   LD
Argumenty:   SP,IX
 
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:   SP ← IY
Mnemonik:   LD
Argumenty:   SP,IY
 
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
 
1 1 q q 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
 
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, 33H 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
 
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
 
1 1 q q 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
 
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
 
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.

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

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

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe