Zestaw instrukcji mikroprocesora Z80


Opis instrukcji mikroprocesora Z80

Dla każdej instrukcji jest podany czas jej wykonania (E.T. - ang. Execution Time) w mikrosekundach przy założeniu, że mikroprocesor jest taktowany zegarem 4MHz. Podana jest całkowita liczba cykli maszynowych (ang. Machine Cycles) z całkowitymi taktami zegarowymi (ang. Clock States). Również oznaczono liczbę taktów dla każdego cyklu maszynowego. Na przykład:

 

Cykle: 2,  Takty: 7 (4,3),  Czas: 1,75μs

 

oznacza, że instrukcja ta składa się z 2 cykli maszynowych. Pierwszy cykl zawiera 4 takty zegara. Drugi cykl zawiera 3 takty zegara. W sumie cała instrukcja zajmuje 7 taktów zegarowych. Czas wykonania instrukcji wynosi 1,75μs.

Dla każdej instrukcji podany jest format rejestrów z najbardziej znaczącym bitem po stronie lewej, a z najmniej znaczącym po stronie prawej.

 

Grupa instrukcji ładowania 8 bitowego

 

LD r,r'

      

LOAD DATA = Ładuj Dane

Operacja:   r ← r'
Mnemonik:   LD
Argumenty:   r,r'
 
0 1 r r'
Opis:   Zawartość dowolnego rejestru r' jest ładowana do rejestru r. Oba rejestry r i r' odnoszą się do rejestrów 8 bitowych A, B, C, D, E, H lub L. W polu instrukcji są one oznaczane w sposób następujący:
Rejestr   r
A
B
C
D
E
H
L
  111
000
001
010
011
100
101
   
Cykle Takty Czas
1 4 1,0μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr H zawiera liczbę 8AH, a rejestr E zawiera 10H, instrukcja LD H,E powoduje, że w obu rejestrach pojawi się zawartość 10H.

 


 

LD r,n

      

LOAD DATA = Ładuj Dane

Operacja:   r ← n
Mnemonik:   LD
Argumenty:   r,n
 
0 0 r 1 1 0
  n  
Opis:   Ośmiobitowa liczba całkowita n zostaje załadowana do dowolnego rejestru r, gdzie r oznacza jeden z rejestrów 8 bitowych A, B, C, D, E, H lub L, które w kodzie instrukcji oznaczane są następująco:
Rejestr   r
A
B
C
D
E
H
L
  111
000
001
010
011
100
101
   
Cykle Takty Czas
2 7 (4,3) 1,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Po wykonaniu LD E,0A5H zawartość rejestru E jest równa 0A5H.

 


 

LD r,(HL)

      

LOAD DATA = Ładuj Dane

Operacja:   r ← (HL)
Mnemonik:   LD
Argumenty:   r,(HL)
 
0 1 r 1 1 0
Opis:   8 bitowa zawartość komórki pamięci wskazywanej przez (HL) jest ładowana do rejestru r, gdzie r oznacza jeden z rejestrów 8 bitowych A, B, C, D, E, H lub L. Rejestry te są następująco kodowane w polu r instrukcji:
Rejestr   r
A
B
C
D
E
H
L
  111
000
001
010
011
100
101
   
Cykle Takty Czas
2 7 (4,3) 1,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli para rejestrów HL zawiera liczbę 75A1H, a komórka pamięci a adresie 75A1H zawiera bajt 58H, to wykonanie LD C,(HL) umieści w rejestrze C liczbę 58H.

 


 

LD r,(IX+d)

      

LOAD DATA = Ładuj Dane

Operacja:   r ← (IX+d)
Mnemonik:   LD
Argumenty:   r,(IX+d)
 
1 1 0 1 1 1 0 1 DD
0 1 r 1 1 0  
  d    
Opis:   Argument (IX+d) (zawartość komórki pamięci wskazywanej przez adres będący sumą zawartości rejestru indeksowego IX oraz przesunięcia d - liczby 8 bitowej w kodzie U2) jest ładowany do rejestru r, gdzie r oznacza jeden z 8 bitowych rejestrów ogólnego przeznaczenia - A, B, C, D, E, H lub L - i jest definiowany w polu r kodu instrukcji następująco:
Rejestr   r
A
B
C
D
E
H
L
  111
000
001
010
011
100
101
   
Cykle Takty Czas
5 19 (4,4,3,5,3) 4,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr indeksowy IX zawiera liczbę 25AFH, to instrukcja LD B,(IX+19H) powoduje obliczenie sumy 25AFH+19H, która wskazuje na komórkę pamięci o adresie 25C8H. Jeśli pod tym adresem umieszczony jest bajt 39H, to w efekcie wykonania tej instrukcji w rejestrze B znajdzie się również liczba 39H.

 


 

LD r,(IY+d)

      

LOAD DATA = Ładuj Dane

Operacja:   r ← (IY+d)
Mnemonik:   LD
Argumenty:   r,(IY+d)
 
1 1 1 1 1 1 0 1 FD
0 1 r 1 1 0  
  d    
Opis:   Argument (IY+d) (zawartość komórki pamięci wskazywanej przez adres będący sumą zawartości rejestru indeksowego IY oraz przesunięcia d - liczby 8 bitowej w kodzie U2) jest ładowany do rejestru r, gdzie r oznacza jeden z 8 bitowych rejestrów ogólnego przeznaczenia - A, B, C, D, E, H lub L - i jest definiowany w polu r kodu instrukcji następująco:
Rejestr   r
A
B
C
D
E
H
L
  111
000
001
010
011
100
101
   
Cykle Takty Czas
5 19 (4,4,3,5,3) 4,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr indeksowy IY zawiera liczbę 25AFH, to instrukcja LD B,(IY+19H) powoduje obliczenie sumy 25AFH+19H, która wskazuje na komórkę pamięci o adresie 25C8H. Jeśli pod tym adresem umieszczony jest bajt 39H, to w efekcie wykonania tej instrukcji w rejestrze B znajdzie się również liczba 39H.

 


 

LD (HL),r

      

LOAD DATA = Ładuj Dane

Operacja:   (HL) ← r
Mnemonik:   LD
Argumenty:   (HL),r
 
0 1 1 1 0 r
Opis:   Zawartość rejestru r jest ładowana do komórki pamięci, której adres zawiera para rejestrów HL. Symbol r oznacza jeden z rejestrów A, B, C, D, E, H lub L. W kodzie instrukcji pole r przyjmuje następujące wartości:
Rejestr   r
A
B
C
D
E
H
L
  111
000
001
010
011
100
101
   
Cykle Takty Czas
2 7 (4,3) 1,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli zawartość pary rejestrów HL wskazuje komórkę pamięci 2146H, a rejestr B zawiera bajt 29H, to po wykonaniu instrukcji LD (HL),B w komórce o adresie 2146H również znajdzie się 29H.

 


 

LD (IX+d),r

      

LOAD DATA = Ładuj Dane

Operacja:   (IX+d) ← r
Mnemonik:   LD
Argumenty:   (IX+d),r
 
1 1 0 1 1 1 0 1 DD
0 1 1 1 0 r  
  d    
Opis:   Zawartość rejestru r jest ładowana do komórki pamięci, której adres jest określony przez sumę zawartości rejestru indeksowego IX oraz przesunięcia d w kodzie U2. Symbol r oznacza jeden z rejestrów A, B, C, D, E, H lub L. W kodzie instrukcji pole r przyjmuje następujące wartości:
Rejestr   r
A
B
C
D
E
H
L
  111
000
001
010
011
100
101
   
Cykle Takty Czas
5 19 (4,4,3,5,3) 4,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr C zawiera bajt 1CH, a rejestr indeksowy IX zawiera 3100H, to instrukcja LD (IX+6H),C obliczy sumę 3100H+6H i umieści w komórce pamięci o adresie 3106H liczbę 1CH.

 


 

LD (IY+d),r

      

LOAD DATA = Ładuj Dane

Operacja:   (IY+d) ← r
Mnemonik:   LD
Argumenty:   (IY+d),r
 
1 1 1 1 1 1 0 1 FD
0 1 1 1 0 r  
  d    
Opis:   Zawartość rejestru r jest ładowana do komórki pamięci, której adres jest określony przez sumę zawartości rejestru indeksowego IY oraz przesunięcia d w kodzie U2. Symbol r oznacza jeden z rejestrów A, B, C, D, E, H lub L. W kodzie instrukcji pole r przyjmuje następujące wartości:
Rejestr   r
A
B
C
D
E
H
L
  111
000
001
010
011
100
101
   
Cykle Takty Czas
5 19 (4,4,3,5,3) 4,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr C zawiera bajt 48H, a rejestr indeksowy IY zawiera 2A11H, to instrukcja LD (IY+4H),C obliczy sumę 2A11H+4H i umieści w komórce pamięci o adresie 2A15H liczbę 48H.

 


 

LD (HL),n

      

LOAD DATA = Ładuj Dane

Operacja:   (HL) ← n
Mnemonik:   LD
Argumenty:   (HL),n
 
0 0 1 1 0 1 1 0 36
  n    
Opis:   Liczba całkowita n zostaje umieszczona w komórce pamięci, której adres zawiera para rejestrów HL.
   
Cykle Takty Czas
3 10 (4,3,3) 2,50μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli para rejestrów HL zawiera 4444H, to instrukcja LD (HL),28H powoduje umieszczenie w komórce pamięci o adresie 4444H liczby 28H.

 


 

LD (IX+d),n

      

LOAD DATA = Ładuj Dane

Operacja:   (IX+d) ← n
Mnemonik:   LD
Argumenty:   (IX+d),n
 
1 1 0 1 1 1 0 1 DD
0 0 1 1 0 1 1 0 36
  d    
  n    
Opis:   Liczba całkowita n zostaje umieszczona w komórce pamięci, której adres określa suma zawartości rejestru indeksowego IX oraz przesunięcia d w kodzie U2..
   
Cykle Takty Czas
5 19 (4,4,3,5,3) 4,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr indeksowy IX zawiera liczbę 212AH, to instrukcja LD (IX+5H),5AH umieści bajt 5AH w komórce pamięci o adresie 212AH+5H = 212AFH.

 


 

LD (IY+d),n

      

LOAD DATA = Ładuj Dane

Operacja:   (IY+d) ← n
Mnemonik:   LD
Argumenty:   (IY+d),n
 
1 1 1 1 1 1 0 1 FD
0 0 1 1 0 1 1 0 36
  d    
  n    
Opis:   Liczba całkowita n zostaje umieszczona w komórce pamięci, której adres określa suma zawartości rejestru indeksowego IY oraz przesunięcia d w kodzie U2..
   
Cykle Takty Czas
5 19 (4,4,3,5,3) 4,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli rejestr indeksowy IY zawiera liczbę 0A940H, to instrukcja LD (IY+10H),97H umieści bajt 97H w komórce pamięci o adresie 0A940H+10H = 0A950H.

 


 

LD A,(BC)

      

LOAD DATA = Ładuj Dane

Operacja:   A ← (BC)
Mnemonik:   LD
Argumenty:   A,(BC)
 
0 0 0 0 1 0 1 0 0A
Opis:   Zawartość komórki pamięci, której adres przechowuje para rejestrów BC, jest ładowana do akumulatora.
   
Cykle Takty Czas
2 7 (4,3) 1,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli para rejestrów BC przechowuje liczbę 4747H, a w komórce pamięci o adresie 4747H znajduje się bajt 12H, to instrukcja LD A,(BC) umieści bajt 12H w rejestrze A.

 


 

LD A,(DE)

      

LOAD DATA = Ładuj Dane

Operacja:   A ← (DE)
Mnemonik:   LD
Argumenty:   A,(DE)
 
0 0 0 1 1 0 1 0 1A
Opis:   Zawartość komórki pamięci, której adres przechowuje para rejestrów DE, jest ładowana do akumulatora.
   
Cykle Takty Czas
2 7 (4,3) 1,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli para rejestrów BC przechowuje liczbę 30A2H, a w komórce pamięci o adresie 30A2H znajduje się bajt 22H, to instrukcja LD A,(DE) umieści bajt 22H w rejestrze A.

 


 

LD A,(nn)

      

LOAD DATA = Ładuj Dane

Operacja:   A ← (nn)
Mnemonik:   LD
Argumenty:   A,(nn)
 
0 0 1 1 1 0 1 0 3A
  n   LSB
  n   MSB
Opis:   Zawartość komórki pamięci, której adres jest określony przez argument nn, jest ładowana do akumulatora. Pierwszy bajt argumentu nn za kodem operacyjnym instrukcji jest młodszym bajtem adresu, drugi jest starszym bajtem - kolejność LSB-MSB.
   
Cykle Takty Czas
4 13 (4,3,3,3) 3,25μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli nn jest liczbą 8832H, a zawartość komórki pamięci o adresie 8832H wynosi 04H, to instrukcja LD A,(8832H) umieści w rejestrze A bajt 04H.

 


 

LD (BC),A

      

LOAD DATA = Ładuj Dane

Operacja:   (BC) ← A
Mnemonik:   LD
Argumenty:   (BC),A
 
0 0 0 0 0 0 1 0 02
Opis:   Zawartość akumulatora jest umieszczana w komórce pamięci, której adres przechowuje para rejestrów BC.
   
Cykle Takty Czas
2 7 (4,3) 1,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli akumulator zawiera 7AH, a para rejestrów BC zawiera 1212H, to instrukcja LD (BC),A umieści w komórce pamięci o adresie 1212H liczbę 7AH.

 


 

LD (DE),A

      

LOAD DATA = Ładuj Dane

Operacja:   (DE) ← A
Mnemonik:   LD
Argumenty:   (DE),A
 
0 0 0 1 0 0 1 0 12
Opis:   Zawartość akumulatora jest umieszczana w komórce pamięci, której adres przechowuje para rejestrów DE.
   
Cykle Takty Czas
2 7 (4,3) 1,75μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli akumulator zawiera 0A0H, a para rejestrów DE zawiera 1128H, to instrukcja LD (DE),A umieści w komórce pamięci o adresie 1128H liczbę 0A0H.

 


 

LD (nn),A

      

LOAD DATA = Ładuj Dane

Operacja:   (nn) ← A
Mnemonik:   LD
Argumenty:   (nn),A
 
0 0 1 1 0 0 1 0 32
  n   LSB
  n   MSB
Opis:   Zawartość akumulatora jest umieszczana w komórce pamięci, której adres podaje argument nn. Za kodem instrukcji jest umieszczany kolejno młodszy i starszy bajt nn - LSB-MSB.
   
Cykle Takty Czas
4 13 (4,3,3,3) 3,25μs
Zmieniane znaczniki:   Żaden.
Przykład:   Jeśli akumulator zawiera bajt 0D7H, to instrukcja LD (3141),A umieści w komórce pamięci o adresie 3141H liczbę 0D7H.

 


 

LD A,I

      

LOAD DATA = Ładuj Dane

Operacja:   A ← I
Mnemonik:   LD
Argumenty:   A,I
 
1 1 1 0 1 1 0 1 ED
0 1 0 1 0 1 1 1 57
Opis:   Zawartość rejestru wektora przerwań I jest ładowana do akumulatora.
   
Cykle Takty Czas
2 9 (4,5) 2,25μs
Zmieniane znaczniki:   S zostaje ustawiony na 1, jeśli rejestr I przechowuje wartość ujemną. Inaczej S jest zerowany.
Z zostaje ustawiony na 1, jeśli rejestr I przechowuje zero, inaczej jest zerowany.
H jest zerowany.
P/V zawiera zawartość IFF2 - przerzutnika zezwolenia na przerwania maskowane
N jest zerowany
C nie ulega zmianie.
Jeśli w czasie wykonywania tej instrukcji pojawi się przerwanie, to znacznik parzystości P/V zawiera zero.

 


 

LD A,R

      

LOAD DATA = Ładuj Dane

Operacja:   A ← R
Mnemonik:   LD
Argumenty:   A,R
 
1 1 1 0 1 1 0 1 ED
0 1 0 1 1 1 1 1 5F
Opis:   Zawartość rejestru odświeżania pamięci R jest ładowana do akumulatora.
   
Cykle Takty Czas
2 9 (4,5) 2,25μs
Zmieniane znaczniki:   S zostaje ustawiony na 1, jeśli rejestr R przechowuje wartość ujemną, inaczej jest zerowany.
Z zostaje ustawiony na 1, jeśli rejestr R przechowuje zero, inaczej jest zerowany.
H jest zerowany.
P/V zawiera zawartość IFF2 - przerzutnika zezwolenia na przerwania maskowane
N jest zerowany
C nie ulega zmianie.
Jeśli w czasie wykonywania tej instrukcji pojawi się przerwanie, to znacznik parzystości P/V zawiera zero.

 


 

LD I,A

      

LOAD DATA = Ładuj Dane

Operacja:   I ← A
Mnemonik:   LD
Argumenty:   I,A
 
1 1 1 0 1 1 0 1 ED
0 1 0 0 0 1 1 1 47
Opis:   Zawartość akumulatora zostaje załadowana do rejestru wektora przerwań I.
   
Cykle Takty Czas
2 9 (4,5) 2,25μs
Zmieniane znaczniki:   Żaden.

 


 

LD R,A

      

LOAD DATA = Ładuj Dane

Operacja:   R ← A
Mnemonik:   LD
Argumenty:   R,A
 
1 1 1 0 1 1 0 1 ED
0 1 0 0 1 1 1 1 4F
Opis:   Zawartość akumulatora zostaje załadowana do rejestru odświeżania pamięci R.
   
Cykle Takty Czas
2 9 (4,5) 2,25μs
Zmieniane znaczniki:   Żaden.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   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.